修正程式碼安全漏洞及管理差異

CodeMender 可自動產生、驗證及套用原始碼修補程式,修復已驗證的安全漏洞,並在本機沙箱中測試,防止迴歸。

生成安全漏洞修正項目

使用 cm fix 為已驗證的發現項目產生經過驗證的安全性修補程式:

cm fix FINDING_ID

執行 cm fix 時,CodeMender 會執行下列驗證步驟:

  1. 使用雲端託管的推論引擎生成修補程式候選項目。
  2. 將修補程式套用至本機沙箱中的原始碼副本。
  3. 執行設定的 build.command,編譯及測試程式碼集,確保專案建構和單元測試通過。
  4. 重新執行已驗證的概念驗證攻擊,確認安全漏洞已無法利用。

根據預設,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