Skip to main content

Snykの機械学習を活用したMerge Adviceで、確信を持って脆弱性を修正

fix vulnerabilities

2020年6月2日

0 分で読めます

脆弱性を確実に修正するためのSnykの修復機能をさらに強化する、Merge Adviceのベータ版をリリースしました。機械学習を活用したMerge Adviceにより、開発者はオープンソースの依存関係にあるセキュリティ脆弱性を、より確信を持って修正できます。

開発者が自信を持てるように

ブランチに破壊的変更を持ち込むリスクがあるため、マージボタンをクリックするのは、ロシアンルーレットのように感じられることがあります。パッケージをアップグレードするだけでも、その依存関係に依存するコードが壊れてしまう場合があります。

プルリクエストを安心してマージできることは不可欠です。そのため、脆弱性を取り除くために必要最小限の変更で済むよう、Snykの修正・アップグレード用プルリクエストの精度向上に継続して取り組んできました。たとえばセキュリティ修正では、常にプロジェクトと互換性のある、脆弱性のない最も低いバージョンを推奨します。Merge Adviceはこれをさらに発展させ、機械学習を活用することで、より多くの脆弱性を確信を持って修正できるようにします。

Snykが作成または経由して開始した、互換性のある各プルリクエストには、修正によって破壊的変更が発生する可能性があるかどうかを示すバッジが表示されます。開発者は、データに基づいてマージを判断するために必要な情報を得られるようになりました。

どのように機能するのでしょうか?

各PRに対するマージアドバイスの判断には、大量のデータ処理が行われます。

  1. 公開GitHubリポジトリと、Snykが監視するリポジトリの両方で、PRのアクティビティを追跡します。

  2. CIテストの結果、マージ率、PRのロールバックという3つの指標を測定します。

  3. 次に、機械学習によってPRのマージが成功するかどうかを予測します。

この処理の結果として、互換性のあるプルリクエストの上部にMerge Adviceバッジが表示されます。

Snykのマージアドバイスを説明する表。「成功の可能性が高い」と「レビューを推奨」のバッジ付き。

機械学習を活用した高精度な予測

Merge Adviceを支えるアルゴリズムは、マージ用プルリクエストが成功するかどうかを高い確度で予測できるよう設計されています。特定の依存関係をバージョンXからバージョンYにアップグレードする際のデータポイント数と、その観測分布の両方を考慮する統計モデルを使用します。信頼できる予測を行うためのデータが不足している場合、そのアップグレードに対するアドバイスは表示されません。

SnykのMerge Adviceが使用するモデルは、複数の指標を追跡する独自のアプローチを採用しています。

  • パッケージをバージョンXからYにアップグレードするCIテストスイートの合格率・失敗率

  • それらのアップグレードのマージ率

  • アップグレードがロールバックされた回数

これらの指標は、複数のデータソースにまたがって追跡されます。公開GitHubのアクティビティを記録・アーカイブし、さらなる分析に利用できるようにするプロジェクトGHArchiveを活用して、公開GitHubリポジトリのアクティビティを監視しています。もちろん、Snykユーザーが保護している現在75万を超えるリポジトリのデータも利用しています。

これらのデータソースを組み合わせることで、推論に使える豊富なデータセットが生まれ、Merge Adviceのモデルに統計的な深みが加わります。

マージするか、しないか。それが問題だ!

日々のGitHubワークフローでは、どのように表示されるのでしょうか。詳しく見てみましょう。

これまでどおり、SnykユーザーはSnykのUIから、特定の脆弱性または複数の脆弱性を修正するPRを手動で作成できます。また、既存の依存関係に新たな脆弱性が見つかった場合や、依存関係が最新でないと判明した場合には、Snykがプルリクエストを自動的に作成することもできます。

どのようなきっかけで作成された場合も、これらのプルリクエストに新しいMerge Adviceバッジが表示されるようになりました。バッジに表示されるアドバイスは、前述の予測分析モデルに基づいて変わります。

snyk-botによるadm-zipのアップグレードを示すGitHubのプルリクエスト。「Review recommended」というマージアドバイスのラベルを赤い矢印で強調しています。

さあ、修正しましょう!

Merge Adviceの目的は、オープンソースの依存関係を保護するためのプルリクエストをマージする際に、開発者がデータに基づいて判断できるよう支援することです。最適な結果を得られるよう、この機能を支えるアルゴリズムを継続的に改善しています。たとえば季節性などの要因は結果に影響するため、今後は計算にも反映していきます。

現時点では、Merge Adviceバッジは、Yarnおよびnpmパッケージで単一のパッケージをアップグレードする場合の、GitHubプルリクエストの一部のみに表示されます。ベータ版の改善を進める中で、より広範で詳細なサポートを提供していく予定です。今後のアップデートにご期待ください。

Merge Adviceは、Freeプランを含むすべてのプランで、すべてのユーザーにご利用いただけます。

快適なマージを!

CTFを始めよう

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

続きを読む

blog feature snyk container custom base recommendations
Blog

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

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

feature insights context
Blog

自律型攻撃はすでに始まっている。防御もそのスピードに追いつかなければならない。

自律型攻撃者によって、防御に使える時間は短くなっています。継続的な検出、修復、検証、予防で、セキュリティチームが攻撃に歩調を合わせる方法をご紹介します。

Blog

AIコーディングエージェントが不適切なアクセス制御を繰り返し実装する理由

AIコーディングエージェントは、コンパイルが通りレビューも通過する一方で、あるテナントのデータを別のテナントに公開してしまう認可ロジックを生成することがあります。不適切なアクセス制御が検出しにくい理由と、その防止策をご紹介します。