コードの脆弱性を修正し、差分を管理する

CodeMender は、検証済みの脆弱性に対するソースコード パッチを自動的に生成、検証、適用し、ローカル サンドボックスでテストして回帰バグを防止できます。

脆弱性の修正を生成する

cm fix を使用して、検証済みの検出結果に対して検証済みのセキュリティ パッチを生成します。

cm fix FINDING_ID

cm fix を実行すると、CodeMender は次の検証手順を実行します。

  1. クラウドホスト型の推論エンジンを使用してパッチ候補を生成します。
  2. ローカル サンドボックス内のソースコードのコピーにパッチを適用します。
  3. 構成済みの build.command を実行してコードベースをコンパイルしてテストし、プロジェクトのビルドと単体テストが合格することを確認します。
  4. 検証済みの 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
    注: 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

  • 変更をステージングする: 検証済みのパッチ変更をローカルのステージング環境に追加して、テストと commit を行えるようにします。

    cm vcs stage

  • セッションの変更を元に戻す: 現在のセッション中に CodeMender が生成したローカル ファイルの変更をすべて破棄し、リポジトリをベースライン状態に復元します。

    cm vcs reset