CodeMender は、ローカル SQLite データベース(state.db)にバックアップされたステートフル セッションとして、すべてのスキャン、検証、修復の試行を追跡します。アクティブなセッションを検査し、一時停止したタスクを再開して、詳細な検出結果レポートをエクスポートできます。
セッション管理
CodeMender CLI は、ステートフル実行セッションをローカルで維持します。これにより、アクティブなタスクの追跡、中断されたワークフローの再開、セキュリティ レポートのエクスポートが可能になります。
アクティブなセッションと過去のセッションを一覧表示する
次のコマンドを実行して、すべてのセッション、ステータス(RUNNING、WAITING_FOR_TOOL、COMPLETED、FAILED、CANCELLED)、ターゲット パスを一覧表示します。
cm session list
中断されたセッションを再開する
ネットワークの中断やステップの失敗によりセッションが一時停止した場合は、最新のチェックポイント ステージから再開します。
cm session resume SESSION_ID
実行中のセッションをキャンセルする
アクティブなセッションを終了し、バックエンド エージェントのコンピューティング実行を停止するには:
cm session cancel SESSION_ID
レポートを表示してパッチをエクスポートする
cm report を使用して、セッションの検出結果、検証ステータス、パッチの詳細を表示します。
出力形式
ターミナル テーブル(デフォルト)
検出結果の概要リスト。
cm reportHTML レポート
フォーマットされた HTML レポートを生成します。--open(または -o)を使用して、デフォルトのブラウザで自動的に起動します。
cm report --format html --open
マークダウン
GitHub 風の Markdown レポートを生成します。
cm report --format md
JSON
すべてのセッションの検出結果の詳細を未加工の JSON としてエクスポートします。
cm report --format json
SARIF
他のセキュリティ ツールと統合するために、標準の SARIF 形式(v2.1.0)で検出結果をエクスポートします。
cm report --format sarif
フィルタリングと並べ替えのフラグ
- 提案されたコードパッチを表示する(
--patches): 生成された修正の完全な統合差分をレポートに含めます。bash cm report --patches - 重大度でフィルタする(
--severity): レベル(CRITICAL、HIGH、MEDIUM、LOW)に一致する検出結果を表示します。bash cm report --severity HIGH - ステータスでフィルタする(
--status): 状態(OPEN、FIXED、DISMISSED、REOPENED)に一致する検出結果を表示します。bash cm report --status OPEN - セッションでフィルタする(
--session): 特定のセッション ID プレフィックスの検出結果を表示します。cm report --session SESSION_ID_PREFIX
- エージェント アーティファクトを表示する(
--artifacts): エージェントが生成した実行アーティファクト(ログ、エクスプロイト スクリプトなど)へのパスを含めます。bash cm report --artifacts - 検出結果を並べ替える(
--sort): 結果をseverity(デフォルト)またはtimeで並べ替えます。bash cm report --sort time - 検出結果 ID でフィルタする: 特定の検出結果 ID(またはプレフィックス)を位置引数として渡して、単一の検出結果の詳細を表示します。
cm report FINDING_ID_PREFIX
脆弱性の検出結果の状態
CodeMender は、次の脆弱性の状態にわたって検出結果を追跡します。
OPEN- 意味: スキャン中に脆弱性が正常に検出された(またはサードパーティ ツールからインポートされた)が、まだ検証、パッチ適用、非アクティブとしてマークされていない。
- 処理方法: これは、新しく検出されたセキュリティ上の欠陥の初期状態です。
OPEN状態の脆弱性は、検証(cm verify)またはパッチ適用(cm fix)のためにアクティブにキューに登録されます。
FIXED- 意味: CodeMender は脆弱性のパッチを生成し、ローカル コードベースに差分を適用し、検証テストを正常にコンパイルして実行し、エクスプロイトが成功しなくなったことを証明しました。
- 処理方法: パッチが既存のコードロジックを中断することなく問題を解決することが確認されると、CodeMender は検出結果を
FIXEDに移行します。今後のスキャンで回帰が検出されない限り、この状態のままになります。
DISMISSED- 意味: 脆弱性が誤検出またはすでに修正されていると判断されたため、または検出結果の信頼性が低く、悪用可能であることを確認できないため(オンボーディング時にプロジェクトの脅威モデルが提供された場合は、それに対して)、脆弱性が非アクティブとして指定されています。
- 処理方法: アイテムを
DISMISSEDとしてマークすると、今後の アラートがミュートされ、アクティブな CLI 出力から検出結果が除外されます。cm report --status OPEN無視された検出結果に対してcm verifyを再実行すると、無視されたアイテムが再検証または復元されます。
REOPENED- 意味: 以前に
FIXEDまたはDISMISSEDとしてマークされた脆弱性が、後続のコードベース スキャンで再検出されました。 - 処理方法: この状態は、回帰(パッチを元に戻す不正な Git マージなど)または軽減策の失敗を示します。問題にフラグを設定して直ちに再評価し、デベロッパーがパッチ適用プロセスを確認する必要があります。
- 意味: 以前に
脆弱性の重大度
CodeMender は、検出結果を次の重大度に分類します。
CRITICAL- 意味: 脆弱性は、アプリケーションまたは基盤となるインフラストラクチャに直ちに重大なリスクをもたらし、システム全体の侵害につながる可能性があります。
- 重大と分類される理由: 高い結果の影響の しきい値(リモートコード実行やルートレベルの書き込みなど)を満たし、 前提条件なしで信頼できない境界から直接アクセスでき、 CodeMender のサンドボックス内で実行される信頼性の高い汚染フロー分析または検証済みの 概念実証(PoC)によってバックアップされています。
HIGH- 意味: 脆弱性は、不正なシステム制御、権限昇格、または重大なデータ漏洩につながる可能性のある重大なセキュリティ上の欠陥を表しますが、実行するには特定の条件が必要です。
- 重大と分類される理由: エクスプロイトの影響は 大きいですが(任意のデータベース読み取りや管理者のハイジャックなど)、 エクスプロイトの可能性はわずかに制限されています。攻撃者が標準のユーザー認証を行う必要がある場合や、特定のシステム構成に依存する場合、または非常に正確な一連のアクションが必要になる場合があります。
MEDIUM- 意味: 脆弱性は中程度のリスクをもたらし、通常は制限付きデータを公開したり、ローカルでの中断を許可したりしますが、ホスト システムに対するリスクは低くなります。
- 中程度と分類される理由: エクスプロイトは、 到達可能性または複雑さによって大きく制限されます。通常、防御レイヤをバイパスするには、アクティブなユーザー操作(悪意のあるリンクをクリックするなど)、深い権限、または複雑な条件が必要となり、最終的な影響範囲は制限されます。
LOW- 意味: 検出結果は、軽微なセキュリティ リスク、またはそれ自体では直ちに脅威とならない、多層防御の一般的な欠如を表します。
- 低と分類される理由: エクスプロイトの可能性が非常に低い か、影響が最小限です。通常、この検出結果は、直接的な侵害ではなく、偵察や構成のフィンガープリントに使用されます。また、任意のコードの実行や機密性の高いアプリケーション データの引き出しには使用できません。
ワークスペースのメンテナンス
ローカル状態追跡ファイルをリセットして、一時的な実行キャッシュをクリーンアップするには、次を実行します。
cm clean