SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

生成AI時代のセキュリティ入門

AIエージェントの死角。「依存関係の脆弱性」と「サプライチェーン攻撃」からプロジェクトを守る方法

生成AI時代のセキュリティ入門 第3回

 生成AIによる開発の華やかな成功事例の裏には、世界中のハッカーから狙われるという現実があります。AIが生成するコードは、情報の正確性を検証するわけではないため、一見すると正しく動作するものの、セキュリティ上の欠陥を抱えたコードを平然と生成してしまうのです。この連載では、開発の間口が広がった今こそ、セキュリティの重要性を再確認し、安全に開発を続けるための実践的な解決策を提供します。第3回では、AIが開発プロセスに持ち込みがちな「ソースコードの外側」のリスク、すなわち「依存関係の脆弱性」と「サプライチェーン攻撃」に焦点を当てます。

コードの外側に潜むリスク

 第2回では、AIが生成する「コードそのもの」に潜む脆弱性(インジェクションやアクセス制御の不備など)を解説しました。しかし、現代のアプリケーション開発におけるセキュリティリスクは、あなたが書いたコードの外側にも存在します。

 OSSライブラリやクラウドサービス(PaaS, BaaSなど)を使ってアプリケーションを構築することは今や一般的です。 私たちは「車輪の再発明」を避けるため、無数の外部コンポーネントに依存し、「巨人の肩に乗って」日々開発を進めています。

 この「依存」は開発を加速させる一方、AIの利便性が「何を信頼し、何を取り込んでいるのか」という最も重要な確認作業を忘れさせる危険性をはらんでいます。AIへの過信が、この古くからあるリスクを新たな形で増幅させるのです。

 今回は、AIが開発プロセスに持ち込みがちな「ソースコードの外側」のリスク、すなわち「依存関係の脆弱性」と「サプライチェーン攻撃」に焦点を当てます。

AIは学習時に存在しなかった脆弱性は考慮できない

A06:2021-脆弱で古くなったコンポーネント

 これは、既知の脆弱性(CVE)が含まれるライブラリ、フレームワーク、その他のソフトウェアコンポーネントを使用することによるリスクです。 攻撃者は、既知の脆弱性をスキャンするツールを使い、パッチが適用されていない「脆弱なコンポーネント」を利用しているシステムを見つけ出します。

 コーディングエージェントは悪意なく、脆弱性を含む古いコードを開発者のプロジェクトに持ち込むことがあります。それは、 AIはインターネット上の膨大な公開コード(過去のブログ記事、GitHubリポジトリ、Stack Overflowの回答など)を学習データにしているためです。

 その中には、学習時点では安全でも、現在では脆弱性(CVE)が発見されている古いライブラリの利用方法や、非推奨になったライブラリ、最新のライブラリと相性が悪いコードなどが含まれている可能性が当然あります。

具体例

 私自身、このケースで脆弱性を生み出してしまったことがあります。

 特定の環境で特定のバージョンでないと動かないライブラリを使っていましたが、そのバージョンにはデフォルト値が不適切だというCVEがありました。

 AIは、私が使用している特定バージョンの脆弱性を知る由もありません。そのため、正しい回避策を提案できないのは当然です。これはAIの「欠陥」というより、現時点での「限界」として理解する必要があります。 ライブラリを使う以上、その脆弱性を定期的にチェックするのは開発者の責務です。そして、AIが提案するコードにも、その観点で疑いの目を持つ必要があるということです。

対策

 専用のツールやサービスの活用が不可欠です。

 例えば、Githubの「Dependabot Security Updates」を利用すると、リポジトリのセキュリティタブから、利用中の依存関係に問題があるかを簡単にチェックできます。

 他にも「OSV」や「Trivy」を使い、依存関係が記されたファイルをスキャンし、既存のCVEと照合させることが可能です。これらをCI/CDパイプラインに組み込むことで、脆弱な依存関係の混入を継続的にチェックできます。

次のページ
必要最低限の依存とその検証

この記事は参考になりましたか?

生成AI時代のセキュリティ入門連載記事一覧

もっと読む

この記事の著者

Kyohei Fukuda(キョウヘイ フクダ)

 広島県出身、東京在住のWebエンジニア。 国内IT企業数社でフロントエンド開発に従事した後、現在は外資IT企業でSolution Engineer兼Developer Advocateを務めている。OSSのPDF生成ライブラリ「pdfme」を開発し、関連する書類作成サービスを個人開発し運営。 JavaSc...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

CodeZine編集部(コードジンヘンシュウブ)

CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/22526 2025/12/11 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング