Skip to main content

SnykとAtlassian:AI支援ソフトウェア開発にセキュリティを組み込む方法

blog feature snyk atlassian

2024年2月14日

0 分で読めます

ソフトウェア開発ライフサイクル(SDLC)にAIを取り入れることは、大きなチャンスであると同時に、大きな危険も伴います。リスクを冒すだけの価値はあるのでしょうか?

このテーマについて、AtlassianのシニアソリューションエンジニアであるSascha Wiswedel氏と、SnykのプリンシパルデベロッパーアドボケイトであるSimon Mapleが、(AI支援による)ソフトウェア開発ライフサイクルにおけるセキュリティをテーマに話し合いました。

メリットを最大化し、リスクを軽減するには、ソフトウェアチームが扱うあらゆるプロセス、プロジェクト、製品に、信頼とセキュリティを組み込む必要があります。これは常に重要でしたが、AIによってコードの記述や保守の方法が根本的に変わりつつある今、特に重要です。

ソフトウェア開発におけるAIのリスクとメリット

ソフトウェア開発におけるAI活用を効果的に管理するには、まずどこで使われているのかを把握することが重要です。開発でよく利用されるAIの用途には、次のようなものがあります。

  • コードの生成

  • コードの要約

  • コメントの追加

  • READMEの作成

  • コードのリファクタリング

  • テンプレートの提供

  • ペアプログラミング

統合開発環境(IDE)で開発者のコーディングを支援する生成AIを使ったコード生成は、生産性を最も高める可能性がある一方で、リスクを招く可能性も最も高い分野です。

「開発者がGitHub CopilotやAmazon CodeWhispererのようなAIツールを使うケースが非常に多く、これらは大きな人気を集めています」とSimonは話します。「しかし、こうしたツールの使用に伴うリスクを十分に理解していないことも少なくありません。」

AIがテクノロジー業界のソフトウェア開発を大きく変えていることは間違いありません。Snykの2023年AIコードセキュリティレポートによると、ソフトウェア開発者の96%がすでにAIコーディングツールを利用しています。また、McKinseyの調査では、生成AIを使うことで、開発者はコーディングタスクを最大2倍の速さで完了できることが明らかになりました。

一方で、これらのツールはセキュリティに対する誤った安心感をもたらすことがあります。Snykの同レポートとStanford大学の研究は、どちらも、AIを利用できる開発者は、利用できない開発者よりも安全性の低いコードを書く傾向がある一方で、自分のコードは安全だと考えやすいことを示しています。

ソフトウェア開発における生成AIの課題

開発者による生成AIの広範な利用によって開発速度は上がりましたが、より多くのセキュリティ上の問題を含むコードも増えています。AI支援開発で問題が発生する主な原因は、次の2つです。

  • 不適切なトレーニングデータ

  • ハルシネーション

AIコーディングツールを支える大規模言語モデル(LLM)の動作には、膨大な量のトレーニングデータが必要です。そこには、脆弱性を含むのが当然ともいえるオープンソースコードが大量に含まれています。AIはコードを本当に理解しているわけではなく、ルールや構文の概念も持たないため、オープンソースのリポジトリから学習した結果、脆弱性を生み出すことがよくあります。悪意ある攻撃者が意図的にトレーニングデータを汚染する可能性さえあります。

一方、ハルシネーションは、AIモデルがトレーニングデータから得た知見に基づかないコードを生成するときに発生します。次のトークン(単語やコード行)を出力するようにプログラムされているため、適切な入力情報がなくても、AIが「創造性」を発揮して、意味不明または不正確な回答を返すことがあります。

「生成AIに物語や詩を書かせるなら、ある程度の想像力を期待するかもしれません。しかし、ソフトウェア開発のように厳密なルールに基づくシステムでは、事実に忠実である必要があります」とSimonは話します。

AI生成コードのセキュリティリスクを軽減する

開発者がAIによるコード生成を積極的に進めている一方で、ツールが誤ったコードを生成することがあり、それを自ら認識できない場合もあるとしたら、最善の対策は何でしょうか?

まず、このテクノロジーの許容される利用方法を文書化するために、AIポリシーと社内ガイドラインを策定し、維持することが重要です。適用される規制やフレームワークに準拠するために満たすべき、セキュリティ要件とデータプライバシー要件を検討しましょう。また、サードパーティツールとの連携時に知的財産(IP)を保護できるよう、ポリシーを設計する必要があります。

Simonによると、「機密性の高い顧客データの保護は絶対条件です。同じくらい重要なのは、IPを自社の管理下に置き、こうした情報が公開されているLLMに流出しないよう分離することです。」

しかし、どれほど包括的で抜けのないポリシーを策定しても、全員が従うとは限りません。ルールで進歩の流れを止めることはできませんし、止めるべきでもないからです。厳格なポリシー(AIの禁止、または特定の状況でのみ利用を許可するなど)を設けている企業の開発者は、AIのメリットを享受するために、そのポリシーを回避することがよくあります。実際、Snykの2023年AIコードセキュリティレポートでは、開発者の80%がAIを使うために会社のセキュリティポリシーを回避していることが分かりました。

こうした状況を踏まえると、ほとんどの開発者が何らかの形でAIを業務に利用していると考えるべきです。ソフトウェア開発で何がどのように活用されているかを把握するには、開発者の生産性を高めるため、AIコーディングアシスタントの安全な利用を可能にすることが重要です。AI支援によるコードを利用するなら、既知の標準に照らしてすべてを検証できる仕組みが必要です。Snykのように、統合型でGartnerやForresterからも評価されている最先端のソリューションは、コードをテスト、検証してAIのリスクを軽減するための信頼できる手段です。その仕組みは次のとおりです。

  1. 開発者がIDEでAIツールを使ってコードを生成します。

  2. Snykがコードをリアルタイムでスキャンし、脆弱性を検出します。

  3. Snykが修正方法を提示し、ワンクリックで適用できます。

「ソフトウェア開発の品質とセキュリティを維持するには、チーム全体の協力が欠かせません」とSaschaは話します。「チームが利用しているものとその使い方を理解し、セキュリティを後回しにしないための適切なチェックとバランスを導入すれば、作業はずっと簡単になり、慌ただしさも軽減されます。」

Snyk:AIによるコード生成に信頼とセキュリティを

自動コードスキャンツールを使わずにAI支援によるソフトウェア開発を行うのは、ヘルメットなしで建設現場で働くようなものです。従業員、顧客、そしてビジネスを守るために、適切な安全対策が必要です。

Snykは、IDEからCI/CDパイプライン全体にわたって、不可欠な保護レイヤーを提供します。ソフトウェア開発の未来に向けて、人材、プロセス、テクノロジーのバランスを取るためのヒントについては、AIを安全に活用した開発のベストプラクティス10選をご覧ください。

AIが生成したコードのセキュリティ対策を始めましょう

無料のSnykアカウントを作成して、AIが生成したコードのセキュリティ対策を数分で始めましょう。または、専門家によるデモを予約して、Snykが開発者セキュリティのニーズにどう応えられるかをご確認ください。

続きを読む

Blog

フロンティアモデルは脆弱性を発見した。攻撃者だけがエクスプロイトチェーンを見つけた。

静的解析で欠陥は見つかりましたが、ライブ攻撃テストで侵害につながる連鎖を実証できたのは唯一でした。Evo COS、Claude Security、Claude Code Securityを比較します。

feature insights context
Blog

自律型攻撃はすでに始まっている。防御もそのスピードに追いつかなければならない。

自律型攻撃者によって、防御に使える時間は短くなっています。継続的な検出、修復、検証、予防で、セキュリティチームが攻撃に歩調を合わせる方法をご紹介します。

Blog

AIコーディングエージェントが不適切なアクセス制御を繰り返し実装する理由

AIコーディングエージェントは、コンパイルが通りレビューも通過する一方で、あるテナントのデータを別のテナントに公開してしまう認可ロジックを生成することがあります。不適切なアクセス制御が検出しにくい理由と、その防止策をご紹介します。