AIコーディングに潜む4つのリスクと対策
2024年6月13日
0 分で読めます
開発者の96%が、コードの生成やバグの検出、ドキュメントやコーディングの提案にAIコーディングツールを活用しています。開発者はChatGPTやGitHub Copilotなどのツールに大きく頼っており、約80%がセキュリティプロトコルを回避してまで利用しています。
つまり、組織としてAI生成コードの利用を推奨しているかどうかにかかわらず、開発者はおそらく利用するでしょう。そして、そこには相応のリスクが伴います。
一方で、AI生成コードを使えば開発者は時間を節約できます。その時間を、アーキテクチャの設計や革新的な機能の試行など、より創造的で高度な開発作業に充てられます。
他方、AI生成コードに過度に依存すると、セキュリティ上の脆弱性につながります。また、コードの独自性や知的財産権をめぐる問題も生じます。こうしたリスクを詳しく見ていき、人間による監督とAIの自律性のバランスをどう取るべきかを考えましょう。
1. 説明可能性と透明性の欠如
AI生成コードを使う開発者は、そのコードをレビュー、デバッグし、改善する必要があります。また、AIシステムが下した判断の根拠を説明できなければなりません。AIによる判断が重大な影響を及ぼす医療、金融、法律関連のアプリケーションでは、特に重要です。しかし、AI生成コードには説明可能性と透明性が本質的に欠けています。
説明可能性とは、AIモデルがどのように出力を導き出したのかを開発者が理解し、その過程をたどれることです。
透明性とは、AIツールがそのプロセスや判断について、明確で理解しやすく、アクセスしやすい情報を関係者に提供できることです。
AI生成コードに説明可能性と透明性が欠けていると、次のような問題につながる可能性があります。
解釈が難しいコードはデバッグや保守が困難です。その結果、コストが増加し、ソフトウェア開発ライフサイクルの効率が低下します。
特に、安全性、プライバシー、倫理に関する規制の対象となる業界では、規制遵守上の問題が生じます。
一般公開されている生成AIの場合、出力の根拠を理解するのは困難です。AIを自分で学習させたわけではないため、学習に使われたデータを完全に把握できないからです。そのため、AI生成コードでは保守上の課題が発生しやすくなります。
場合によっては、検出しにくいバイアスがコードに潜んでいることもあります。たとえば、患者のリスク予測に使われた医療分野のAIシステムは、2019年にバイアスがあり、精度も不十分であることが判明しました。このシステムの意思決定プロセスは不透明で解釈も容易ではなく、学習データに含まれる誤った関連付けによって生じたバイアスを研究者が特定し、修正するまでにはかなりの時間がかかりました。
ChatGPTやGitHub Copilotなどのツールは迅速にコードを作成できますが、出力の根拠を常に説明するとは限りません。こうした課題に対処するには、次の方法が有効です。
AIの生成結果をレビューし、評価しましょう。一貫性のない点や論理に欠けるパターン、コーディングのベストプラクティスに沿わない回答がないか確認します。
生成されたコードを信頼できるドキュメントや権威ある情報源と照らし合わせ、正確性と論理性を確認しましょう。プログラミング言語、フレームワーク、ライブラリの公式ドキュメントが役立ちます。
重要なAI生成コードや判断は記録に残しましょう。AIの使い方、入力内容、出力に加えた変更を記載します。こうした記録は、後で参照する際や、意思決定プロセスについて質問があった場合に重要です。
2. セキュリティ上の脆弱性
スタンフォード大学の研究者による調査では、AIシステムでコードを生成する開発者は、安全性に問題のあるアプリを作る可能性が高いことが分かりました。人間が書いたコードと同様に、AI生成コードにもセキュリティ上の脆弱性につながる欠陥やバグが含まれることがあります。ただし、人間が書いたコードとは異なり、こうした欠陥は予測しやすいパターンや広く知られたパターンに当てはまらない場合があり、脆弱性の検出と修正がより困難になります。
AI生成コードで見つかるよくあるセキュリティ上の問題には、次のようなものがあります。
インジェクションの脆弱性:ユーザー入力の検証が不十分だったり、データの処理が適切でなかったりすると、攻撃者が悪意のあるコードやクエリをシステムに注入できる可能性があります。
認証の弱点:認証メカニズムに不備があると、認証されていないユーザーによるアクセスを許してしまいます。
権限設定の誤り:AIがコンポーネントやユーザーごとの権限を適切に設定できない場合があります。権限設定の誤りは、権限昇格攻撃につながります。
適切な監督がなければ、AI生成コードは一貫性に欠け、アプリケーションの各所で標準的なセキュリティプラクティスに従わない可能性があります。このAIコーディングのリスクに対処するには、次の方法が有効です。
AI生成コードの監査やピアレビューを実施しましょう。
静的アプリケーションセキュリティテスト(SAST)ツールを自動化し、AI生成コードを生成時とデプロイ時にテストしましょう。
AI生成コードに潜むセキュリティ上の落とし穴について、開発チームをトレーニングしましょう。Snykとニューヨーク大学が提供する認定コースSecurity for Developersは、そのための優れたトレーニングプログラムです。
3. 知的財産権の侵害
最近、ある作家グループが、ChatGPTを支える大規模言語モデルの学習に著作物を無断で利用したとしてOpenAIを提訴しました。一方、連邦判事は最近、生成AIシステムの出力は著作権者の権利を侵害しないと判断しましたが、AIと知的財産をめぐる法律は依然として不明確です。
AIツールは、一般公開されているコードや、専有情報または機密情報を含む可能性のある膨大なデータセットに基づいてコードを生成します。そのため、出力の一部が意図せず知的財産権を侵害する可能性があります。
こうした事態を避けるには、次の対策を講じましょう。
特にChatGPTやGithub Copilotなどの一般公開AIシステムを使う場合は、知的財産権に関する問題がないかAI生成コードを監査しましょう。
AIに関するニュースをチェックし、AI生成コンテンツに関する法律の動向を把握しましょう。
ウォーターマークやその他のデジタル著作権管理(DRM)技術を使い、AI生成コードを追跡しましょう。
4. AI生成コードに関するポリシーの欠如
生成AIの登場に期待が高まり、多くの組織が導入を急いでいますが、その利用に関するポリシーの策定には至っていません。AI生成コンテンツに関する正式なポリシーを設けている企業は、わずか10%です。
明確なポリシーがないと、AIの利用方法がチームやプロジェクトごとに大きく異なります。その結果、出力に一貫性がなくなり、コードの完全性やアプリケーションのセキュリティが損なわれます。また、AI生成コードが被害をもたらしたり、バイアスを示したりすると、評判を損なうリスクもあります。
適切なポリシーを定めれば、AI生成コードの利用に関する明確な指針を開発者に示せます。AIコーディングのリスクを減らすポリシーを策定するには、次の手順から始めましょう。
社内でAI生成コンテンツを利用できる領域を具体的に定めましょう。コード生成、ドキュメント作成、自動テストなどが対象になります。利用範囲を明確にすることで、誤用を防ぐ境界を設定できます。
Snyk Codeなどのツールを使ってAI生成コードを分析し、セキュリティ上の脆弱性を特定して修正しましょう。
AI生成コンテンツのレビューと承認を担当する人を明確にしましょう。開発者がAI生成コードの完全性と信頼性を確認してからデプロイできるよう、ピアレビューの仕組みを導入します。
知的財産権の侵害やセキュリティ上の脆弱性など、AI生成コンテンツに起因する問題への対応手順を策定しましょう。コミュニケーション戦略と、被害を軽減するための手順も含めます。
ポリシーを策定したら、開発者やその他の関係者に周知しましょう。また、新たな規制の施行に応じて、ポリシーを見直し、更新してください。
SnykでAIコーディングのリスクを軽減
Snyk Codeは使いやすいSASTツールです。AI生成コードを含むあらゆる種類のコードを、アプリケーション全体のコンテキストを踏まえてリアルタイムにセキュリティ分析します。専門家による人間参加型のフィードバックを幅広く活用し、高い品質と精度を実現しています。
SnykでAI生成コードの脆弱性をチェックしてみましょう。



