概要
部内で「OSS」「脆弱性対策」の話題となり、OSS管理・脆弱性管理について検討しました。
「OSS管理」「脆弱性管理」「SBOM」のキーワードでどのようなサービス・ソリューションがあるかなど社内外でヒアリングを行い、
挙がったサービスについて比較・検討を行いました。
今回は「OSSとは・脆弱性とは何か」と言うところから、各サービスについてまとめたので紹介いたします。
OSSについて
OSSとは「オープンソースソフトウェア(Open Source Software)」の略称で、ソースコードが公開されており、誰でも自由に閲覧、改変、配布することが可能なソフトウェアのことを指します。
オープンソースのプロジェクトでは、多くの開発者が協力してソフトウェアの開発や改善がされます。
OSSの逆の概念は「プロプライエタリソフトウェア」と言います。
OSSの特徴
- ソースコードが公開されており、自由に使用、修正、ものによっては再配布ができる
- コントリビュータ(貢献者)として、OSSの開発・改善に誰でも携われる
OSSの例
- Linux:Linuxのソースコード
- Apache HTTP Server:Apacheのソースコード
プロプライエタリソフトウェアの例
- Windows:WindowsのHP
- Photoshop:PhotoshopのHP
脆弱性について
脆弱性とはソフトウェアやシステムに存在する欠陥や不備のことです。
今回検討にあたって脆弱性を2種類に大別し、主に「システム内で使用するソフトウェアの脆弱性」について、比較・検討を行いました。
システム内で使用するソフトウェア(パッケージ)の脆弱性
ソフトウェアで脆弱性が発覚した場合、CVEという脆弱性のリストに脆弱性の説明、危険度、対策されているバージョンの情報などが記録されます。
プロプライエタリソフトウェアでは、脆弱性が発覚したら対処方法を利用者に通知したり、パッチを自動的に適用するなどの対応がとられます。
例)WindowsのOSセキュリティパッチ
OSSでは、ソースコードが公開されているゆえに、影響範囲が絞れず、プロプライエタリソフトウェアのような対応ができません。
→OSS利用者は使用しているOSSの把握と、脆弱性情報の察知が必要になります。
システムの脆弱性
開発したシステムにおいて、権限のないユーザーが取得できないはずのデータが取得できてしまう、といった、主にシステムの実装方法によって発生する脆弱性を指します。
ユーザの入力値の取得〜SQL実行までの実装方法を工夫する、ファイルの取り扱い方を工夫するなどで、対策が可能な脆弱性です。
→セキュアな実装方法の定義・周知と、テストでの検知が必要になります。
管理対象のシステムについて
今回サービス・ソリューションを検討するにあたって、社内の下記のようなシステムを対象に、検討を行いました。
- ホスト(VM)、コンテナを利用している。
- アプリは.NETと、PHPで実装されている。
- OSSのパッケージを利用している。
脆弱性管理サービスについて
調査した脆弱性管理のソリューション・サービスについて、
パッケージの脆弱性について3つの領域の内、どの領域の脆弱性管理をサポートしているか、
また、システムの脆弱性の管理もできるのか、という観点で表にまとめました。
| 対象の脆弱性 | yamory | C1CS | MDE | NewRelic | VOCS | GitHub |
|---|---|---|---|---|---|---|
| コンテナ内パッケージの脆弱性 | 〇 | 〇 | × | × | 〇 | 〇 |
| ホスト内パッケージの脆弱性 | 〇 | × | 〇 | × | × | × |
| アプリライブラリの脆弱性 | 〇 | × | × | △ | × | 〇 |
| システムの脆弱性 | × | × | × | △ | × | 〇 |
下記に各サービスについての特徴と、求めていたものとマッチした点、アンマッチだった点について紹介します。
yamory
転職サイトbizreachなどの「株式会社アシュアード」が提供する、国産の 脆弱性管理クラウド です。
脆弱性のスキャンを実行できるワンライナーのコマンドが用意されており、脆弱性を検知したいホストやコンテナのイメージ作成時にコマンドを実行すると、その場で脆弱性の有無・件数を確認でき、
yamoryのWebサービス上で脆弱性の情報を閲覧することができます。
自動化も可能で、CI/CDなどに組み込んでコミット時や、プルリクエスト作成のタイミングなどに、脆弱性スキャンを自動的に行うことも可能です。
マッチした点
- コンテナ・ホスト・アプリライブラリとパッケージに係る脆弱性は全てサポートしており、対応言語・対応OSも主要なものは抑えられている
- トリアージレベル・脆弱性カテゴリなどで脆弱性が分類されており、アプリごとの特性・組織のポリシーなどに合わせて、優先的に対処すべき脆弱性が判断しやすい
アンマッチだった点
- 一番安価なプランだと、Windowsホストの脆弱性スキャンができない
- IP制限などのセキュリティ機能が一番高価なプランでのみしか使えない
GitHub Advanced Security
GitHubで利用できる ソースコードの脆弱性チェック機能 です。
リポジトリにあるソースコードをスキャンし、ソースコード中で利用しているパッケージについて、脆弱性の有無をチェックすることができます。
CI/CDフローの中でパッケージの脆弱性スキャンを行い、「依存関係グラフ」と言う形で閲覧可能です。
Dependabot機能を使って、依存関係グラフにあるパッケージに脆弱性が見つかった際にアラートを発砲することができます。
また、システムの脆弱性スキャンもでき、レビュー時やシステムのデプロイ前にSQLインジェクションなどの脆弱性の有無を確認することができます。
マッチした点
- すでにGitHub・Azure Reposなどを利用している場合、導入が容易
- パッケージ脆弱性の対処をするためのソースコード改修案を作成するところまで自動でできる
アンマッチだった点
- 課金がリポジトリへのコミッター数/月あたりの課金となるため、複数のプログラマがいるプロジェクトだと高価になりやすい
- ホストの脆弱性は管理できない
NewRelic Vulnerability Management
現在は「Security RX」という名称になっています。
ここでは、「NewRelic Vulnerability Management」について記載を行います。
NewRelic上で利用できる脆弱性管理機能です。
NewRelicが利用できる環境であれば、追加料金なしで利用することができます。
マッチした点
- すでにNewRelicを利用している場合、導入が容易
アンマッチだった点
- .NETには非対応
「Security RX」でも依然非対応・・・
Security RX integrations overview
Cloud One Container Security(C1CS)(URLのみ紹介)
Container Securityとは - Container Security | Trend Micro Cloud One™ ドキュメント
Microsoft Defender for Endpoint(MDE)(URLのみ紹介)
Vision One Container Security(VOCS)(URLのみ紹介)
最後に
脆弱性管理にあたって脆弱性管理について「どのようなサービスがあるか」と言うところから調査しましたが、
これらのサービスをどのように使うかが重要になると思います。
これらのサービスについて、実際に運用してみた結果がありましたらまた記事にしたいと思います。
本記事の内容について、
誤りやその他のサービスのご紹介・運用方法の参考例などありましたら、ご指摘いただけますと幸いです。
最後まで閲覧いただきありがとうございました。