「生成AIを通じて脆弱性を明らかにする」
Revealing vulnerabilities through generative AI.
セキュリティに関連するパラメータの露出の脆弱性を検出するためのコードスキャンは、MuleSoft API開発において重要なプラクティスです。
コードスキャンには、MuleSoftのソースコードを体系的に分析して脆弱性を特定する作業が含まれます。これらの脆弱性には、パスワードやアクセスキーなどのハードコードされたセキュリティパラメータから、プロパティファイル内の平文形式でのパスワードやアクセスキーの露出までさまざまなものがあります。これらの脆弱性は、悪意のある者によってアプリケーションの機密性、整合性、可用性が脅かされる可能性があります。
脆弱性の自動検出の不足
MuleSoft Anypoint StudioやAnypointプラットフォームには、上記の脆弱性に対するガバナンスを提供する機能がありません。ガバナンスを実現するためには、コードの手動レビューが必要です。ただし、デプロイされたコードやコードリポジトリをスキャンしてこのような脆弱性を発見するためのツールは多数存在します。また、同じタスクを実行するために、任意の言語でカスタムコード/スクリプトを作成することもできます。ただし、カスタムコードを作成することは、別の複雑性と管理のレイヤーを追加することになります。
生成AIを使用してコードをレビューし、脆弱性を検出する方法
この記事では、生成AIを使用してこのような脆弱性を検出する方法を紹介します。Open AI Foundationの「gpt-3.5-turbo」モデルを使用して、上記の脆弱性を検出するためのコードスキャン機能をデモンストレーションします。ただし、このユースケースを実装するためには、任意のFoundationモデルを使用することができます。
これはPythonコードまたは他の言語で実装することができます。このPythonコードは以下のように使用することができます:
- Pythonコードを手動で実行してコードリポジトリをスキャンする。
- それをCICDビルドパイプラインに統合することができます。これにより、脆弱性が存在する場合にはスキャン結果を報告し、ビルドが失敗するようにすることができます。
- それをランバダ関数などの他のプログラムに統合することができます。これにより、定期的に実行され、Pythonコードを使用してコードリポジトリをスキャンし、脆弱性を報告することができます。
ハイレベルアーキテクチャ
アーキテクチャ
- Pythonコードを実行するための方法はいくつかあります。より適切で実用的な方法は、PythonコードをCICDビルドパイプラインに統合することです。CICDビルドパイプラインはPythonコードを実行します。
- PythonコードはMuleSoftのコードXMLファイルとプロパティファイルを読み込みます。
- PythonコードはMuleSoftのコードの内容を送信し、OpenAIのgpt-3.5-turboモデルにプロンプトを送信します。
- OpenAIモデルはハードコードされた暗号化されていない値を返します。
- Pythonコードは見つかった脆弱性のレポートを生成します。
実装の詳細
MuleSoft APIプロジェクトの構造には、セキュリティに関連するパラメータが平文で公開される可能性がある2つの主要なセクションが含まれています。src/main/muleフォルダには、プロセスフローや接続の詳細、例外処理などが含まれるすべてのXMLファイルが含まれています。MuleSoft APIプロジェクトにはカスタムJavaコードも含まれる場合がありますが、この記事ではMuleSoft APIで使用されるカスタムJavaコードは考慮していません。
src/main/resourcesフォルダには、環境プロパティファイルが含まれています。これらのファイルは、開発、品質、および本番用の.propertiesまたは.yamlファイルである場合があります。これらのファイルには、平文形式でユーザー、パスワード、ホスト、ポート、アクセスキー、secretAccesskeyなどのプロパティキー値が含まれています。
MuleSoftプロジェクトの構造に基づいて、実装は2つのステップで実現できます:
MuleSoft XMLファイルのスキャン
MuleSoft Anypoint Studioでプロセスフローが定義された実際のコード。Open AI Foundationモデルを使用してPythonコードを記述し、プロンプトを作成し、MuleSoftのXMLファイルをスキャンしてハードコードされたパラメータ値を検出することができます。例:
- Global.xml/Config.xmlファイル:このファイルにはすべてのコネクタの設定が含まれています。これはMuleSoftでの標準的な推奨事項ですが、組織で定義された標準とガイドラインによっては異なる場合があります。生成AIのFoundationモデルは、このコンテンツを使用してハードコードされた値を検出できます。
- その他のXMLファイル:これらのファイルには、カスタムコードや他のAPI呼び出し、DB呼び出し、その他のシステム呼び出しを呼び出すプロセスフローが含まれる場合があります。これには、誤ってハードコードされた接続資格情報が含まれる場合があります。生成AIのFoundationモデルは、このコンテンツを使用してハードコードされた値を検出できます。
私はMuleSoftのAPIコードのサンプルのスクリーンショットを提供しました。このコードには3つのXMLファイルがあります。1つはRest APIフローを含むapi.xmlです。Process.xmlにはJMSベースの非同期フローがあります。Global.xmlにはすべての接続設定が入っています。
api.xml
process.xml
global.xml
デモンストレーションの目的のために、global.xmlファイルを使用しました。コードスニペットにはデモンストレーション用の多くのハードコードされた値が含まれています。ハードコードされた値は赤いボックスで強調表示されています。
Pythonコード
以下のPythonコードは、上記のXMLファイルをスキャンしてハードコードされた値を見つけるためにOpen AI Foundationモデルを使用しています。
このコードが実行されると、以下の結果が得られます:
Generative AIモデルからの結果
同様に、api.xmlとprocess.xmlを提供してハードコードされた値をスキャンすることもできます。Pythonコードを修正して、すべてのXMLファイルを反復的に読み取り、すべてのファイルのシーケンスで結果を取得することもできます。
プロパティファイルのスキャン
Pythonコードを使用してAIモデルに別のプロンプトを送信し、プロパティファイルに格納された平文パスワードを検出することができます。以下のスクリーンショットでは、dev-secure.yamlファイルには暗号化された値としてclient_secretがあり、db.passwordとjms.passwordは平文で保持されています。
configファイル
Pythonコード
以下のPythonコードは、ハードコードされた値を検出するためにOpen AI Foundationモデルを使用して設定ファイルをスキャンします。
このコードが実行されると、以下の結果が得られます:
Generative AIからの結果
Generative AIの開発ライフサイクルへの影響
開発ライフサイクルには大きな影響があります。開発ライフサイクルに関連するさまざまなユースケースでGenerative AIを活用することが考えられます。
効率的で包括的な分析
GPT-3.5のようなGenerative AIモデルは、人間のようなテキストを理解し生成する能力を持っています。コードレビューに適用すると、コードスニペットを分析し、改善の提案を行い、バグや脆弱性につながる可能性のあるパターンを特定することができます。この技術により、比較的短い時間でコードの包括的な検査が可能となります。
自動問題の特定
Generative AIは、構文エラー、論理的な欠陥、セキュリティの脆弱性などの潜在的な問題の検出に役立ちます。これらのコードレビューの側面を自動化することで、開発者はより高度な設計上の決定や創造的な問題解決に時間を割くことができます。
ベストプラクティスへの遵守
コーディングパターンとコンテキストの分析により、Generative AIはコーディング標準とベストプラクティスの遵守に関する洞察を提供することができます。
学習と改善
Generative AIモデルは、大量のコード例と業界のプラクティスから「学習」することができます。この知識により、開発者に文脈に関連する推奨事項を提供することができます。その結果、開発者とAIシステムの両方が連続的な学習サイクルを通じて、コーディングの慣行や新興のトレンドに対する理解を磨くことができます。
結論
OpenAIの技術を使用して、平文で公開されるセキュリティに関連するパラメータを見つけるためのコードレビューを実施することは、価値のある効率的なプロセスであることが証明されています。コードレビューにOpenAIを活用することで、レビュープロセスが加速されるだけでなく、より堅牢で保守性の高いコードの生成にも貢献します。ただし、AIはレビュープロセスを大いに支援できる一方で、人間の監視と専門知識は、情報を適切に判断し、コードの文脈を完全に理解するために重要です。
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles