Skip to main content

オープンソースセキュリティのランタイムモニタリングを発表

著者
Headshot of Aner Mazur

Aner Mazur

Introducing open source security runtime monitoring Featured

2018年11月12日

0 分で読めます

Snykはこのたび、アプリケーションセキュリティのランタイムモニタリングソリューションの最初の機能をリリースしました。開発者は、オープンソースコンポーネントの実行時の実際の挙動を監視できます。

現在、SnykをプロジェクトのリポジトリやCIサイクルに連携すると、オープンソースの依存関係を分析し、脆弱な依存関係を検出して修正方法を提案できます。Snykは、脆弱性の修正を簡単にし、開発ワークフローに組み込めるよう尽力しています。たとえば、修正用のPRを自動作成したり、アップグレードできない場合にパッチを提供したりします。

修正が比較的簡単でも、多くの開発者や組織には対処すべき脆弱性が大量に残っている可能性があります。優先順位付けに役立つ情報はどんなものでも有用です。脆弱性の優先順位を決めるうえで重要なのは、脆弱な依存関係が実行時に実際に使用され、悪用可能な状態にあるかどうかを判断することだと考えています。静的コード解析によってこれを実現しようとする手法も市場にはあります。主な問題は、誤検知と見逃しが多いことです(たとえば、コードが動的に呼び出される場合や、特定の入力があったときにのみ実行される場合など)。

Snykは、アプリケーションの実際の実行時の挙動を監視し、プロジェクトの依存関係にある脆弱な関数が呼び出されたことを正確に示すソリューションを提供します。

アプリケーションへのパフォーマンスへの影響を最小限に抑えるため、多大な努力を重ねており、今後もテストを続けます。現在、ランタイムソリューションはクローズドベータとして早期アクセスを提供しています。お試しになりたい場合は、runtime@snyk.ioまでメールでご連絡ください。

実行時の呼び出しデータに基づいて脆弱性の優先順位を決定

エージェントを正しくインストールし、監視対象のアプリケーションの実行中インスタンスを計測すると、課題の詳細カードにインジケーターが表示されます。監視対象のアプリケーションインスタンスで、脆弱な関数が最近呼び出されたかどうかを確認できます。脆弱性はまず実行時に呼び出されたかどうかで並べ替えられ、その後、深刻度で並べ替えられます。また、脆弱な関数の名前とパスも表示されます。これにより、アプリケーションのどの部分がその関数を使用しているかを把握しやすくなり、トリアージを簡素化できます。脆弱な関数が最後に呼び出されてからの経過時間も表示されます。

stモジュールに中程度の深刻度のディレクトリトラバーサル脆弱性があることを示すセキュリティレポート。バージョン0.2.5へのアップグレードが修正策として提示されています。

監視対象のアプリケーションインスタンスが複数実行されている場合は、プロジェクトのメタデータの右下に、監視中のインスタンス数が表示されます。

バージョン8.12.0、脆弱性5件、依存関係464件、ソースCI/CLI、監視対象のアプリインスタンス1件を表示したプロジェクトスナップショットダッシュボード。

Node.jsを使い始める

Node.jsアプリケーションの監視を開始するには、プロジェクトフォルダでnpm install @snyk/nodejs-runtime-agentを実行して、@snyk/nodejs-runtime-agent依存関係をプロジェクトに追加し、できるだけ早くアプリケーションの起動処理で設定する必要があります。以下に設定例を示します。

require('@snyk/nodejs-runtime-agent')({
projectId: '0462e42b-c92f-4b48-bac8-81eb3ff7f43e',
});
const express = require('express');

上記のコード例では、他のrequire文より前に@snyk/nodejs-runtime-agent依存関係を読み込んでいます。これにより、すべての依存関係をエージェントが検査し、アプリケーションが脆弱な関数を呼び出したときにエージェントへ通知する実行フックを作成できます。

エージェントは、snyk.ioで監視するプロジェクトのIDを指定して設定します。プロジェクトIDはAPIから取得するか、snyk.ioのプロジェクト設定ページで確認できます。

詳しくは、ランタイム保護のインストールに関するドキュメントをご覧ください。

Javaを使い始める

Javaアプリケーションの監視を開始するには、Java用ランタイムエージェント(.ZIP)をダウンロードし、アーカイブを解凍してください。

  1. snyk-java-runtime-agent.jarをアプリケーションと同じ場所にコピーします。

  2. エージェントのjarファイルと同じ場所にsnyk-agent.propertiesファイルを作成し、次のようにSnykプロジェクトのプロジェクトIDを記述します。projectId=0462e42b-c92f-4b48-bac8-81eb3ff7f43e.

  3. アプリケーションの起動に使用するJavaコマンドに、コマンドライン引数としてエージェントを追加します。例:java -javaagent:path/to/snyk-java-runtime-agent.jar -jar my-app.jar.

    - Apache Mavenを使用している場合は、環境変数MAVEN_OPTSに-javaagent:path/to/snyk-java-runtime-agent.jarを追加します。

    - GlassFishなどのJavaEEコンテナを使用している場合は、JVM Optionsを見つけ、オプションとして-javaagent:path/to/snyk-java-runtime-agent.jarを追加します。

近日公開

皆さまからのフィードバックを集めた後、今後数週間以内にランタイム製品をクローズドベータから正式リリースする予定です。

次の展開は?実行時におけるオープンソースコンポーネントの悪意ある挙動を監視し、その結果をソースコードのスキャン結果と関連付けることで、既知・未知の脆弱性を含め、アプリケーションのライフサイクル全体にわたるオープンソースセキュリティを開発者自身が担えるようになります。アプリケーションを実行時に計測することで、本日リリースしたランタイムベースの脆弱性優先順位付けにとどまらず、さまざまな機能を実現できます。これらの機能は今後数か月以内に提供予定です。ご期待ください。

CTFを始めよう

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