Skip to main content

Snykが開発者向けセキュリティにAIを活用する方法

著者

Frank Fischer

feature snyklaunch

2023年4月4日

0 分で読めます

開発者向けセキュリティへのAI活用をリードするSnykのアプローチは独自のものです。今回は、Snykが現在AIとデータサイエンスをどのように活用しているのかをご紹介するとともに、今後の展開を少しだけお見せします。

本題に入る前に、SnykのAI活用について、まず押さえておきたい2つのポイントをご紹介します。

  1. Snykは、人工知能の2つの主要なアプローチである機械学習(ML)と記号AIを組み合わせ、さらに人間の知性も取り入れたハイブリッドAIを実現しています。

  2. これまでSnykは、主に舞台裏でAIを活用し、セキュリティリサーチの品質と精度の向上に取り組んできました。リサーチにおけるAIの活用を進化させ続ける一方で、ユーザーインターフェース上でより実感できる新機能も追加していきます。

SnykがAIにもたらすもの:ハイブリッドAI

先ほど挙げた1つ目のポイント、ハイブリッドAIについてもう少し詳しく説明します。複数のAIモデルに人間の知性を組み合わせていることから、ハイブリッドAIと呼んでいます。

AIには、MLと記号AIという2つの主要なアプローチがあります。

  • 機械学習(ML)は曖昧な状況への対応に優れていますが、大量の学習データを必要とします。結果が正しい理由を説明できないことから、「ブラックボックス」と呼ばれます。GPTのような生成ML技術はこのカテゴリに属します。

  • 一方、記号AIは構造が明確なタスクに適しており、学習データを必要とせず、結果の根拠を説明できます(ブラックボックスではなく透明性があります)。ただし、曖昧な状況への対応は苦手です。

セキュリティの結果を出すには、どちらの状況にも対応できなければなりません。サンプルごとに構造が異なる場合でも、コードをスキャンし、その意図を理解できるツールが必要です。これはMLが得意とする分野ですが、GPTやCodexなどの生成MLシステムには、ハルシネーションと呼ばれる大きな課題があります。こうしたシステムの出力は非常に優れたものに見えても、正しいとは限らず、もっともらしい誤情報を含むことがあります。

そこで活躍するのが、結果を導き出すだけでなく、その結果が正しい理由も説明できる記号AIです。ハルシネーションを防ぐため、Snykは生成MLと記号AIを組み合わせています。Snykの生成MLモデルが修正用のソースコードを生成し、記号AIがそのコードに問題がないかを確認します。ユーザーはIDE上で、問題を修正し、新たな問題を持ち込まないことをスキャンで確認済みのコードを自動的に受け取れます。

そして、言うまでもなく欠かせないのが人間の知性です。Snykは、AIの制御と指針の提示において、Snykのセキュリティ専門家が持つ人間ならではの知性を重視しています。さらに、Snykのセキュリティリサーチチームは、何千もの脆弱性を発見・開示してきました。セキュリティ調査の結果には、開発者やセキュリティチームが理解し、活用しやすくなるメタデータや知見も加えています。AIが煙を見つけ、人間のリサーチチームが本当に火災が起きているのかを見極め、結果の正確性と実用性を確保するのです。

複数のアプローチを組み合わせることで、使いやすさと堅牢性を大幅に高められるため、SnykはハイブリッドAIの活用を進めています。これは、最新のAIと独自のセキュリティ専門知識を活用し、革新的なセキュリティソリューションを提供するというSnykの理念を支える最適なアプローチです。

現在AIを活用しているSnyk製品

Snykには、さまざまなAIやデータサイエンス技術に取り組む専門チームがあります。中核となるAIチームはDeepCodeを母体とし、AI、静的解析、セキュリティの分野で世界的に知られる研究者や実務家で構成されています。チームは権威ある学会や学術誌で複数の論文を発表し、アプリケーションセキュリティにおけるAIの活用をめぐる業界の議論にも参加しています。

ここでは、Snyk製品で現在AIとデータサイエンスをどのように活用しているかをご紹介します。

  • SnykはAIを使って、さまざまなソーシャルメディアやコミュニティのチャネルを監視し、注目すべき脆弱性候補を絞り込んでセキュリティリサーチチームに知らせています。高度な自然言語処理を活用し、感情分析、キーワード検索、三角測量によって、オープンソースのパッケージやフレームワークに潜む新たな脆弱性や悪用されている脆弱性の可能性を発見します。

  • Snyk CodeはAIを活用し、高速かつ詳細なセマンティックコード解析を実行して、業界標準のスピードを実現します。AIエンジンは非常に高速で正確なだけでなく、使用するAIモデルが検出結果の根拠や追跡すべきデータフロー、同様の状況に直面した他の開発者がどのように問題に対処したかを示す例も提供します。セキュリティにおいて、回答が正しい理由を示すことは重要です。これは生成MLツールとは異なるモデルに基づいています。

  • Snykは機械学習アルゴリズムを使い、言語ごとに10万以上のオープンソースリポジトリから学習して、SASTのナレッジベースを構築・維持しています。AIとセキュリティの専門知識を組み合わせることで、独自の動的なハイブリッドAIを実現しました。

  • Snyk Cloudは、さまざまなリアルタイムデータソースを組み合わせ、元のコードからクラウド、そしてその先まで、アプリケーションのセキュリティ態勢をモデル化します。Snykプラットフォームの高度な分析・レポート機能を使って、情報を意思決定に役立つ知見へと変換したり、ServiceNowやSysdigなどのパートナーが提供する広範なエンタープライズシステムに統合したりできます。

Snykにおける今後のAI活用

学習とイノベーションを続ける中で、Snykは次のような取り組みをさらに発展させ、AIを中心とする製品機能を拡充していきます。

  • 4月のSnykLaunchイベントをご覧になった方は、SnykのAIを活用した開発中の機能をご覧になったことでしょう。ユーザーはIDE上で、セキュリティの問題を修正するコードを自動的に受け取り、さらに生成されたコードが新たな問題を持ち込まないこと、そして問題が確実に修正されていることも確認できます。

  • ユーザーはSnykのAIと直接やり取りし、独自のコードクエリを作成できるようになります。AIには2つの大きなメリットがあります。クエリのセマンティック補完により検索が簡単になり、Snyk Codeエンジンの学習セットからより迅速に結果を得られます。さらに、進化的アルゴリズムや遺伝的アルゴリズムを使ってルールを生成し、ノイズを減らしながら網羅性を高めるよう最適化できます。

  • Snykのセマンティックコードクエリ機能と自然言語処理を組み合わせることで、開発者は自然言語で意図を記述し、オープンソースプロジェクト内から実装例を見つけて学び、応用できるようになります。ユーザーは意図を自由に記述するだけで、ニーズに合った信頼性の高いコード例を得られます。

  • ソフトウェアサプライチェーンの複雑化が進み、Snykがコード、パッケージ、クラウドに関するデータ(パートナーからのデータを含む)をさらに収集するにつれて、Snykに流入するデータの量と複雑さは増していきます。ハイブリッドAIは、今日すぐにセキュリティ問題につながるわけではなくても、将来的に脆弱性となる可能性のある問題を検出できるようになります。

  • インタラクティブな学習環境であるSnyk Learnでは、AIを使って学習モジュールをカスタマイズし、開発者一人ひとりのスキルレベルに合わせることができます。

AIをさらに掘り下げる:生成ML、記号AI、ハルシネーション

AIモデルや、それを使ってSnykがどのように結果を導き出しているのかに関心のある方に向けたセクションです。

最近のAIブームの多くは、OpenAIのGPT-3、そして現在のGPT-4モデルや、MicrosoftのCodexのような派生モデルが示した驚くべき成果によるものです。生成MLモデルは大量のデータを分析してルールを学習し、特定の入力がどのような出力につながるかについて独自のルールを形成します。目覚ましい成果を上げる一方で、生成MLにはハルシネーションと呼ばれる問題があります。ハルシネーションとは、機械が期待されるものや「通常」とされるものとは異なる、もっともらしいものの完全な作り話を回答することです。つまり、曖昧な情報の解釈には優れているものの、答えが正しいと考える理由を説明できないため、出力が正しい保証はなく、非常にもっともらしい誤情報となる場合があります。

一方、記号AIは構造が明確なタスクに適しており、学習データを必要とせず、検出結果が正確である理由を説明できます。記号AIはルールとロジックを組み込み、それらを使って分析し、答えを判断します。ルールがシステムに組み込まれているため、どのように答えにたどり着いたのかも説明できます。ただし、曖昧な状況への対応は苦手です。

ハルシネーションを防ぐため、Snykは生成MLと記号AIを組み合わせます。ソースコード生成に最適化されたSnyk独自の生成モデルを使い、生成されたコードに問題がないかを記号AIで確認します。エンドユーザーは、問題を修正するコードを自動的に受け取り、その修正によって新たな問題が持ち込まれないことも確認できます。