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
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