AI生成アプリの「9割」に潜む脆弱性、Microsoftらが実態を調査
AIの進化に伴い、プログラミングの専門知識がなくても、AIとの対話や「ノリ(バイブス)」でアプリケーションを構築する「バイブコーディング」が注目を集めています。しかし、その手軽さの裏には深刻なセキュリティリスクが潜んでいることが明らかになりました。
米Microsoftやシンガポール国立大学などに所属する研究者らは、バイブコーディングによって作成され、実際に公開・稼働しているWebアプリケーションのセキュリティ実態を調査した論文「Understanding the (In)Security of Vibe-Coded Applications」を発表しました。この調査によると、公開されているアプリの9割以上に脆弱性が存在し、その多くが極めて深刻なリスクを抱えていることが判明しました。
稼働中アプリの91%に脆弱性、深刻な欠陥が多数
研究チームは、オープンソースとして公開されている9,041件のソフトウェアのうち、Webアプリケーションである8,695件を特定。その中から、実際に公開され稼働状態にある984件を絞り込み、そこから無作為に200件を抽出して詳細なセキュリティ調査を行いました。
調査の結果、抽出されたアプリ全体の91%から、少なくとも1つの脆弱性が発見されました。さらに、検出された1,186件の欠陥のうち、実に65.77%が「致命的(Critical)」または「高(High)」という深刻度に分類されるものでした。これらの欠陥は、第三者による不正アクセスやシステムの乗っ取り、さらには機密データの漏えいへと直接つながる可能性がある極めて危険なものです。

脆弱性を生み出す「3つの欠陥」
AIが生成したコードにこれほど多くの脆弱性が含まれる原因について、論文では以下の3つのカテゴリに分類して分析しています。
- 知識の欠陥(63.4%): 脆弱性の原因として最も大きな割合を占めるのが、AIが安全なコーディングに関する十分な知識を適用できていないケースです。
- 目的の欠陥(23.1%): 開発者が意図したセキュリティ要件や動作目的が、AIの生成プロセスにおいて正しく反映されていないケースです。
- 記憶の欠陥(13.5%): AIが文脈や過去の指示を正確に保持できず、コードの整合性が失われることで生じるケースです。
このように、AIによるコード生成においては、安全な実装方法に関する知識の不足(知識の欠陥)が最大のボトルネックになっていることが浮き彫りになりました。
プロンプトの工夫で改善も、細かすぎる指示は「逆効果」に
研究チームは、これらの脆弱性を防ぐための対策実験も実施しました。その結果、AIへの指示(プロンプト)の与え方によって、脆弱性の再発率が大きく変動することが明らかになりました。
何も工夫を施さない初期状態では、同じ脆弱性が25.7%の確率で再発しました。しかし、プロンプトに「本番運用に耐えるものを」といった品質を求める文言を書き添えるだけで、再発率は11.0%にまで減少しました。また、AIにセキュリティ強化用のスキルを追加した場合も、再発率は11.9%へと同様に減少しました。
一方で、意外な結果も得られています。開発者が良かれと思って「技術的な指示を細かく書き込む」と、再発率は45.7%へと大幅に悪化してしまいました。さらに、より高性能とされる上位のAIモデルに変更しても、結果はほとんど改善されず、かえって脆弱性が悪化するケースも見られたといいます。
開発者が認識すべき「バイブコーディング」の現実
この研究結果は、AIを活用した開発において、単に「動くものを作る」ことと「安全なものを作る」ことの間には大きな隔たりがあることを示しています。
特に注目すべきは、詳細な技術的指示を与えることが逆効果になり得るという点です。AIに対して細かすぎる制約や指示を与えると、AIのコード生成プロセスが混乱し、結果としてセキュリティ上の欠陥を生み出しやすくなる可能性があります。むしろ、「本番環境で耐えうる品質」といった大枠の要求や、セキュリティに特化した役割(スキル)をAIに与えるアプローチの方が、安全なコードを出力させる上で効果的であるという事実は、今後のAI開発における重要な知見となるでしょう。
AIによる高速な開発の恩恵を享受しつつ、深刻な不正アクセスやデータ漏えいを防ぐためには、生成されたコードに対する厳格なセキュリティ検証が不可欠です。


コメント