AutoFixの概要
多くのセキュリティプログラムが脆弱性を修正することではなく、見つけることに最適化されている一方で、 AutoFix Aikidoは、修復をAikidoプラットフォームの中核ワークフローとして扱います。AutoFixは、オープンソース依存関係、アプリケーションコード、Infrastructure as Code、コンテナ、さらにはペンテストの指摘事項に対して、具体的でレビュー可能なパッチを生成し、エンジニアがすでに使っているのと同じ経路、つまりPR、CIゲート、IDEを通じて配信します。
AutoFixは以下のユースケースで利用できます
オープンソース依存関係 (以下を含む Aikido Libraries 差し替え可能な代替品)
コンテナ (以下を含む Aikido Images CVEゼロのベースイメージ)
ペンテストの指摘事項
AIコード監査の指摘事項
AutoFixがワークフローにどのように組み込まれるか
AutoFixは、あなたがすでに作業している場所に表示されるよう設計されています:
IDE連携。 AikidoのIDEプラグインは、SAST、IaC、依存関係の問題をエディタ上に直接表示します。問題が検出されると、AutoFixは作業中のコピーに適用できるインライン差分を提示し、脆弱性が共有ブランチに届くのを防ぎます。
CIおよびPRゲート。 PRおよびリリースのゲートが有効になっている場合、Aikidoはパイプラインブランチとプルリクエストをスキャンして、新しいSASTおよびIaCの問題を検出します。新たな問題が導入された場合、AutoFixはクリック一つで適用できる修正提案を提示します。
手動および自動のPR作成。 AutoFixのPRは、AikidoのUIから手動で作成することも、選択したリポジトリと問題タイプに対して毎日生成するよう設定することもできます。AikidoではPRのメタデータを細かく調整できるため、AutoFixのPRを既存のコントリビューションガイドラインやタスク管理の手法に合わせられます。
AutoFixがカバーする範囲
オープンソース依存関係
オープンソース依存関係については、AutoFixはパッケージのアップグレードやその他の互換性のある変更によって脆弱性を取り除く変更を提案します。多くの場合、AutoFixを1回実行するだけで、個々に対処するのではなく、脆弱性の一群全体を除去できます。
デフォルトでは、AutoFixは脆弱性を修復するために必要な最小バージョンを提案します。メジャーアップグレードよりも、マイナーアップグレードやパッチアップグレードを優先します。メジャーアップグレードが提案されるのは、より低いバージョンでは問題を修正できないためです。
内部では、AutoFixは依存関係ツリーを分析して、変更を適用する最適な地点を見つけます。これは多くの場合、直接依存関係をアップグレードすることで、複数の脆弱な間接依存関係を一度に更新する形になります。
Aikido Libraries
脆弱な依存関係は、上流の修正に破壊的なメジャーバージョン変更が必要な場合や、メンテナーがまだ修正をリリースしていない場合、修復が難しいことがあります。Aikidoはこれに対して Aikido Libraries:脆弱なオープンソースパッケージを、パッケージ名とベースバージョンはそのままに、セキュリティパッチをバックポートした差し替え可能な代替品です。
Aikido Librariesのバリアントは、元のバージョンと100%互換性を保ちながらCVEを削除するよう設計されており、本格的なメジャーアップグレードが可能になるまでの長期的な解決策にも、一時的なつなぎにもなります。AutoFixは、利用可能な場合、依存関係のAutoFix概要画面にAikido Librariesへのアップグレードを直接表示します。Aikido Librariesのバリアントは、JavaScript、Java、Python、PHP、.NETで利用できます。
SASTおよびIaCの問題
アプリケーションコードについて、AutoFixはJavaScript、Java、.NET、PHP、Python、Ruby、Go、Elixir、Rust、C、Kotlin、Scala、Swiftといった幅広い言語にわたってルール固有のパッチを生成します。各SASTのAutoFixは、特定のルールと修正パターンに紐づいています。そのルールの手順は、変更を最小限に抑え、挙動を維持し、目先の症状だけでなく根本原因に対処するよう調整されています。
AutoFixはこれらのパッチにエージェント的アプローチを用います。関連するコードコンテキストを収集し、修復計画を立て、そのうえで読みやすくレビューしやすいように設計された最小限の修正を適用します。各SASTのAutoFixについて、Aikidoは信頼度レベル(高・中・低)を割り当て、生成された変更が脆弱性を修正し、かつ正しい動作を維持することをベンチマークがどれほど強く示しているかを反映します。
Infrastructure as Code(IaC)のAutoFixも同じパターンに従いますが、アプリケーションロジックではなく構成を対象にします。これらは、AWS、GCP、Azure、Kubernetes全体にわたる、公開されているリソース、弱いTLS終端、暗号化の欠如などの安全でないインフラ定義を対象とします。
コンテナとベースイメージ
コンテナのAutoFixは、イメージスキャンとDockerfileの情報を組み合わせて、具体的なベースイメージの更新とOSレベルの修正を提案します。
主なワークフローはベースイメージのアップグレードに重点を置いています。コンテナのベースイメージで脆弱性が見つかると、Aikidoはパッチ、マイナー、メジャーの複数の更新 विकल्पを提案します。各 विकल्पについて、AutoFixはどの脆弱性が修復され、どの新しい脆弱性が導入される可能性があるかを表示します。自動選択されたタグが特定のスタックに適していない場合は、設定の手間を抑えたまま、評価セットに追加のタグを加えることができます。
関連するすべてのタグをスキャンしてその脆弱性プロファイルを評価するのは簡単ではないため、コンテナのAutoFixは提案を算出するためによりコストの高い分析を実行しますが、修復と残存リスクの両方を捉えた結果を返します。Aikidoでスキャンされている限り、公開ベースイメージとプライベートレジストリの両方をサポートします。
Aikido Images
より新しいベースイメージへの移行が大きな影響を及ぼす場合、AutoFixは Aikido Images:現行サポート中およびサポート終了済みの両方のベースイメージに対して、重大度CRITICALおよびHIGHの脆弱性を修正するCVEゼロのベースイメージのレジストリです。Aikidoは新しいCVEが見つかるたびにこれらのイメージを継続的に再ビルドします。AutoFixは利用可能な場合にこれらを提案し、Dockerfile内のベースイメージをAikido Imagesバリアントに切り替えることで適用します。 docker.aikido.io.
ペンテストの検出結果
AutoFixはAikidoのAIペンテストにも組み込まれています。ペンテストで問題が検出されると、Aikidoはコード、コンテナ、クラウド構成にまたがる詳細な根本原因分析を生成します。AutoFixはこの分析を使って、観測された症状だけでなく根底にある欠陥に対処するコード修正を合成できます。
セキュリティとプライバシーに関する考慮事項
SAST、IaC、コンテナのAutoFix
SAST、IaC、またはコンテナの問題に対する修正を生成する際、Aikidoは暗号化されたチャネルを通じて、AWS BedrockでホストされるAIモデルに、必要最小限のコードスニペットのみを送信します。AikidoもAWS Bedrockも、このコードをモデルの学習やファインチューニングには使用しません。
依存関係のAutoFix
サプライチェーンの側面では、AutoFixはいくつかの構造的な強化作業を支援します:
GitHub Actionsを特定のコミットに固定すること
ベースイメージをダイジェストに固定すること
不足しているセキュリティライブラリをインストールすること
最終的にAutoFixは、膨大な量の「機械的な」セキュリティ作業(依存関係のアップグレード、小さなコード修正、ベースイメージの更新)を担い、人間の労力をアーキテクチャや曖昧なトレードオフに集中させることを目的としています。デフォルト設定は、変更を安全で理解しやすいものに保ちながら、リスクを低減するよう設計されています。
最終更新
役に立ちましたか?