今日から始めるセキュリティ対策 〜Dependency Analytics〜

こんにちは、Red Hatでソリューションアーキテクトをしている石川です。 今回はアプリケーション開発者の方向けに簡単に使うことができるセキュリティツールをご紹介したいと思います。

昨今、アプリケーションの多くはOSSとして提供されているパッケージを利用しており、効率的にアプリ開発を行うためにもこうしたパッケージの重要度は非常に大きいと言えます。 一方でアプリが依存しているパッケージに脆弱性が見つかれば、アプリそのものにもセキュリティのリスクが及び得ることにもなります。 こうしたパッケージの脆弱性は、SCA(Software Composition Analysis)と呼ばれるツールや、一部のコンテナスキャンツールにて検出が可能となるため、開発ライフサイクルの中の適切なタイミングで脆弱性の診断/修正を継続的に実行していくことが重要と言えるでしょう。

Dependency Analytics

Dependency AnalyticsはRed HatがOSSとして提供しているセキュリティ診断のプラグインツールで、Red Hat CodeReady WorkspacesやVisual Studio Codeなどのコードエディタで使用することができます。
Dependency AnalyticsはSnyk社が提供している脆弱性データベースであるSnyk Intel Vulnerbility Databaseの情報を元に、アプリの依存関係(Dependency)において脆弱性を含むパッケージの検出や修正のサポートを実施してくれます。
また脆弱性に関わる情報だけでなく、使用しているパッケージがどういった種類のOSSライセンスで提供されているかを特定し、コンフリクトの発生等を検知し表示してくれます。

Dependency Analyticsは現在以下の言語に対応しています。
・Java
・Node
・Python
・Golang

Dependency Analyticsの使い方

VSCodeを利用している場合、一般的なプラグインと同様に以下のページからインストールを行うことができます。 marketplace.visualstudio.com

OpenShift上でRed Hat CodeReady Workspacesを利用している場合、デフォルトでインストール可能なプラグインとして登録されているため、こちらも簡単に使い始めることが可能です。

Dependency Analyticsで診断を実行する前提条件として、開発環境のPATHに以下が登録されている必要があります。 診断対象とする言語に合わせてこれらのバイナリを登録しておきましょう。
mvn(Java)
npm(Node)
python(Python)
go(Golang)

使い方として、まずエディタから診断対象とするリポジトリを開き、パッケージの依存関係を記述しているファイルを開きます。
pom.xml(Java)
package.json(Node)
requirements.txt(Python)
go.mod(Golang)

f:id:jpishikawa:20220125111211p:plain

例えばNodeアプリケーションのpackage.jsonを開くと、dependencies以下にこのアプリで利用しているパッケージの一覧が記載されています。

表示されたパッケージのうち、バージョンの部分に赤い波線が付いているものをマウスオーバーすると、そのパッケージに含まれる脆弱性の概要を表示できます。
f:id:jpishikawa:20220125111235p:plain
ここで更に"クイック フィックス"を選択するとパッケージのバージョンを脆弱性修正済みのバージョンに簡単に書き換えることも可能です。 このプラグインのサポートにより、普段の開発作業の中でなるべく手間をかけずに脆弱性対応していくことが可能となります。

またDependency Analyticsではより詳細な脆弱性レポートを表示することもできます。
f:id:jpishikawa:20220125111252p:plain

ここでは各パッケージに含まれる脆弱性の深刻さを評価するCVSSの値や、脆弱性IDについての情報を確認することができます。
このレポートではSnyk社が管理している一意の脆弱性IDが表示されますが、リンクをクリックするとSnyk社のページに飛び、脆弱性の詳細情報や一般的なCVEとの紐付けを確認することも可能です。
こうした機能を活用することでパッケージに含まれる脆弱性の詳細を確認しつつ、それらに対し適切な対処を取ることができるようになります。

まとめ

今回はDependency Analyticsについてご紹介しました。
昨今のトレンドとして、開発の段階からアプリのセキュリティを担保していくセキュリティのシフトレフトの動きが広がりつつあります。 脆弱性からアプリを保護していくという上では非常に重要なことではありますが、一方でセキュリティ担保の取り組みが開発者にとって負担にならないような仕組み作りもシフトレフトを行う上での大事なポイントと言えるでしょう。
脆弱性を検知するためのツールは世の中に多くありますが、導入のし易さや、使い易さという観点からDependency Analyticsは有効な手段の一つではないでしょうか。 ご興味湧いたら是非お試し下さい。

* 各記事は著者の見解によるものでありその所属組織を代表する公式なものではありません。その内容については非公式見解を含みます。