Ostorlab Github Action
1. 生成新的 API 密钥
要使用 Ostorlab Github Action,第一步是生成 API 密钥。为此,只需遵循以下步骤:
前往 report.ostorlab.co
单击 Menu 按钮

单击 Integrations/API 展开

单击 API Keys

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

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

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

下一步是更新您的工作流程,添加一个 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。

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 文件,请使用以下示例:

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

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 的说明。
-
添加 GitHub App:
- 导航至 Ostorlab Security Scanner App。

- 单击 Add。

- 选择您希望在其中安装应用的帐户。

- 单击 Install for free。

-
提供必要的权限:
- 对 pull requests 的 Read & Write 访问权限。
- 存储库的 Metadata 访问权限。

-
单击 Install 完成设置。

- 导航至 Ostorlab Security Scanner App。
-
如何使用:
- 下一步是如步骤 1 和 2 中所述更新您的工作流程,添加一个 Ostorlab 步骤以触发扫描。

- 创建一个包含了使用 Ostorlab 更新的工作流程的 pull request。

扫描完成后,Ostorlab Security Scanner 将自动对您的 pull request 发表评论,准确指出漏洞是在哪里引入的,并提供修复的代码片段。

- 下一步是如步骤 1 和 2 中所述更新您的工作流程,添加一个 Ostorlab 步骤以触发扫描。
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,以及运行从扫描到已验证修复的发布流水线。