管理会话和导出报告

CodeMender 会将每次扫描、验证和补救尝试记录为由本地 SQLite 数据库 (state.db) 支持的有状态会话。您可以检查有效会话、恢复暂停的任务,以及导出详细的发现结果报告。

会话管理

CodeMender CLI 会在本地维护有状态的执行会话,以便您跟踪正在执行的任务、恢复中断的工作流程并导出安全报告。

列出有效会话和过往会话

运行以下命令可列出所有会话、会话状态(RUNNINGWAITING_FOR_TOOLCOMPLETEDFAILEDCANCELLED)和目标路径:

cm session list

恢复中断的会话

如果因网络中断或步骤失败而导致会话暂停,请从最新的检查点阶段恢复会话:

cm session resume SESSION_ID

取消正在进行的会话

如需终止有效会话并停止后端代理计算执行,请执行以下操作:

cm session cancel SESSION_ID

查看报告和导出补丁

使用 cm report 显示会话发现、验证状态和补丁详细信息。

输出格式

终端表格(默认)

发现结果的总结列表。

cm report

HTML 报告

生成格式化的 HTML 报告。使用 --open(或 -o)可在默认浏览器中自动启动该应用。

cm report --format html --open

Markdown

生成 GitHub Flavored Markdown 报告。

cm report --format md

JSON

以原始 JSON 格式导出所有会话发现结果的详细信息。

cm report --format json

SARIF

以标准 SARIF 格式 (v2.1.0) 导出发现结果,以便与其他安全工具集成。

cm report --format sarif

过滤和排序标志

  • 显示建议的代码补丁 (--patches):在报告中包含生成的修复的完整统一差异。 bash cm report --patches
  • 按严重程度过滤 (--severity):查看与某个级别(CRITICALHIGHMEDIUMLOW)匹配的发现结果。 bash cm report --severity HIGH
  • 按状态过滤 (--status):查看与某种状态(OPENFIXEDDISMISSEDREOPENED)匹配的调查结果。 bash cm report --status OPEN
  • 按会话 (--session) 过滤:查看特定会话 ID 前缀的检测结果。
    cm report --session SESSION_ID_PREFIX
  • 显示代理工件 (--artifacts):包含代理生成的运行时工件(例如日志、漏洞利用脚本)的路径。 bash cm report --artifacts
  • 对检测结果进行排序 (--sort):按 severity(默认)或 time 对结果进行排序。 bash cm report --sort time
  • 按发现 ID 过滤:传递特定的发现 ID(或前缀)作为位置实参,以查看单个发现的详细信息。
    cm report FINDING_ID_PREFIX

漏洞发现结果状态

CodeMender 会跟踪以下漏洞状态的发现结果:

  • OPEN
    • 含义:在扫描期间(或从第三方工具导入)已成功检测到该漏洞,但尚未验证、修补或标记为不活跃。
    • 处理方式:这是任何新发现的安全缺陷的初始状态。处于 OPEN 状态的漏洞会主动排队等待验证 (cm verify) 或修补 (cm fix)。
  • FIXED
    • 含义:CodeMender 已针对漏洞生成补丁,将差异应用于本地代码库,并成功编译和执行验证测试,以证明漏洞利用不再成功。
    • 处理方式:确认补丁可解决问题且不会破坏现有代码逻辑后,CodeMender 会将发现的问题转换为 FIXED。除非未来的扫描检测到回归,否则它将保持此状态。
  • DISMISSED
    • 含义:相应漏洞被指定为不活跃,原因可能是该漏洞被确定为假正例或已修复,也可能是发现结果的置信度不足,无法确认其是否可被利用(包括是否与您在初始配置期间提供的项目威胁模型相冲突)。
    • 处理方式:将某项标记为 DISMISSED 会使系统在日后不再发出相关提醒,并使用 cm report --status OPEN 从有效的 CLI 输出中排除相应发现结果。对已关闭的发现重新运行 cm verify 会重新检查或恢复已关闭的项目。
  • REOPENED
    • 含义:之前标记为 FIXEDDISMISSED 的漏洞在后续代码库扫描中被重新检测到。
    • 处理方式:此状态表示出现回归(例如,错误的 Git 合并导致补丁被还原)或缓解策略失败。它会标记问题以供立即重新评估,并要求开发者检查修补流程。

漏洞严重级别

CodeMender 会将发现结果归类为以下严重程度级别:

  • CRITICAL
    • 含义:此漏洞会对您的应用或底层基础架构构成严重风险,可能会导致整个系统被入侵。
    • 归类为“严重”的原因:它达到高后果影响阈值(例如远程代码执行或根级写入),可从不受信任的边界直接访问,无需任何前提条件,并且有高可信度的污点流分析或在 CodeMender 的沙盒中执行的经过验证的概念验证 (PoC) 作为后盾。
  • HIGH
    • 含义:此漏洞表示严重的安全缺陷,可能会导致未经授权的系统控制、提升权限或严重的数据暴露,但需要满足特定条件才能执行。
    • 归类为“高”的原因:虽然利用漏洞的影响很大(例如,任意数据库读取或管理劫持),但可利用性略有受限。它可能要求攻击者拥有标准用户身份验证、依赖于特定的系统配置,或者需要高度精确的一系列操作。
  • MEDIUM
    • 含义:该漏洞的风险中等,通常会暴露受限数据或导致局部中断,但对宿主系统的风险较低。
    • 归类为“中”的原因:漏洞利用受可达性或复杂性的严重限制。它通常需要主动的用户互动(例如点击恶意链接)、深层权限或复杂条件才能绕过防御层,并且最终影响范围有限。
  • LOW
    • 含义:此发现结果表示存在轻微安全风险或缺乏纵深防御的总体卫生状况,本身不会构成直接威胁。
    • 归类为“低”的原因:该漏洞的利用难度极低或影响极小。攻击者通常会利用此发现结果进行侦察或配置指纹识别,而不是直接入侵,并且此发现结果无法用于执行任意代码或泄露敏感的应用数据。

Workspace 维护

如需重置本地状态跟踪文件并清理临时执行缓存,请运行以下命令:

cm clean