日本語

AutoTriage と AutoFix で依存関係の問題を修正する

このチュートリアルでは、Aikido を設定してコードベースの脆弱な依存関係をスキャンし、誤検知を自動的にトリアージし、依存関係ファイルにワンクリック修正を適用する方法を紹介します。

前提条件

必要なもの:

サンプルリポジトリをAikidoに接続する

このチュートリアルでは、という公開リポジトリを使用します Damn Vulnerable Python Web App、人気の Damn Vulnerable Web Application の派生版で、

まず、 フォーク その DVPWA リポジトリをあなたのGitHub名前空間にフォークして、作業用の個人コピーを作成します。次にAikidoのワークスペースにログインし、次へ移動します リポジトリ > リポジトリを管理を見つけます。 リポジトリを追加。求められたら、GitHubにリポジトリを選択する権限を付与し、フォークしたDVPWAリポジトリを選択します。

Aikidoにリダイレクトされ、スキャンするリポジトリを尋ねられたら、DVPWAリポジトリを選択します。次にクリックします 次へ、詳細。その後、ワークスペースのフィードに移動します。

初期の検出結果と誤検知を分析する

フィードには、リポジトリに対するスキャン結果の要約が表示されます。デフォルトのフィルターが次であることに注意してください Aikido refined 検出結果。フィルター選択にカーソルを合わせると、Aikidoが誤検知をどのように減らしたかを示すファネルチャートが表示されます。これは意図的に非常に悪用しやすい脆弱性を含むデモアプリなので、トリアージ後もその多くは残ります。ただし、Aikidoは通常のコードベースでは、誤検知ノイズを90%以上削減することがよくあります。

右上隅で、次の表示のタイルを選択します 1件自動的に無視。すると次へ移動します 無視済み フィードのセクション。

問題名(pyyaml)、種類(Pythonパッケージ)、深刻度(Critical)、および無視する理由に注目してください。これはかなり古いパッケージに対する重大な脆弱性ですが、Aikidoはその関数がコードベースのどこでも使われていない(宣言されているだけ)と示唆しています。

問題をクリックして、詳細を表示するドロワーを開きます。宣言されているパッケージのバージョン3.13は、サブ問題としてマークされた2件の重大なCVEの影響を受けます。

公式の修正はバージョン5.4へのアップグレードですが、Aikidoはこの問題を安全に無視できるとマークしています。次をクリックします 影響を受ける関数は使用されていません サブ問題の一つの下にあるダウングレードメッセージ。これにより、Aikidoが 到達可能性分析 を実行し、そのパッケージがコード内のどこでも使われていないと判断したことが確認できます。

到達可能性は、Aikidoがセキュリティ問題の関連性と影響を評価するうえで中核となるものです。 詳しく読む Aikidoの到達可能性エンジンについて。

問題の詳細に戻り、次をクリックします 到達可能性分析を表示。フローチャートは、影響を受けるバージョンの pyyaml, がrequirements.txtで宣言されているにもかかわらず、コード内のどこでも使われておらず、それに依存する関数もありません。

反例として、Aikido refinedのメインの問題フィードに戻ります。重大な脆弱性を持つ aiohttp パッケージをクリックします。問題の詳細には多数のCVEが表示されます。CVE-2024-23334については、次をクリックします 到達可能性分析を表示。ここでは、aiohttpに依存する2つの異なるパッケージが、コードベース内の2つの異なるファイルで使用されていることがわかります。

問題の詳細に戻り、次をクリックします 優先度を上げた CVE-2024-23334のメッセージ。Aikidoは深刻度が引き上げられた理由を2つ示しています。(1) 悪用コードがGitHubに存在するため見つけやすいこと、(2) この脆弱性が実際に世界で悪用されていることです。

AutoFixを使ってセキュリティ問題を解決する

Aikido AutoFixは、最先端のLLMを活用して、セキュリティ問題に対するワンクリック修正をインラインまたはプルリクエスト経由で提供するエージェントです。 詳細を見る AutoFixについて。

aiohttpの問題の詳細ドロワーのままで、次の横の どう修正しますか?に戻り、】【t_f3941c4b":"デバイスを接続","t_5d4f039e":"管理対象デバイスでインストールコマンドを実行する","t_831d390e":"Workspace ONE UEM コンソールで、次の場所に移動します:","t_8edbd69c":"リソース","t_72eed93f":"→","t_ba9a6e6d":"スクリプト","t_d113c2a0":"を選択し、","t_96cd98c8":"Windows","t_249d2587":"をドロップダウンから選択します。","t_43b01c7b":"","t_36c80f14":"一般","t_f6ef8739":"タブで、スクリプトに名前を付けます(例:\"Aikido Device Protection Install\")。","t_c35a5a82":"詳細","t_0acd71e4":"タブで、次を設定します:","t_be245649":"言語","t_1ae764eb":"PowerShell","t_7640c765":"実行コンテキストと権限","t_4a0c02ed":"システムコンテキスト","t_ad9531b5":"Aikido ダッシュボードからコピーした PowerShell インストールコマンドを、スクリプト本文に貼り付けます。","t_b083cb05":"割り当て","t_2f2f8b67":"タブで、対象の Windows スマートグループにスクリプトを割り当て、トリガーを次回のサンプル時に実行するよう設定します。","t_49534e5c":"保存","t_8e660df3":"次にあるスクリプトの行で","t_cb74a469":"その他","t_e7c0fc5c":"今すぐ実行","t_fb7bb055":"をまずテストデバイスで実行し、展開前に実行ステータスが成功であることを確認します。","t_2876b474":"スクリプトにはデバイス上の Intelligent Hub が必要です。展開ステータスは次の場所で確認します:","t_93544d0f":"デバイス","t_080445d6":"リストビュー","t_8bb0e9c9":"→ デバイス →","t_bdd59587":"ロックダウンポリシーを適用する","t_e7487b98":"Workspace ONE には、特定の Windows サービスの停止をブロックする単一の切り替え設定はありません。以下の 2 つの制御を組み合わせて、エージェントの改ざん耐性を高めます。","t_0fcb4797":"Workspace ONE プロファイルを 2 つ別々に作成します。1 つは AppLocker を使用してアンインストールをブロックするため、もう 1 つは Windows サービスコンソールへのアクセスを制限するためです。","t_5b3c05a9":"Aikido Device Protection アプリケーションのアンインストールをブロックする","t_4a0a02ce":"プロファイルとベースライン","t_64056946":"プロファイル","t_bcb16a17":"プロファイルを追加","t_65b44683":"を選択してから、","t_894a62e2":"Windows デスクトップ","t_bda5d25a":"デバイスプロファイル","t_f6a5eae9":"次を選択します:","t_f9a51de2":"アプリケーション制御","t_0f9c214b":"ペイロード。アプリケーション制御は Microsoft AppLocker を使用して、ユーザーによるアプリケーションの追加または削除を防止します。","t_cfd7a295":"次の内容を貼り付けます:","t_bebb586b":"aikido-applocker-deny-mdm.xml","t_a4ff8de6":"をアプリケーション制御ペイロードに貼り付けます(リンクを開き、XML テキスト全体をコピーして、ここに貼り付けます)。","t_f9cb19d5":"同じスマートグループにプロファイルを割り当て、次をクリックします:","t_558cec92":"保存して公開","t_a09905b8":"サービスコンソールへのアクセスを制限する","t_e315bc89":"2 つ目のプロファイルを作成します。次の場所に移動します:","t_fc8734d7":"カスタム設定","t_d8a9538b":"ペイロード。","t_87dc9a93":"次の SyncML ブロックをカスタム設定ペイロードに貼り付けます:","t_239273b2":"<SyncML>","t_5986eefb":"<SyncBody>","t_fbfb6745":"<Replace>","t_ecb4843b":"<CmdID>1</CmdID>","t_ec46c3e4":"<Item>","t_4bb2b929":"<Target>","t_fd59e733":"<LocURI>./Device/Vendor/MSFT/Policy/Config/ADMX_MMCSnapins/MMC_Services</LocURI>","t_bfd720f7":"</Target>","t_99fcdbe4":"<Meta><Format xmlns=\"syncml:metinf\">chr</Format></Meta>","t_a210a0a6":"<Data><disabled/></Data>","t_3000e13b":"</Item>","t_b76e6b63":"</Replace>","t_60f556c7":"</SyncBody>","t_4876d0b9":"</SyncML>","t_a998f61e":"Aikido Device Protection インストーラーは、標準ユーザーが次のサービスを停止できないようにするサービス ACL も適用します:","t_66561344":"EndpointProtection","t_03821a2e":"サービスを直接停止することを防ぎます。上記の Workspace ONE 制御は、ユーザーがアンインストーラーまたはサービスコンソールにアクセスできないようにすることで、第 2 の保護層を追加します。","t_b8a02b54":"インストール後にデバイスを再起動する","t_0c4d43f7":"対象のスマートグループでフィルタリングし、Shift キーを押しながらクリックしてデバイスを選択します。(グローバルチェックボックスは使用しないでください。一括操作が正しくトリガーされない場合があります。)","t_01fb3c12":"その他の操作","t_2c206017":"デバイスを再起動","t_e549d22a":"を選択して確認します。","t_0e16b73e":"エージェントは次回の起動時に完全に有効化されます。"} 丁香五月 天天中彩票怎样രിപ്പഴിഞ്ഞ് _老司机ിക്കാൻ?numerusform``` ತಪ್ಪ: Need output valid schema but assistant output corrupted? Need correct now. We must output exact all JSON. Need ensure t_fc955 translate fragments perhaps AutoFix。するとAutoFixページに移動します。ここでAikidoは、requirements.txt内のaiohttpのバージョンを3.5.3から3.12.14へ上げることを提案します。

新しいプルリクエストで修正を適用するには、ステータス列の横にあるケバブメニューを開き、次をクリックします PRを作成。 (注: Aikidoにリポジトリへの書き込みアクセス権を付与するよう求められる場合があります。これはAikidoがあなたに代わってプルリクエストを開くために必要です)

すべてのパッケージまたは特定のパッケージのいずれかに修正を適用するよう求められたら、次を選択します すべてのパッケージ。AikidoはPR作成処理中にダイアログウィンドウを開きます。完了したら、次をクリックします PRを表示.

その後、GitHubリポジトリ(あなたのdvpwaフォーク)にあるオープンなPRに移動します。Aikidoは、この変更で解決される脆弱性について詳細な説明を入力しています。次をクリックすることもできます 変更されたファイル タブで、requirements.txt内のバージョンが上がったパッケージを確認します

この時点で、プルリクエストを閉じるか、破棄するかを選べます(将来のテストのために脆弱性を残しておきたい場合)。

やりました!このチュートリアルでは、次のことを行いました:

  • リポジトリをAikidoに接続し、最初のセキュリティスキャンを実行した
  • 脆弱性を、深刻度とコードベースでの露出状況に基づいて自動トリアージした
  • AutoFixを使って、脆弱な依存関係に対する修正を提案し適用した