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): この実行ですべてのサンドボックス保護を一時的にバイパスし、ファイル システムの境界と OS レベルのコンテナ分離を無効にします。cm fix FINDING_ID --unrestricted
- キャッシュをバイパス(
--no-cache): CodeMender に新しいパッチを強制的に生成させます。cm fix FINDING_ID --no-cache
ローカル VCS の差分を検査して管理する
CodeMender には、パッチによって導入されたコード変更をコミットする前に検査、ステージング、管理するための組み込みの VCS コマンドが含まれています。
リポジトリのステータスを表示する: CodeMender がローカル ワークスペースで変更または作成したファイルを確認します。
cm vcs status
差分を検査する: エージェントが生成した、未コミットのコード変更の統合差分を 1 行ずつ確認します。
cm vcs diff
変更をステージングする: 検証済みのパッチ変更をローカルのステージング環境に追加して、テストとコミットを行えるようにします。
cm vcs stage
セッションの変更を元に戻す: 現在のセッション中に CodeMender が生成したローカル ファイルの変更をすべて破棄し、リポジトリをベースライン状態に戻します。
cm vcs reset