CodeMender 可自動產生、驗證及套用原始碼修補程式,修復已驗證的安全漏洞,並在本機沙箱中測試,防止迴歸。
生成安全漏洞修正項目
使用 cm fix 為已驗證的發現項目產生經過驗證的安全性修補程式:
cm fix FINDING_ID
執行 cm fix 時,CodeMender 會執行下列驗證步驟:
- 使用雲端託管的推論引擎生成修補程式候選項目。
- 將修補程式套用至本機沙箱中的原始碼副本。
- 執行設定的
build.command,編譯及測試程式碼集,確保專案建構和單元測試通過。 - 重新執行已驗證的概念驗證攻擊,確認安全漏洞已無法利用。
根據預設,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
tools.confirm_writes: false和tools.confirm_commands: false,在config.yaml中停用互動式確認提示。 - 控制沙箱 (
--sandbox):明確啟用或停用本次執行的 OS 層級沙箱 (例如--sandbox=false可停用):cm fix FINDING_ID --sandbox=false
- 略過路徑邊界 (
--allow-all-paths):停用本次執行的工作區路徑邊界檢查,讓代理工具存取專案根目錄和設定的project_paths以外的路徑 (與--sandbox=false搭配使用,可存取未掛接在沙箱內的主機路徑):cm fix FINDING_ID --allow-all-paths
- 略過指令政策 (
--allow-all-commands):停用本次執行的command_policy.yaml封鎖清單強制執行:cm fix FINDING_ID --allow-all-commands
- 略過快取 (
--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