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はパッケージのアップグレードやその他の互換性のある変更によって脆弱性を除去する変更を提案します。多くの場合、1回のAutoFix実行で、脆弱性を1つずつ対処するのではなく、脆弱性のクラス全体を取り除けます。
デフォルトでは、AutoFixは脆弱性を修正するのに必要な最小バージョンを提案します。メジャーアップグレードよりもマイナーおよびパッチの更新を優先します。メジャーアップグレードが提案されるのは、それより低いバージョンでは問題を解決できないためです。
内部では、AutoFixは依存関係ツリーを分析して、変更を適用する最適な場所を見つけます。多くの場合、直接依存関係をアップグレードすることで、複数の脆弱な間接依存関係を一度に更新します。
Aikido Libraries
脆弱な依存関係は、上流の修正に破壊的なメジャーバージョン変更が必要な場合や、メンテナーがまだ修正をリリースしていない場合、修正が難しくなります。Aikidoはこれに対して Aikido Libraries:同じパッケージ名とベースバージョンを維持しながらセキュリティパッチをバックポートした、脆弱なオープンソースパッケージのドロップイン置き換え。
Aikido Librariesのバリアントは、CVEを除去しつつ元のバージョンと100%互換であるよう設計されており、長期的な解決策としても、完全なメジャーアップグレードが可能になるまでの一時的なつなぎとしても使えます。利用可能な場合、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は信頼度(High、Medium、Low)を割り当て、生成された変更が脆弱性を修正し、正しい挙動を維持することをベンチマークがどれだけ強く示しているかを反映させています。
Infrastructure as Code(IaC)のAutoFixも同じパターンに従いますが、アプリケーションロジックではなく設定を対象とします。AWS、GCP、Azure、Kubernetes全体で、公開されたリソース、弱いTLS終端、暗号化の欠如といった安全でないインフラ定義を対象にします。
コンテナとベースイメージ
コンテナのAutoFixは、イメージスキャンとDockerfileの情報を組み合わせて、具体的なベースイメージ更新とOSレベルの修正を提案します。
主なワークフローはベースイメージのアップグレードに焦点を当てています。コンテナのベースイメージで脆弱性が見つかると、Aikidoはパッチ、マイナー、メジャーの複数の更新 विकल्पを提案します。各 विकल्पについて、AutoFixはどの脆弱性が修正され、どの新しい脆弱性が導入される可能性があるかを表示します。自動選択されたタグが特定のスタックに適していない場合は、設定の手間を抑えたまま、評価対象に追加のタグを加えることができます。
関連するすべてのタグをスキャンし、その脆弱性プロファイルを評価するのは簡単ではないため、コンテナのAutoFixは提案を算出するためによりコストの高い分析を実行しますが、修正と残留リスクの両方を含む結果を返します。Aikidoでスキャンされている限り、公開ベースイメージとプライベートレジストリの両方をサポートします。
Aikido Images
より新しいベースイメージへの移行が負担になる場合、AutoFixは Aikido Images:メンテナンス中およびEOLのベースイメージの両方にまたがるCRITICALおよびHIGH重大度の脆弱性にパッチを当てた、CVEゼロのベースイメージのレジストリ。新しいCVEが見つかるたびに、Aikidoはこれらのイメージを継続的に再ビルドします。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は最終的に、依存関係のアップグレード、小さなコード修正、ベースイメージの更新といった大量の「機械的な」セキュリティ作業を担い、人間の労力をアーキテクチャや曖昧なトレードオフに集中させることを意図しています。既定値は、リスクを下げながらも変更を安全で理解しやすく保つよう設計されています。
最終更新
役に立ちましたか?