前提条件
前提条件
要运行一次扫描:
- 你的组织必须有权访问你要扫描的代码仓库。
- 你需要已获授权使用 Devin 会话。
- 你需要具备 使用代码扫描 权限。
- 要配置自动扫描计划,你还需要具备 管理代码扫描 以及管理 Automations 的权限。
进行首次扫描
- 在左侧边栏中打开 安全,然后点击 Start scan。
- 在 Single repo 下,选择一个要扫描的代码仓库。
- 可选择一个 扫描 Profile 和一个扫描强度。若不填写 Profile,则使用 Security Swarm 内置的安全扫描。
- 确保已启用 交互模式。
- 点击 Run Scan。
- 当系统建议的威胁模型准备就绪后,先审阅,再点击 没问题,开始扫描 或提出反馈。
- 随着发现项陆续出现,查看相关证据,并处理需要关注的发现项。
在 Security Swarm 中创建扫描 Profile、运行交互式扫描并审阅发现项
审查并处理发现项
打开某次扫描即可查看其发现项。页面左侧显示按严重程度分组的发现项列表,右侧显示当前选中发现项的详细信息。 状态选项卡会显示实时数量:- 打开 — 需要关注。
- 已审查 — 已完成审查,不再需要处理。
- 已忽略 — 被判定为误报或重复项。
发现项包含哪些内容
一个发现项包括:- 严重性、状态、可利用性、置信度和类别。
- 受影响的文件路径和代码片段。
- 问题的描述以及修复建议。
- 沙盒验证结果、支持性证据和验证工件。
- 关联的**拉取请求 (PR) **及其打开、已合并或已关闭状态。
- 代码所有者和备注 (如有) 。
对发现项采取操作
- 分配给 Devin
- 反馈
- 调整
- 状态菜单
启动一个 Devin 会话来修复该问题并创建拉取请求。该会话及其生成的拉取请求都会在该发现项中跟踪。
扫描 Profile
扫描 Profile 用于控制扫描作用域,并为扫描的各个阶段提供指导。每次扫描只能使用一个 Profile。若要针对多个攻击者画像或威胁类别评估同一个代码仓库,请分别使用不同的 Profile 运行扫描。 可在 Security 页面中的 Profiles 选项卡中管理 Profile。创建 Profile
你可以通过两种方式创建 Profile:- 使用 Devin 生成 — 用自然语言描述应用程序、威胁、作用域、排除项和严重程度标准。Devin 会为你起草 Profile。
- 手动创建 — 你自己填写 Profile 的每个输入项。
基本信息
- Profile 名称 — 应按应用程序暴露面或威胁类别命名,而不是按执行扫描的团队命名。示例:
Multi-tenant API authorization。 - 描述 — 概述该 Profile 的作用域和安全目标。示例:
查找公共 API 中的身份验证、授权和租户隔离漏洞。
威胁模型
请描述攻击者、敏感资产、信任边界、重要入口点,以及任何明确不在作用域内的内容。这些说明将决定 Devin 在调查开始前生成的规则。调查指南
说明 Devin 应如何调查潜在问题,以及需要收集哪些证据。要求它结合现有缓解措施进行评估,并区分可被利用的漏洞与理论上的担忧。分流指南
定义 Devin 应如何对发现项去重并确定优先级。请包含你的严重程度判定标准,以便结果符合你的组织的标准。沙盒验证
当 Devin 可以安全地构建并实际操作应用程序时,请启用沙盒验证。请说明如何启动应用程序、创建测试数据、完成身份验证,并演示预期的安全边界。 使用 Validate severities 选择 Devin 在沙盒中验证的最低严重级别。只有达到或高于该级别的发现项才会启动验证会话;默认情况下,会验证 critical、high 和 medium 级别的发现项。将阈值提高到 critical 或 high,可将验证资源集中在最重要的发现项上。报告
当你需要在扫描后生成摘要报告时,请启用报告。请指定目标受众以及报告应重点突出的信息。修复指引
当你将某个发现项分配给 Devin 处理时,请明确 Devin 需要遵循的约束条件。包括测试要求、兼容性要求以及需要避免的做法。Advanced 输入
打开 Advanced 以控制文件作用域和调查批次:- Include globs — 将扫描范围限制为匹配的文件。例如,
apps/api/**和packages/auth/**。 - Exclude globs — 从所选作用域中排除无关文件。例如,
**/generated/**、**/vendor/**和**/fixtures/**。 - Batch size — 控制每个调查批次中包含多少个带有信号的文件。除非你是有意调整扫描行为,否则请保留默认值。可接受的范围是 1–500;默认值为 5。
Ingestion Profile
Profile 的 mode 在创建时即固定。Discover Profile (默认) 会分析你的代码以发现新的 issue,并使用上文的指导字段。Ingest Profile 则导入你已通过其他 scanner 或报告获得的发现项,并将作用域和 threat model 输入替换为以下两个指导字段:- Ingestion source —— 现有发现项存放在何处,以及 Devin 应如何获取它们。例如,通过 REST API 从 GitHub code scanning 获取处于 open 状态的告警,或读取提交在
reports/semgrep.json的 Semgrep 报告。引用凭据时请使用 organization secret 名称,不要直接粘贴令牌。 - Post-ingestion triage —— Devin 应如何对导入的发现项进行分流:哪些应关闭、哪些需重新排定优先级、哪些视为重复项。例如,关闭测试固件中的发现项,并将 rule ID 与文件相同的发现项视为重复项。
组织和企业 Profile
新的 Profile 具有组织级作用域。Enterprise admins 之后可以将 Profile 的可见性更改为 Enterprise,使其在整个企业内可用。 企业级 Profile 只能由 Enterprise admins 编辑或归档。其他有权访问 Security 的 users 可以查看和使用这些 Profile,但无法修改。交互模式
启用 交互模式 后,Devin 会先构建一个建议的威胁模型,并在开始调查前暂停。扫描页面会显示建议的规则,并让你可以:- 没问题,开始扫描 — 接受该威胁模型并开始调查。
- 针对威胁模型提供反馈 — 说明需要添加、删除或强调的内容,然后查看修订后的模型。
配置沙盒验证
只有在所选 Profile 已启用沙盒验证且包含验证指引时,才会执行沙盒验证。请向 Devin 提供足够的信息,以便它能在其沙盒中构建、运行、填充种子数据并完成应用程序身份验证。 如果代码仓库具有声明式配置,Devin 可以复用其中的构建和安装配置。否则,请将所需的设置命令添加到 Profile 的验证指引中。大规模扫描
选择扫描模式
New Scan 面板提供四种扫描模式:
交互模式适用于单仓库和多仓库安全扫描。若你的组织尚未运行过扫描,单仓库扫描会默认启用该模式。
扫描强度
每次扫描都会以两种强度级别之一运行,可在启动扫描时通过 Scan effort 选择:- Normal (默认) ——扫描速度更快,调查批次更大。
- Deep——在代码库中对每个发现项进行更深入的追溯,力求最大程度的彻底性,但成本更高、耗时更长。
批量扫描组织
在“新建扫描”面板中使用 批量扫描,即可为每个匹配的代码仓库排队一次独立扫描:- 可选择输入 代码仓库名称筛选条件。
- 可选择扫描 Profile。
- 保持 跳过已扫描的代码仓库 处于启用状态,以排除已用所选 Profile 扫描过的代码仓库。
- 点击 预览。
- 查看匹配的代码仓库,取消选择你不想扫描的代码仓库,然后确认。
导入已有发现项
使用 Ingest findings 将其他扫描器的结果引入 Security Swarm,即可与 Devin 自己的发现项一起进行分流、验证和修复:- 选择这些发现项所属的一个或多个代码仓库。
- 选择一个导入 Profile。Profile 会告诉 Devin 发现项存放在何处,以及导入后如何对其分流。
- 可选:附加最多 10 份报告或导出文件 (例如 SARIF、CSV 或 PDF 文件) ,供 Devin 从中读取发现项。如果该 Profile 的导入来源已指向某个 API 或代码仓库中的文件,则无需添加附件。
- 可选:启用交互模式。导入完成后 Devin 会暂停,以便你查看导入的内容 (包括可能的重复项) ,并在其继续之前提出更正要求。
- 选择扫描力度并点击 Run Scan。
上传附件通过附件 API 完成,因此从上传的文件导入还需要 Use Devin sessions 权限。导入扫描也可以通过 API 启动。
自动扫描
自动扫描会定期扫描自上次完成扫描以来新增的提交。你可以按以下方式进行配置:- 在启动单个代码仓库扫描时,选择按日、按周、按月或自定义计划。
- 对于现有扫描,可添加、编辑或禁用其计划,也可点击 Scan now 立即运行。
仅当为你的组织启用 Automations 时,自动扫描才可用。配置它需要同时具备 管理代码扫描 和管理 Automations 的权限。
自动扫描采用增量方式:每次运行只检查自上次完成扫描以来新增的提交。点击 Start scan 则默认会对代码仓库的整个作用域执行完整扫描。
扫描新提交
对于已完成的扫描,点击 扫描新提交,即可查看自上次扫描的提交以来新增的提交。自动扫描也采用相同的增量机制,因此后续扫描比反复扫描整个代码仓库作用域的成本更低。 每次完整或增量运行都会记录在该扫描的扫描历史中。从 Automations 启动扫描
Automations 提供了 Code scan agent 类型,适用于需要按计划运行或由事件触发的扫描。这种情况下,自动化会直接启动扫描,而不是用一段提示启动 Devin session。可选择以下两种操作之一:- Start code scan — 每次自动化触发时,按照配置的代码仓库、scan type、Profile 和投入程度发起一次全新扫描。
- 扫描新提交 — 以增量运行的方式扩展现有扫描,仅覆盖自上次完成运行以来新增的提交。该扫描必须已有一次完成的运行。
/scan 命令启动扫描。关于性能、测试覆盖率、无用代码等非安全类扫描,请参阅 Code Scans。
管理和监控扫描
根据扫描及其 Profile,扫描标头中可能包含:- 报告 — 下载为该扫描生成的报告。
- 用量 — 查看消耗的 ACU、会话数、扫描时长以及 PR (拉取请求) 统计信息。
- 会话 — 打开执行该扫描的主 Devin 会话。
- 扫描历史 — 查看该扫描的每一次运行。参见 扫描历史。
- 更改 Profile — 切换后续运行所使用的 Profile。参见 更改扫描的 Profile。
- 导出为 CSV — 导出扫描的发现项。
- 归档 或 取消归档 — 将扫描从默认列表中隐藏,或将其恢复到默认列表。
- 扫描新的提交 — 启动增量扫描。
扫描历史
在某个扫描上打开 Scan history,即可查看其每一次运行记录,最新的排在最前。每条运行记录会显示本次为 Full scan 还是 Incremental、运行状态、所用的 effort 和 Profile、消耗的 ACU,以及指向对应 Devin session 的链接。借助它可以确认 Auto Scan 是否按计划运行,并对比完全扫描与增量扫描的成本。更改扫描的 Profile
在已完成的扫描上点击 Change profile,即可选择其他 Profile。新的 Profile 会应用于该扫描的后续运行,包括 Auto Scan 和 Scan new commits;已完成的运行及其发现项不受影响。扫描运行期间无法更改 Profile。更改 Profile 需要 使用代码扫描 权限。安全仪表板
在组织完成首次扫描后,Security 页面会显示整个组织在最近 7、30 或 90 天内的仪表板:- 拉取请求统计 — 已创建、已合并、处于打开状态和已关闭的拉取请求,以及合并率。
- 发现项趋势 — 在所选时间段内按严重程度分组的发现项。
访问与权限
安全访问通过角色编辑器中的代码扫描权限来控制:
启动扫描、提交反馈以及将发现项分配给 Devin,还需要具备使用 Devin 会话的权限。自动扫描还要求具备管理 Automations 的权限。
默认情况下,成员不会获得代码扫描权限。所有者拥有全部权限,管理员可通过自定义角色向成员授予权限。
相同的代码扫描权限也适用于 Code Scans API (API 调用无需额外具备会话权限;但上传摄取扫描的扫描器报告需通过 attachments API,且该 API 要求具备 使用 Devin 会话 权限) 。具有 使用代码扫描 权限的服务用户或个人访问令牌可以启动扫描、启动摄取扫描和修复发现项;查看代码扫描 权限涵盖列出扫描、Profile及其指南、发现项和指标。有关端到端流程,请参阅通过 Devin API 触发代码扫描。
将 Security Swarm 与另一款扫描器进行比较
要进行有参考价值的比较,请为两款扫描器设定相同的作用域、威胁模型、严重性判定标准和验证预期。否则,配置差异可能会掩盖其底层能力的差别。 使用 Profile 定义比较标准,使用交互模式确认生成的威胁模型,并使用沙盒验证对报告出的发现采用相同的证据标准。常见问题
Security Swarm 如何减少误报?
Security Swarm 如何减少误报?
Security Swarm 会结合你的代码仓库上下文调查潜在漏洞,而不是孤立地报告存在风险的模式。Devin 会追踪相关数据流,检查验证和授权控制,并评估该问题是否会带来实际的安全影响。每条发现项都包含置信度等级和支持性证据。请先查看这些证据再采取行动,尤其是在某条发现项尚未在沙盒中得到验证时。
我应该在一条发现项中查看哪些证据?
我应该在一条发现项中查看哪些证据?
请检查受影响的代码、入口点、数据流、现有缓解措施、所述影响、置信度和可利用性。启用沙盒验证后,还应查看验证结果及其支持性工件。如果证据忽略了某项控制,或声称了缺乏依据的影响,请使用反馈补充缺失的上下文,以改进后续扫描。
沙盒验证带来了什么?
沙盒验证带来了什么?
沙盒验证会尝试通过在隔离环境中构建并运行应用程序来复现一条发现项。验证成功会提供更强的可利用性证据,而验证失败则可以识别出需要进一步审查的假设或环境限制。沙盒验证是可选的,并且需要提供足够的验证指引,以便 Devin 能够安全地构建、运行、填充种子数据并完成应用程序身份验证。
Security Swarm 如何发现跨多个文件的漏洞?
Security Swarm 如何发现跨多个文件的漏洞?
Security Swarm 会并行分析代码仓库的不同部分,并将结果整合为覆盖整个代码仓库的全局视图。这样它就能识别组件之间的关系,例如某个端点暴露了利用另一个端点所需的标识符。任何由此产生的链式发现项仍应指出相关代码路径,并说明各项条件如何共同构成实际影响。
为什么不同次扫描的结果可能会有所不同?
为什么不同次扫描的结果可能会有所不同?
Security Swarm 使用以 Agent 为核心的分析,因此不同次扫描产生的发现项或表述可能并不完全一致。聚焦的作用域、明确的威胁模型、清晰的严重性标准以及具体的调查指引,都有助于保持覆盖范围一致。请将这些要求记录在可复用的扫描 Profile中,使用交互模式审查建议的威胁模型,并在结果遗漏重要上下文时提供反馈。
扫描完成是否意味着代码仓库中没有其他漏洞?
扫描完成是否意味着代码仓库中没有其他漏洞?
任何安全扫描器都无法保证完全覆盖。结果取决于所选作用域、Profile 指引、可用的代码仓库上下文,以及发现项是否能在已配置的环境中得到验证。请针对不同的攻击者模型或威胁类别分别运行扫描,随着应用程序变化及时更新 Profile,并将 Security Swarm 与你现有的安全审查和测试实践结合使用。

