SnykがAIの安全な導入を実現する方法
2024年3月27日
0 分で読めますAI革命は、業界やプロセス、そしてソフトウェア開発の根幹そのものを変革しています。この変革の時代を進むなかで、ソフトウェア開発におけるAIの進化と活用だけでなく、業界をリードする開発者向けセキュリティプラットフォームであるSnykが、セキュリティを強化するためにAIをどのように活用しているかを理解することが重要です。
ソフトウェア開発におけるAIの進化
AIの歩みは、意欲的な目標と数々の重要な節目が記録された1950年代にさかのぼります。初期のAI研究では、記号AI(「古き良きAI」とも呼ばれます)に焦点が当てられていました。このAIの一分野では、人間が読める記号で問題を表現し、論理を用いて解決します。初期のAIはルールベースであり、ルールベースシステムやエキスパートシステムの基礎を築き、機械が人間の推論を模倣する可能性を示しました。
20世紀後半、記号AIの時代から移行するなかで、AIは機械学習の原則を取り入れ、大きく変化しました。この重要な転換により、AIシステムはデータから直接学習して進化できるようになりました。現在は、ディープラーニングとニューラルネットワークの時代を迎えています。AIシステムは人間の脳の複雑な神経パターンを模倣し、膨大なデータを処理・分析できるようになりました。
ディープラーニングのさらなる発展により、生成AI(genAI)が登場しました。データから学習し、新しいコンテンツを生成し、さらにはコードも記述できるモデルへの重要な転換です。GPT(生成事前学習済みトランスフォーマー)のようなツールは、人間らしいテキスト、画像、動画を理解・予測・生成する優れた能力を示し、ソフトウェア開発におけるAI活用の新たな道を開きました。しかし、技術の仕組み上、あらゆるgenAIツールが誤った出力や、完全に捏造されているにもかかわらず本物らしく見える出力を生成することがあります。後者は「ハルシネーション」と呼ばれます。
現代のソフトウェア開発におけるAI:活用例
現在、開発者は面倒な作業の自動化から創造性や効率の向上まで、ソフトウェア開発のさまざまな場面でAIを活用しています。主な用途は次のとおりです。
コードの生成
ペアプログラミング
コードのリファクタリング
テンプレートの提供
コメントの追加
コードの要約
「readme」ファイルの作成
バグや問題のトラブルシューティング
これらの作業のうち、上位3つのユースケースは、企業とコードのセキュリティに最も大きなリスクをもたらします。ソースコードの追加、変更、削除が可能なため、ソフトウェアの脆弱性が意図せず混入し、組織に深刻な影響を及ぼすおそれがあります。
McKinseyの調査によると、開発者はgenAIコーディングアシスタントを使うことで、コーディング作業を2倍の速さで完了できます。一方、2023年のSnyk AIコーディングセキュリティレポートや、スタンフォード大学によるこちらの調査などの研究では、AI搭載アシスタントによってコードの安全性が低下することも示されています。
諸刃の剣:メリットとリスク
genAIコーディングアシスタントは開発者の生産性向上に役立つ一方、アプリケーションに追加されるコードの量も飛躍的に増加させています。その結果、AI生成コードに伴うさまざまなリスクが生じます。
品質と信頼性:不完全または偏りのあるデータセットで学習しているため、AI生成コードの品質や信頼性にはばらつきがあります。ハルシネーションやエラー、存在しないパッケージの提案につながり、サプライチェーン攻撃を招くおそれがあります。
盲目的な信頼:AI生成コードは、開発者に誤った安心感や安全性を与えることがあります。しかし、AI生成コードを無条件に信頼することは、Stack Overflowのコードを何も考えずにコピー&ペーストするのと大差ありません。新たに取り込む他のコードと同様に扱い、コミットする前にセキュリティ上の問題がないかテストする必要があります。
セキュリティ脆弱性:AIモデルの欠陥や偏った学習データにより、生成コードにセキュリティ脆弱性が混入する可能性があります。たとえば、Copilotが安全でないコードベースの問題を増幅し、セキュリティ脆弱性を持ち込む可能性があることを、私たちは明らかにしています。
ライセンス侵害と知的財産権の侵害:AI生成コードは「ブラックボックス」方式で生成されるため、さまざまなソースやライセンスのコードがアプリケーションに持ち込まれる可能性があります。これにより、組織がライセンスや知的財産権を侵害するリスクにさらされます。また、GPTが受け取ったクエリを継続的に学習する場合、知的財産が誤って学習データとして取り込まれるおそれもあります。
Snykが開発者によるAIの安全な導入を支援する方法
AIのリスクとメリットを背景に、ソフトウェア開発ライフサイクル(SDLC)では新たなシフトレフトの動きが広がっています。開発者の作業を遅らせることなく、AIコーディングアシスタントを安全に使えるよう支援する必要も高まっています。そのためには、AIコーディングツールと、業界をリードするSnykのようなセキュリティプラットフォームを組み合わせ、次のような機能を活用できます。
AI開発のスピードに合わせたセキュリティを、リアルタイム分析によりソースコードをIDEから直接スキャンして実現します。
誤検知と見逃しを抑え、精度の高い結果を実現するのは、独自のハイブリッドAIアプローチです。複数ファイル間、ファイル間、データフローを詳細に分析し、人間の専門家による広範な調整も重ねています。
開発者のGitワークフローや開発ツール、CI/CDと緊密に連携し、SDLCの早い段階から全体を通じて問題を可視化します。
DeepCode AI:静的解析を支えるSnykのハイブリッドAI

DeepCode AIは、Snykを支える独自のAIテクノロジーであり、AIの主要な2つのアプローチであるルールベースの記号AIと、ニューラルネットワーク/機械学習ベースのgenAIを組み合わせています。Snykがソースコードをスキャンする際、コードを解析してイベントグラフを作成します。このイベントグラフによってデータフロー、サニタイザー、シンクを抽象的に捉えられるようになり、Snykの記号ルールベースAIエンジンに渡されてコードのセキュリティ上の問題が検出されます。問題が検出されると、Snykはデータフロー、ソース、シンクとともに脆弱性をユーザーに報告します。DeepCode AIは、商用利用が認められた特定のライセンスを持つオープンソースリポジトリから機械学習を通じて継続的に学習し、新しいルールを検出・作成します。これらのルールは、セキュリティアナリストによる慎重な審査と選定を経て、記号AIエンジンに追加されます。
脆弱性が検出されると、新しいSnyk Agent Fix機能がセキュリティ上の問題に対する修正候補を生成します。DeepCodeが修正をユーザーに推奨する前に、修正を適用したコードを記号AIエンジンに送り返してセキュリティスキャンを行います。これにより、提案されたコードが問題を修正し、新たなセキュリティ上の問題を引き起こさないことを確認できます。
SnykのこのハイブリッドAIアプローチは、堅牢性、精度、速度を高めます。開発者はIDEでリアルタイムスキャンを実行でき、生産性が大きく向上するとともに、コンテキストの切り替えを減らせます。
現在、AIを活用しているSnykの機能
AIが注目を集めるようになったのはごく最近ですが、Snykは何年も前からAIの力を活用してきました。実際、AIは開発者や企業に業界最高水準のスピードと精度を提供できる理由の一つです。Snykプラットフォームには、AIを活用する機能が複数あります。
Snyk Vulnerability Database(VulnDB):Snykは、さまざまなセキュリティデータベース、ソーシャルネットワーク、コミュニティチャネルを監視し、セキュリティリサーチチームが注目すべき候補を探しています。チームはさまざまなAI技術を用いて、オープンソースのライブラリやフレームワークに存在するエクスプロイトや新たなエクスプロイトを発見できます。この脆弱性データベースは、Snyk Open SourceとSnyk Containerの両製品で利用されています。
Snyk CodeはAIを活用し、コードのセキュリティ上の問題を迅速にリアルタイムで分析します。SnykのSAST分析は記号AIのアプローチを採用しており、より高い精度を実現しています(SnykのOWASPベンチマーク精度は72%。他の著名ブランドは53%)。また、開発者にデータフロー分析を提供します。
Snyk Codeの新しいルールの追加:Snykは、特別に選定された数百のオープンソースプロジェクトから継続的に学習する機械学習アルゴリズムを使い、SASTルールセットを構築・保守しています。その後、セキュリティの専門家がルールを審査し、Snyk Codeを最新かつ柔軟で信頼性の高い状態に保ちます。
Snyk CodeのSnyk Agent Fix:ハイブリッドAIアプローチを活用するSnyk Agent Fixは、IDEを使う開発者に修正案を提供します。開発者が問題をすばやく見つけるだけでなく、IDE内で早期かつ効果的に修正できるよう支援します。調査では、効率的なプログラム解析により、Snyk Agent Fixがさまざまなベースラインモデルを上回ることが示されています。
Snyk Codeのカスタムルール:提案型AIを使ってSASTスキャン用のカスタムルールを作成できるため、各チームの固有のビジネスニーズに合わせてSnyk Codeのルールを拡張できます。
到達可能な脆弱性の分析:SnykのDeepCode AIは、Snykの脆弱性データベースをすばやく検索して関連する関数を分析し、コールグラフを作成します。これにより、オープンソースパッケージに関連する特定の脆弱な関数がアプリケーションから呼び出されているかを判定し、悪用されるリスクが高まっているかどうかを判断できます。この機能は現在クローズドベータ版で、Java、Javascript、Typescriptなどの主要な言語に対応しています。
SnykでAIを安全に導入する
AIを活用したツールやソリューションは、開発者の生産性を高め、企業の市場投入までの時間を短縮できます。しかし、アプリケーション全体のリスクを適切に管理し、変化の激しい環境で企業を保護するためには、適切なガードレールが必要です。画期的なテクノロジーと高度なセキュリティの専門知識を備えたSnykは、AIによるイノベーションを安心して安全に進めるためのセキュリティパートナーです。
AIが生成したコードのセキュリティ対策を始めましょう
無料のSnykアカウントを作成して、AIが生成したコードのセキュリティ対策を数分で始めましょう。または、専門家によるデモを予約して、Snykが開発者セキュリティのニーズにどう応えられるかをご確認ください。
