Skip to main content

Snyk at RSAC 2021 — SASTにおける機械学習:気をそらすものか、革新か

著者

Tony Sleva

social security video

2021年6月30日

0 分で読めます

機械学習という言葉には、さまざまな意味合いが含まれています。テクノロジーの進歩に大きな可能性をもたらす一方で、単なるパターン認識を誇張したマーケティング用語として使われることも少なくありません。そのため、既存のテクノロジーに機械学習を応用することで新たな可能性が切り開かれるのか、それともライセンスの販売促進に使われるだけなのか、見極めるのがますます難しくなっています。Snyk Codeのプロダクトマーケティングを担当するFrank Fischerは、RSAC 2021の講演SASTにおける機械学習:革新か、気をそらすものかで、この問題を取り上げています。

静的アプリケーションセキュリティテスト(SAST)は、実行されていないソースコードからセキュリティ上の脆弱性を検出するテクノロジーです。SASTの目的は、ソフトウェア開発ライフサイクル(SDLC)の可能な限り早い段階で、脆弱性を迅速に見つけることです。分析にソースコードを入力として使うため、シンボリックAIを適用するのに最適です。SASTツールはコードベースにルールを適用して、問題のある箇所を特定できます。

最近、GitHub Copilotが大きな話題になっています。このソリューションは機械学習モデルを基盤としていますが、基盤となるコードをより深く理解しているようです。ソーシャルメディアで共有されている例を見ると、驚くほど的確な提案をすることもあれば、聞いたことのある文を繰り返すオウムのように振る舞うこともあります。これは、現在できることと、その限界を示しており、RSACの講演の要点を改めて裏付けるものです。

SASTは長年使われていますが、大きな革新はなく、改善は少しずつにとどまってきました。精度は着実に向上してきたものの、その代償として計算負荷も増大しています。そのため、健全性(誤検知がないこと)と完全性(脆弱性を見逃さないこと)を両立するスキャンは、完了までに数時間、場合によっては数日かかります。さらに、SASTツールは問題の検出には優れていても、実行可能な解決策の提示は苦手なことがよくあります。では、機械学習によってSASTに必要な革新をもたらし、スピード、精度、実用性を高められるのでしょうか?

その問いに答えるには、まずSASTツールの仕組みを理解することが重要です。脆弱性を検出するために、SASTツールには悪意のあるパターンを見つけるルールや手法を集めたナレッジベースが必要です。このナレッジベースは、脆弱性を調査し、シンボリックAIとして新しいルールを追加する専門家が保守しなければなりません。ナレッジベースの管理は、まだ自動化できません。しかし、機械学習によって改善することはできます。

オープンソースで利用できる膨大な数のソースコードリポジトリに機械学習を適用すれば、SASTのナレッジベースを保守する専門家は、検出できる脆弱性の数を飛躍的に増やせます。何十億行ものコードから学習することで、健全性と完全性を大幅に向上させられます。これこそが革新です。

しかし、より多くの脆弱性を検出できるだけなら、それは革新ではなく単なる改善に思えるかもしれません。本当の革新は、機械学習を活用してコード修正を自動化することです。機械学習は検出だけで終わらせず、脆弱性への修正にも適用する必要があります。SASTに機械学習を適切に適用すれば、誤ったパターンを検出するだけでなく、解決に適した正しいパターンも判断できます。これこそが革新です。

機械学習がもたらすもう一つの革新は、大規模環境でも精度と実用性を高められることです。日々、GPUなどの計算能力は向上し、アルゴリズムは進化し、GPT-3やGitHub Copilotなどの事前学習済みモデルも増えています。これらによって、必要な規模で機械学習を実行し、スキャン時間を数分に短縮できます。

これらを踏まえ、Frankは、機械学習がSASTの分野に実際に革新をもたらし、速度、精度、実用性を高めると結論づけています。しかし、革新を実現できる一方で、不完全な導入は本質を見失わせることもあります。次に導入するSASTを検討する際は、以下の点を確認しましょう。

  • 現在お使いのSASTには、すでに何らかの形で機械学習が活用されていますか?活用されていない場合、ロードマップには含まれていますか?機械学習は検出と修正の両方に活用する必要があります。どちらか一方でもロードマップに含まれていなければ、そのSASTでは不十分です。

  • お使いのSASTは、すでに実行可能な解決策を提示できますか?また、開発者が使うツールから直接利用できますか?そうでなければ、機械学習を適用しても解決策を提示できず、脆弱性の検出数が増えるだけです。開発者の作業が増え、導入率も低下します。

  • お使いのSASTは、自動化されたパイプラインに直接統合できますか?できない場合、機械学習の実装がどれほど優れていても、ボトルネックは残ります。関連する情報として、Snykの最新レポートクラウドネイティブアプリケーションセキュリティの現状では、完全に自動化されたチームの72%が、重大な脆弱性を1週間以内に修正していることがわかりました。機械学習を活用すれば、この割合をさらに高められます。

SASTにおける機械学習について詳しく知るには、RSAC 2021の講演全編をご覧ください。スピード、精度、実用性をすでに備えたSASTツールをお探しなら、登録してSnyk Codeを無料で使い始めましょう。

CTFを始めよう

オンデマンドのバーチャル入門ワークショップで、CTFチャレンジの解き方を学びましょう。