跳转至

Ostorlab Github Action

1. 生成新的 API 密钥

要使用 Ostorlab Github Action,第一步是生成 API 密钥。为此,只需遵循以下步骤:

前往 report.ostorlab.co

Menu 按钮

单击 Integrations/API 展开

Integrations/API 展开

单击 API Keys

API 密钥

点击 New API Key,为密钥命名并选择角色,然后点击 Create Key。您还可以设置过期日期。

新 API 密钥

通过横幅中的 Copy Key 复制密钥:它只会显示一次。

复制 API 密钥

2. 将 Ostorlab Github Action 添加到您的工作流程

生成 API 后,将其添加到 GitHub Secrets。确保名称与 YAML 文件中的 secrets. 匹配。您可以按照 此链接 的 Github 文档中的步骤获取更详细的说明。

GitHub Secrets

下一步是更新您的工作流程,添加一个 Ostorlab 步骤来触发扫描。以下是在 Android APK 上执行快速扫描,并在扫描风险等级高于 HIGH(即 CRITICAL)时使管道失败的示例。

on: [push]
jobs:
  ostorlab_test:
    runs-on: ubuntu-latest
    name: Test ostorlab ci actions.
    steps:
      - uses: actions/checkout@v4
      - name: build ostorlab.apk
        run: mv InsecureBankv2.apk ostorlab.apk
      - name: Launch Ostorlab scan
        id: start_scan
        uses: Ostorlab/ostorlab_actions@v2.1.0
        with:
          scan_profile: fast_scan # 指定用于扫描的扫描配置文件(请参阅扫描部分)。
          asset_type: android-apk # 要扫描的资产类型。
          target: ostorlab.apk # 要扫描的目标的路径。
          scan_title: title_scan_ci # 为您的扫描输入标题。
          ostorlab_api_key: ${{ secrets.ostorlab_api_key }} # 您的密钥 api key。
          break_on_risk_rating: HIGH # 等待扫描结果,如果扫描风险等级更高(此处为 CRITICAL),则强制该 action 失败
          max_wait_minutes: 30
      - name: Get scan id
        run: echo "Scan Created with id ${{ steps.start_scan.outputs.scan_id }} you can access the full report at https://report.ostorlab.co/scan/${{ steps.start_scan.outputs.scan_id }}/"

3. 扫描 Web 应用程序

除了移动应用程序外,Ostorlab 还支持通过 GitHub 工作流程扫描 Web 应用程序。要扫描 Web 应用程序,请按如下示例配置您的工作流程:

on: [push]
jobs:
  ostorlab_web_scan:
    runs-on: ubuntu-latest
    name: Test ostorlab web scan.
    steps:
      - uses: actions/checkout@v4
      - name: Launch Ostorlab web scan
        id: start_scan
        uses: Ostorlab/ostorlab_actions@v2.1.0
        with:
          scan_profile: full_web_scan
          asset_type: link --url
          target: https://target1.ostorlab.co --url https://target2.ostorlab.co --url https://target3.ostorlab.co
          scan_title: web_scan_ci
          ostorlab_api_key: ${{ secrets.ostorlab_api_key }}
          break_on_risk_rating: HIGH
          max_wait_minutes: 60
      - name: Get scan id
        run: echo "Scan Created with id ${{ steps.start_scan.outputs.scan_id }} you can access the full report at https://report.ostorlab.co/scan/${{ steps.start_scan.outputs.scan_id }}/"

对于 Web 应用程序扫描:

  • 使用 scan_profile: full_web_scan
  • 设置 asset_type: link --url
  • 对每个额外的 URL 使用 --url 标志列出您的目标 URL

Ostorlab Github actions 采用以下输入:

scan_profile,这是一个必需的选项,它指定扫描配置文件,可以是仅用于快速静态分析的 fast_scan,用于全静态、动态和后端覆盖的 full_scan,或者是用于 Web 应用程序扫描的 full_web_scan。

扫描配置文件

asset_type,一个必需的选项,它指定目标资产类型,例如,Android APK、iOS IPA 或 Web 应用程序的链接。

资产类型

target,一个必需的选项。这是要扫描的目标文件或 Web 应用程序的 URL。

目标文件

scan_title,一个可选选项。这是用于标识您的扫描的标题。

扫描标题

ostorlab_api_key,一个必需选项。您可以从 ostorlab 仪表板中获取它,在 Integrations/API 中,然后是 API Keys。

Ostorlab API 密钥

break_on_risk_rating,一个可选选项。设置后,操作会等待扫描完成,如果扫描风险等级严格高于提供的值,管道将失败:HIGH 仅在 CRITICAL 扫描时失败。未设置此选项时,操作不会等待结果。

中断的风险等级

max_wait_minutes,一个可选选项。这是设置 break_on_risk_rating 时的最大等待时间(分钟,默认值:20)。如果等待结束时扫描仍未完成,该步骤将因超时错误而失败。

最大等待分钟数

extra,一个可选选项。这是传递给 Ostorlab CLI 的额外参数。常见的用例是传递扫描测试凭据。

额外参数

您可以提供您的 SBOM 或 Lock 文件以增强扫描分析,要做到这一点,请使用 extra 输入来传递 SBOM,例如要添加 package lock dot json 文件,请使用以下示例:

SBOM 示例

在这里您可以看到受支持的文件的列表:

受支持的文件

Ostorlab 支持执行具有简单登录密码的身份验证测试,或使用名称或标签标识并传递值的自定义输入执行身份验证测试。为了传递测试凭据,由于 Github YAML Action 不支持传递复杂对象,因此您可以使用 extra 输入传递测试凭据。例如,要添加登录和密码以及具有自定义名称和值的自定义凭据,请添加以下输入:

测试凭据

至于 action 的输出,可以使用以下语法访问 scan_id:${{ steps.STEP_ID.outputs.scan_id }}。

4. 使用 Ostorlab Security Scanner GitHub App 直接在您的 PR 中提供可操作的见解

Ostorlab Security Scanner GitHub App 应与步骤 1 和 2 中说明的 Ostorlab Github Actions 工作流程结合使用。

Ostorlab Security Scanner GitHub App 旨在通过直接在 Pull Requests 中提供可操作的见解来帮助开发人员提高其代码安全性。 它将安全性集成到开发工作流程中,主要目标是准确地找出引入漏洞的代码片段, 提供可操作的见解以及您可以自动提交的代码建议。 本文档提供了有关如何设置和使用该 App 的说明。

  1. 添加 GitHub App:

    1. 导航至 Ostorlab Security Scanner App。
      Ostorlab Security Scanner App
    2. 单击 Add。
      添加 App
    3. 选择您希望在其中安装应用的帐户。
      选择帐户
    4. 单击 Install for free。
      免费安装
    5. 提供必要的权限:

      • 对 pull requests 的 Read & Write 访问权限。
      • 存储库的 Metadata 访问权限。

      权限

    6. 单击 Install 完成设置。
      完成设置

  2. 如何使用:

    1. 下一步是如步骤 1 和 2 中所述更新您的工作流程,添加一个 Ostorlab 步骤以触发扫描。
      更新工作流程
    2. 创建一个包含了使用 Ostorlab 更新的工作流程的 pull request。
      创建 Pull Request
      扫描完成后,Ostorlab Security Scanner 将自动对您的 pull request 发表评论,准确指出漏洞是在哪里引入的,并提供修复的代码片段。
      PR 审查 扫描结果

5. 从扫描到已验证的修复

为防止有风险的变更进入发布版本,请分五个阶段运行扫描:

阶段 运行内容
1. 扫描每个拉取请求 该 Action 会在每个拉取请求上运行:移动构建运行 Fast Scan,Web 应用程序运行 Full Web Scan。
2. 根据风险设置门禁 当扫描风险评级严格高于 break_on_risk_rating 时,构建失败。
3. 将工单发送到 Jira 或 Linear 发现的问题会成为 Ostorlab 工单,并同步到 Jira 或 Linear。
4. 验证修复 之后的扫描会将已修复的工单标记为 FIXED VERIFIED 或重新打开。Single Vulnerability Assessment 会重新测试单个发现的问题。
5. 发布前的深度评估 Deep Agentic Scan 在发布前运行,而不是在每个拉取请求中运行。

扫描每个拉取请求并根据风险设置门禁

在拉取请求上运行工作流:设置 on: pull_request,而不是 on: [push]。当扫描风险评级严格高于您设置的值时,break_on_risk_rating 会使构建失败,max_wait_minutes 限制等待时间(默认 20 分钟)。要选择阈值,请参阅风险评级了解每个评级的含义。

将工单发送到 Jira 或 Linear

Ostorlab 会为每个新检测到的安全问题自动创建工单,并将同一漏洞的后续出现汇总到同一工单中。要将这些工单发送到团队的问题跟踪工具,请在 Jira 或 Linear 集成中开启自动创建问题。两者都需要企业订阅。在任一集成中,选择要同步的工单风险评级:只有具有这些评级的工单才会进入 Jira 或 Linear。

验证修复

当开发人员发布修复后,将工单标记为已修复。之后运行相同测试的扫描会检查该修复:如果不再出现该漏洞,工单会自动标记为 FIXED VERIFIED;否则,同一工单会被重新打开。标记为例外或误报的工单会保持原状。请参阅工单生命周期。

要在不运行完整重新扫描的情况下重新测试单个发现的问题,请直接从报告的工单运行 Single Vulnerability Assessment。它通常需要 2 到 10 分钟。

持续检查与深度评估

持续检查在每个拉取请求上或按计划运行,几分钟内完成。深度评估在发布前运行,耗时 1 到 3 小时,并通过概念验证来验证攻击链和业务逻辑。请参阅扫描类型对比。

扫描 何时运行 典型时长 覆盖内容 AI 提供商
Fast Scan(持续检查) 每个拉取请求,在 CI 中 1 到 5 分钟 静态分析 无
Full Scan(持续检查) 按计划 15 到 45 分钟 静态、动态和后端测试 无
Deep Agentic Scan(深度评估) 发布前 1 到 3 小时 AI 智能体渗透测试:攻击链、业务逻辑、经概念验证确认的发现 Cyber Models 或自带密钥(BYOK)
  • 计划的 Full Scan: 创建带有 CRON 计划的监控规则,或在资产变更时进行扫描的 CONTINUOUS 规则,并选择 Full Scan。请参阅创建监控规则。
  • 发布前的 Deep Agentic Scan: 在平台中从 Scanning > New Scan 启动。请参阅 Mobile Deep Agentic Scan 或 Web Deep Agentic Scan。它需要一个 AI 提供商:Cyber Models 或您自己的密钥(BYOK)。其发现由 AI 智能体生成,没有人工验证。

本指南概述了如何将 Ostorlab GitHub Action 添加到工作流、扫描 Web 应用程序、使用 Ostorlab Security Scanner GitHub App,以及运行从扫描到已验证修复的发布流水线。