Amazon CodeWhispererのセキュリティパートナー、Snyk
2023年11月29日
0 分で読めます開発チームが生成AIコーディングツールの導入を計画しています。しかし、セキュリティリーダーであるあなたには、コンプライアンスやセキュリティ上の懸念があります。なかでも重要なのは、開発者のスピードに追いつけず、重大な問題を見逃してしまうのではないかということです。幸い、Snykを使えば、AIのスピードで開発しながらセキュリティを確保できます。Snykは、Amazon CodeWhispererのセキュリティパートナーです。
競争力を維持するため、生成AIツールの導入があらゆる方面から推奨されています。開発者も例外ではなく、Amazon CodeWhispererのようなツールを使って、より速くコードを作成したいと考えています。こうした進歩は歓迎すべきものですが、規制、コンプライアンス、セキュリティについてはどうでしょうか。セキュリティ担当者にはより高い水準の注意義務が求められます。他部門が承認した計画であっても、セキュリティ上の不備があれば、その責任はあなたに降りかかります。進歩を妨げることなくリスクを確実に管理するには、あなたと同じようにセキュリティを重視する、高速で開発者に使いやすいセキュリティツールが必要です。それがSnykです。
Amazon CodeWhispererとは?
Amazon CodeWhispererは生成AI(GenAI)コーディングツールです。Amazonは「機械学習を活用した汎用コードジェネレーター」と説明しています。「ジェネレーター」という言葉が使われている点に注目してください。つまり、コードの作成を自動化するツールなのです。
他のGenAIツールと同様、CodeWhispererはコードリポジトリ(この場合はAWS CodeCommit)を大量にスキャンし、特定の状況で繰り返し使われるコードパターンを「学習」します。次に、そのパターンを、開発者が作業しているファイル内のコードと大量に照合します。CodeWhispererは照合したコードパターンをもとに、IDE内でリアルタイムに、最も可能性が高いと推測されるコードを提案します。提案はCodeWhispererのコンソール、またはGrammarlyの提案のように開発者のコード内のコメントとして表示され、開発者は最適なものを選べます。CodeWhispererが開発者の生産性を10倍に高め、面倒な作業を減らし、開発者の働き方を一変させる強力なツールであることは容易に想像できるでしょう。
しかし、生成されるコードはデフォルトで安全なのでしょうか?
はい、AIは脆弱性を生み出します
CodeWhispererのようなLLM(大規模言語モデル。GenAIの一種で、テキストで学習し、テキストを出力する)は、最もよく見られる事象をもとに統計的な予測を行います。さまざまなデータを正規分布曲線に当てはめ、そのデータが曲線の中央付近にあるかどうかをもとに予測する様子を想像してみてください。生成AIが行っているのは、まさにこうした処理です。そのため、CodeWhispererの精度は、一般的で繰り返し使われる予測可能なコードパターンに左右されます。特殊な環境や珍しいコードの並びでは、精度にばらつきが出るでしょう。
また、すべての生成AIに起こるハルシネーションや、GenAIモデルの学習に使われたコードの質が出力の質を左右するという共通の問題もあります。後者については、モデルが安全でないコードで学習した場合、安全でないコードを提案することを忘れてはいけません。CodeWhispererは開発者の迅速な開発を支援できますが、セキュリティや精度を常に保証できるわけではありません。結局のところ、生成AIには推論能力がないため、異なる状況や複雑なシナリオを文脈に沿って真に理解することも、自ら生成した誤ったコードや安全でないコードを認識することも、問題のあるコードに注意を促すこともできません。
いいえ、生成AIコーディングツールは、自らのコードを完全に安全にすることはできません
脆弱性の検出は複雑で、多層的な作業です。脆弱性は単独で発生するのではなく、コード全体にまたがって生じるためです。多くの脆弱性は、複数のコードブロック、関数、ファイルにまたがっています。こうした弱点を見つけるには、セキュリティ問題とアプリケーション全体の動作を深く理解する必要があります。
コードの脆弱性が複雑であることは、CodeWhispererや同様のAIコードアシスタントに別の問題をもたらします。開発者がCodeWhispererのようなAIコーディングツールを使うと、タスクを指示し、ツールは指示に沿ったコードを生成しようとします。しかし、生成AIは小さなコードブロックやスニペット単位で動作するため、AIコーディングツールはそのスニペットを取り巻くアプリケーション全体を理解しようとはしません。CodeWhispererはアプリケーション内の別の場所にあるコードをまねることはできますが、それはアプリケーションの仕組みを学習しているという意味ではなく、その開発者のコードパターンを学んでいるにすぎません。一方、新しいスニペット、行、コードブロックはどれも、アプリケーション内のデータフローに影響します。セキュリティ問題を見つけるには、アプリケーション全体の文脈を考慮する必要があります。こうしなければ、脆弱性を正確に特定することはできません。
まとめると、セキュリティのガードレールなしで開発者がCodeWhispererを使うのは問題です。
生成AI技術の仕組み上、CodeWhispererは自分の出力が正しいかどうかを確認できません。修正は人間に頼るしかありません。
経験豊富な開発者なら、CodeWhispererが生成したコードの機能上の問題の多くに気づけるでしょう。しかし、すべてのセキュリティ問題を見つけるスキルや時間のある開発者はほとんどいません。
さらに、経験の浅い開発者はCodeWhispererの出力を過信するおそれがあります。AIツールが普及するほど、その傾向は強まり、AI生成コードに含まれる機能上およびセキュリティ上の問題を見逃してしまうかもしれません。
CodeWhispererは開発者の生産性を大きく高める強力なツールです。しかし、安全かつ適切に活用できるかどうかは、セキュリティのガードレールが整っているか、そして利用するセキュリティツールの品質にかかっています。つまり、CodeWhisperer(または他の生成AIコーディングアシスタント)を使うときは、必ずSnykのようなセキュリティツールを併用しましょう。
AIのスピードに合わせたセキュリティ
開発者が使うAIコーディングアシスタントと同じくらい高速でなければ、セキュリティアシスタントは定着しません。しかし、それだけではありません。使用するセキュリティツールに求められる重要な機能を紹介します。いずれもSnykの特長です。
広範なカバー範囲と高速性
真に効果的なセキュリティツールは、幅広いプログラミング言語(Snykは19以上に対応)をカバーし、脆弱性がIDEの外に出る前に検出します。また、Snykは独自のハイブリッドAIとセキュリティに特化した手法により、他のソリューションよりも最大50倍高速です。開発者、そしてCodeWhispererが作業するIDE内で、ソースコードをリアルタイムにチェックします。
自動化
Snykはセキュリティの専門知識を注ぎ込み、コードの保護に特化したツールを、開発者に使いやすいよう設計しました。開発者はさまざまなプログラミング言語でコードを書き、専門性や優先事項はセキュリティではなく開発にあることを理解しています。だからこそ、セキュリティチェックは高速かつ自動化し、修正は簡単に適用できるようにする必要があります。それが、セキュリティツールの長期的な定着につながります。
開発ワークフローに最適化された、徹底的な検査
Snykは、開発者が作業中のコードをIDE内でチェックし、リアルタイムで脆弱性を特定します。わかりやすい説明(難解な参照情報はありません)を提示し、修正案をコード内に自動で提案するため、開発者はコードを書きながら問題を修正できます。複雑なコードセキュリティの問題が関数やファイルをまたいで広がることを見逃さないよう、現在のファイルや依存ファイルだけでなく、アプリケーション全体を、修正案の生成前後に評価して、文脈を把握します。セキュリティ基準を守るには、データフロー、コード間のやり取り、アプリケーション全体の複雑さを理解することが重要です。SnykとCodeWhispererを併用することで、AIコード生成におけるセキュリティ上の弱点を補えます。
正確でカスタマイズ可能な、一元化されたレポート
Snykは、開発チームもセキュリティチームも時間に余裕がないことを理解しています。どれほど高速でも、誤検知が多ければ意味がありません。一部のコードセキュリティツールでは、誤検知の大量発生を抑えるカスタムルールを作成できなかったり、誤検知を防ぐためにルールを手作業で作成する必要があったりします。Snykならそのようなことはありません。
DeepCode AIを活用し、セキュリティの専門家が、導入時から使えるルールと、脆弱なコードパターンや推奨される修正方法を網羅したナレッジベースを管理しています。これにより精度を高め、誤検知を減らします。長く無意味な弱点の一覧ではなく、関連性の高い重要な結果だけを確認できます。さらに、カスタムルールを作成して結果を微調整し、組織固有のニーズに合わせることもできます。
さらに、Snykに標準搭載されたレポート機能は、セキュリティリーダーのニーズにも応えます。問題やチームを一元的に可視化し、詳細なフィルタリングも可能です。Snyk Insightsと併用すれば、確かな情報にもとづいて戦術的、戦略的な意思決定を行い、関連性の高い問題を優先的に対処できます。
ツールやテクノロジーからの独立性
ベストプラクティスと優れたガバナンスに欠かせないのが、独立性です。AIコーディングツールを開発するチームと、コードを保護するチームが完全に分離されていること(直接的にも間接的にも関係がないこと)を、必ず確認するようおすすめします。関連するチームが両方を担当するのは、キツネに鶏小屋の番をさせるようなものです。Snykはセキュリティの専門家であり、AIコーディングツールとの関係は一切ありません。リスク管理の頼れるパートナーとして、セキュリティに専念しています。
AIが生成したコードのセキュリティ対策を始めましょう
無料のSnykアカウントを作成して、AIが生成したコードのセキュリティ対策を数分で始めましょう。または、専門家によるデモを予約して、Snykが開発者セキュリティのニーズにどう応えられるかをご確認ください。
開発者に愛される
Snykが誇りに思っているのは、セキュリティ担当者だけでなく、開発者にも支持されていることです。Google、Reddit、ABInBevといった名だたる企業で急速に導入が進んでいることが、その証です。Snykは既存のワークフローやツールに自然に溶け込み、IDE、SCM/Git、CI/CDと幅広く連携するため、導入や利用もスムーズです。Vismaでソフトウェア構成分析(SCA)と静的アプリケーションセキュリティテスト(SAST)のサービスオーナーを務めるNicolai Brogaard氏は、次のように述べています。
「多くのセキュリティテストツールの問題は、使いこなすために膨大な知識が必要で、自分の環境にそのまま導入して使い始めることができない点です。Snykの違いの一つは、開発者がすぐに使い始め、自分で使い方を把握できるようにしていることです。」
業界やお客様からの信頼
Snykは、2023年のGartner Magic Quadrant for Application Security Testingで「リーダー」に選出され、2023年のForrester Wave for Software Composition Analysisでも「リーダー」に選ばれました。また、2022年にはGartner Peer Insights Customers’ Choice for Application Security Testingを受賞しました。こうした評価は、セキュリティを可能な限り開発の早い段階に組み込み、開発者の行動を変えたりワークフローを妨げたりすることなく、厳格なセキュリティ対策を実現するために、Snykが継続して取り組んできた成果です。
SnykのAI関連リソース
AIを活用した開発を安全に進めるためのベストプラクティス
AIを活用した開発のメリットを最大限に生かしながら、潜在的なリスクを効果的に軽減するための、開発者やセキュリティ担当者向けの10のヒントをご紹介します。
