Skip to main content

AI生成コードにセキュリティコンパニオンが必要な理由

blog feature ai blue

2023年10月25日

0 分で読めます

生成AI(GenAI)が話題となり、すでに多くの開発者が仕事にこの画期的なテクノロジーを取り入れています。しかし、GenAIコーディングアシスタントは、必ずAIセキュリティツールと併用する必要があります。その理由と、データから見えてきたことを見ていきましょう。

AIの支援により、開発者はかつてないスピードで開発を進めています。生産性が大幅に向上するなか、セキュリティチームは進歩を妨げたり、大量のコードに脆弱性が紛れ込むのを見逃したりすることなく、歩調を合わせる必要があります。

コードの量も大きな課題ですが、GenAIを活用した開発のスピードと従来のテストプロセスのスピードには、極めて大きな隔たりがあります。GenAIコーディングツールがコードを生成すると、開発者はそのコードが安全だと思い込み、セキュリティテストが実施されるまで作業を続けることがあります。その時点で脆弱性が見つかると、開発者は作業に戻って修正しなければなりません。作業の切り替えには時間がかかるだけでなく(カリフォルニア大学アーバイン校の先行研究によると、中断後に集中状態に戻るまでには23分かかります)、作業をやり直す必要があるため非常に非効率です。

さらに、主要な研究によると、以下の要因によって問題はより深刻になります。

  • 脆弱性の数:GenAIコーディングアシスタントを使う開発者は、使わない開発者と比べて、コードに大幅に多くの脆弱性を持ち込みます。

  • 低下する危機意識:GenAIコーディングアシスタントを使う開発者は、自らが生成したコードに対して、根拠のない過剰な自信を持つ傾向があります。

以下で2つの研究を詳しく見ていきますが、重要なのは、AIの支援によって開発者がより脆弱なコードを生み出すだけでなく、手作業で作成した安全でないコード以上に、その脆弱なコードを信頼しているということです。この新たな問題に対処するには、開発者とAppSecによりスマートで、速く、直感的なセキュリティソリューションが必要です。

「AIコーディングアシスタントのためのセキュリティコンパニオン」と題したSnykのガイド。AI生成コードのセキュリティ確保と、アプリケーションセキュリティチームについて説明しています。
AIコーディング向けセキュリティコンパニオンガイドをダウンロード

GenAIのコードを安全だと思い込まない

前述のとおり、問題はコードの量だけではありません。AIの速度で、知らないうちに脆弱性が持ち込まれることも問題です。脆弱性は、アプリケーションの基盤そのものに組み込まれています。

GenAIを安全だと思い込んではいけないのはなぜでしょうか。たとえば、スタンフォード大学の研究者による2022年12月の研究では、AIアシスタントを利用できた参加者は、利用できなかった参加者よりも「安全性の低いコードを大幅に多く書いた」と示されています。また、セキュリティ上の問題とその規模について、現実のシナリオと実用的なアプリケーションに焦点を当てた、コーネル大学の研究者による2023年10月の最新研究でも、AI生成コードに含まれる脆弱性の複雑さと深刻さが明らかになりました。具体的には、次のとおりです。

  • Copilotが生成したコードスニペットの35.8%に、複数のプログラミング言語にわたって共通脆弱性タイプ(CWE)が含まれています。

  • さらに懸念されることに、この研究では42種類のCWEに関連する多様なセキュリティ上の弱点が確認されました。最も多く見つかった脆弱性は、CWE-78(OSコマンドインジェクション)、CWE-330(不十分なランダム値の使用)、CWE-703(例外条件の不適切な確認または処理)です。

  • そして最も懸念されるのは、特定されたCWEの約26%が2022年のCWEトップ25に含まれていることです。

脆弱なコードに対する開発者の自信が高まる

前述のスタンフォード大学の研究論文では、「AIアシスタントを利用できた参加者は、利用できなかった参加者よりも、自分が安全なコードを書いたと考える傾向が強かった」ことも明らかになりました。つまり、アプリケーションの基盤にこれまで以上の脆弱性が組み込まれているだけでなく、開発者はそれを組み込むことにも自信を持ちやすくなっています。スピードがスキルと取り違えられていると考えてよいでしょう。

解決策:包括的なアプローチ

ここで、GenAIを使うべきではないと言いたいわけではありません。Gartnerが2023年に実施した調査によると、経営幹部の所属組織の70%がGenAIの調査・検討段階にあり、19%がパイロットまたは本番環境での利用段階にあります。つまり、すでに変化は始まっています。実際、SnykもGenAIコーディングツールを活用していますが、セキュリティを優先する方法で利用しています。

私たちは、この素晴らしい新しいテクノロジーを安全に活用することが重要だと考えています。GenAIコーディングツールは、経験の浅い開発者のようなものと捉えることができます。コードを生成することはできますが、コードの微妙な違いを理解することはできず、間違いを犯します。大小さまざまなセキュリティリスクを見つけるために訓練されているわけでもありません。この現代的なセキュリティ課題に対処するには、人、プロセス、ツールを考慮した包括的なDevSecOpsアプローチが必要です。

人

まず、GenAIの仕組みや、そこから生じる欠陥、テクノロジーに内在するリスクについて、開発者を教育する必要があります。

GenAIモデル(大規模言語モデル、つまりLLMと呼ばれるものもあります。LLMはGenAIの一種で、テキストを学習し、テキストを出力します)は、確率に基づいて予測を行う統計モデルにすぎません。LLMは膨大なデータを調べ、何度も繰り返されるパターンを見つけ、類似または同一の例が大量にあることを根拠に、何かが事実であるかではなく可能性が高いと推測します。LLMには推論能力がなく、学習に使われたデータの質に左右されます。そのため、バイアスや古い情報など、学習データに含まれる欠陥はLLMによって再現されます。また、予測した内容が文脈に合わない、意味をなさない、あるいはまったく事実でないこともあります。しかしLLMには、それが誤りだと理解したり、ユーザーに注意を促したりする能力がありません。

GenAIツールにはセキュリティチェック機能が組み込まれている場合もありますが、セキュリティは主な目的ではないため、そのチェックは不十分です。組織全体を守るためにOSのファイアウォールだけに頼ることがないのと同じように、コーディングアシスタントを主要なセキュリティレイヤーとして頼るべきではありません。

AIは、ChatGPTによって最近注目されるようになった新しいテーマではありません。さらに詳しく知りたい方は、Snykのブログをはじめ、豊富なコンテンツをご覧ください。

プロセス

次に、プロセスを見直す必要があります。従来のセキュリティプロセスや手法は、開発者のワークフローと比べて遅く、作業を妨げがちです。ご存じのように、Snykは「シフトレフト」をいち早く提唱し、その実現を支援してきました。これは、ソフトウェア開発ライフサイクルの早い段階でソフトウェアやシステムをテストすることです。それには理由があります。開発者は収益を生み、維持するものを作ります。一方、セキュリティは評判を守り、ミスや知識不足によって失われる可能性のある数百万、あるいは数十億を守ります。双方が最適なペースと流れで連携する必要があるのです。

しかし、これまで両者の働き方には摩擦がありました。開発者は迅速に動く必要がありますが、既存のテスト手法がボトルネックになっています。ビジネスを生み出す作業を妨げたり、開発者に自然になじまない行動を強いたり、最善を尽くしても追いつけないセキュリティチームに負担をかけ続けたりする代わりに、脅威が生まれた瞬間に無力化するAI搭載のセキュリティチャンピオンを活用しませんか?

ツール

ここでツールの話に戻ります。AIにはリスクがありますが、生産性を大きく高める力もあります。車に乗れば移動が速くなり生活が大きく向上する一方で、重大なリスクも伴うため、シートベルトなしでは運転しないのと同じです。開発者は、セキュリティという「シートベルト」をしっかり締めてGenAIコーディングツールを使う必要があります。前述のスタンフォード大学の研究では、GenAIを使った参加者が生成した安全なコードと安全でないコードについて、「安全な回答の87%は、ユーザーによる大幅な編集が必要だった」と報告されています。この結果は、コードを安全にするには「十分な知識に基づく修正」が必要であることを示唆しています。これは、コードに対してリアルタイムのセキュリティチェックを迅速に行うことで、開発者がGenAIの幅広い能力を活用できるという私たちの考えとも一致します。

GenAIが生成したコードにセキュリティチェックが必要だとわかったところで、この用途に最適なセキュリティソリューションとはどのようなものでしょうか。開発者が作業している間も見えないところで動き、歩調を合わせること、徹底的で正確なチェック、そして相互運用性が、ツールに求められる主な特長です。

そこでSnykが役立ちます。セキュリティの専門家として培ってきた知識を活かし、AI支援開発のスピードに合わせてコードを保護し、修正します。最新のアプリケーションのセキュリティ確保は複雑なプロセスです。Snykはコードの記述中に、アプリケーションの全体をリアルタイムでチェックします。データフローを追跡して、関連する依存関係と脆弱性だけを特定し、修正案を生成したうえで、生成した修正による影響をテストするためにアプリケーション全体を再チェックします。そして、関連する脆弱性を開発者に提示し、IDE上でワンクリック修正を可能にします。これらすべてが数秒で完了します。

コードエディターに、JavaScriptで書かれた商品レビューのロジックと、セキュリティを確保するためにすべてのコードを分析することについてのテキストが表示されています

Snykは、人気の高いツール(IDE、Git、CLI)、プログラミング言語、ワークフローに直接統合できます。開発者にとって、Snykはセキュリティに詳しい親友のような存在です。開発者やそのAIツールのすぐそばで、同じペースで連携し、より安全なアプリケーションづくりを支援します。

GenAIコーディングツールに最適なセキュリティコンパニオンの選び方が気になりますか?詳しくは来週ご紹介します。ブログをぜひチェックしてください。

Snykとともに、新たな「左」へ

GenAIは非常に役立つ一方で、セキュリティ上の大きな課題もあります。GenAIコーディングツールがセキュリティチームにもたらす問題には、次のようなものがあります。

  • ワークフローの中断:ビルドの完了やテスト結果が返ってくるまで開発者が待ち続け、その間作業を中断することは現実的ではありません。

  • コード量の増加と、そのコードに内在する弱点:AIによって開発者のコーディングが速くなる一方、コードに組み込まれる脆弱性もそれに応じて増えています。

  • 脆弱なコードに対する開発者の信頼の高まり:AIツールが誤った安心感を与えるためです。

GenAIツールは開発のあり方を変え、「左」の位置を開発者よりさらに手前へと移動させました。ソフトウェア開発ライフサイクルのAIの段階でリスクに対処できるよう、私たちもその場にいなければなりません。車のシートベルトが運転者のさらなる加速を可能にするように、セキュリティツールはGenAIコーディングツールを活用し、開発を加速させるためにあります。

GenAIの力を安全に活用できるよう、開発者を支援しましょう。GenAIコーディングアシスタントの最適なコンパニオン、Snykとともに、新たな左へシフトしましょう。

Snykの動作をご覧になりませんか?オンデマンドのバーチャルセッション、ライブハック:AI生成コードを悪用するをご視聴ください。

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

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

続きを読む

blog feature snyk container custom base recommendations
Blog

Evo Agentic AppSecのご紹介:AI開発のスピードに対応するセキュリティ

AI駆動型開発のスピードに、従来のセキュリティワークフローは追いついていません。SnykのAgentic AppSecは、セキュリティエージェントが脆弱性を継続的に検出、修正、検証し、人が基準を定められるようにします。

blog feature ai violet
Blog

VulnBump:AIエージェントはビルドを壊さずに脆弱な依存関係を修正できるか?

VulnBumpは、実際の依存関係アップグレード307件を対象にAIエージェントをテストします。脆弱性が解消され、ビルドとテストが成功した場合にのみ、修正としてカウントされます。

Blog

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

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