CodeMender 可以自动生成、验证和应用经过验证的漏洞的源代码补丁,并在本地沙盒中对其进行测试,以防止出现回归问题。
生成漏洞修复
使用 cm fix 为经过验证的发现结果生成经过验证的安全补丁:
cm fix FINDING_ID
运行 cm fix 时,CodeMender 会执行以下验证步骤:
- 使用云端托管的推理引擎生成补丁候选版本。
- 将补丁应用到本地沙盒中的源代码副本。
- 通过运行配置的
build.command来编译和测试代码库,以确保项目构建成功且单元测试通过。 - 重新运行经过验证的 PoC 漏洞利用代码,以确认该漏洞不再可被利用。
默认情况下,CodeMender 会提示您确认每项文件修改,然后再将其写入工作区中的磁盘。所有检查都通过后,CodeMender 会将经过验证的补丁应用到您的工作区。然后,您可以暂存更改。
修复了标志
- 提供修复上下文 (
-c/--context):提供架构限制或编码指南:cm fix FINDING_ID -c "Use the safe parameterized database helper in src/db/query.go"
- 自动批准写入操作 (
-y/--yes):在修复过程中自动批准所有文件写入操作和提示: 注意:您还可以通过在cm fix FINDING_ID -y
config.yaml中设置confirm_writes: false来全局停用交互式写入提示。 - 控制沙盒 (
--sandbox):明确为此运行启用或停用沙盒(例如,使用--sandbox=false停用):cm fix FINDING_ID --sandbox=false
- 绕过沙盒 (
--unrestricted):暂时绕过本次运行的所有沙盒保护,停用文件系统边界和操作系统级容器隔离:cm fix FINDING_ID --unrestricted
- 绕过缓存 (
--no-cache):强制 CodeMender 生成新的补丁:cm fix FINDING_ID --no-cache
检查和管理本地 VCS 差异
CodeMender 包含内置的 VCS 命令,可帮助您在提交补丁之前检查、暂存和管理补丁引入的代码更改:
查看代码库状态:查看 CodeMender 在本地工作区中修改或创建了哪些文件。
cm vcs status
检查差异:逐行查看代理生成的所有未提交代码修改的统一差异。
cm vcs diff
暂存更改:将经过验证的补丁修改添加到本地暂存环境,以便您对其进行测试和提交。
cm vcs stage
还原会话修改:舍弃 CodeMender 在当前会话期间生成的所有本地文件修改,并将您的代码库恢复到基准状态。
cm vcs reset