Snykで脆弱性の優先順位付けと修正を行う5つの方法
Josefa Riveros
2020年2月18日
0 分で読めますこのたび、レポートの表示や操作方法を一部更新し、会社にとって有益なアプリケーションセキュリティレポートを、さらに簡単に作成できるようになりました。
混乱した状況を整理するのに苦労していませんか?
新しい家に引っ越して、「組み立て式」の家具を買ったとしましょう。組み立てなんて簡単ですよね? 箱を開けると、無数のネジやワッシャー、見慣れないプラスチック部品が出てきます。「これは家具の部品? それとも箱の一部?」と、ひとりで考えます。目の前に広がる部品の山に、だんだん途方に暮れてきました。そこで、ふと思い出します。そんなに身構える必要はありません。説明書があるのです! 力仕事をして(何度か間違えながらも)、ついに完成。達成感に浸りながら、ゆっくりとくつろぎます。
プロジェクトの脆弱性を修正する際、多くのお客様がまさに同じような気持ちを経験しています。しかし、この場合は説明書がありません。チームごとに優先事項が異なるからです。さまざまなテストを実行し、脆弱性の山を前にして、「この脆弱性は本当にリスクになるのか、それとも後回しにしてもよいのか?」と考えます。また、途方に暮れてしまいます。
いったい何から始めればよいのでしょう? チームが前に進み、同じような「やった!」という達成感を得られるように、脆弱性の優先順位をどう付ければよいのでしょうか?
お客様はレポートをとても工夫して活用し、脆弱性の山を、管理しやすく、誇りに思える形に変えていることがわかりました。そこで製品開発の一環として、レポートをどのように活用しているのかを伺い、何が効果的なのかを学びました。
唯一の正解となる手順はありませんが、会社の脆弱性に優先順位を付け、脆弱性の数を減らすのに役立つ、実績ある方法はいくつかあります。お客様から伺ったアイデアをいくつかご紹介します。
開発者向けに優先順位を付けたリストを作成する
11月には、プロジェクトの結果から得られたエクスプロイトの成熟度データを公開し、すぐに多くのお客様に活用いただくようになりました。現在は、レポートの「Issues」タブでもエクスプロイトの成熟度でフィルタリングし、実際にエクスプロイトが確認されている(私たちが「成熟」と呼ぶ)脆弱性がプロジェクトに存在するかを特定できます。既知のエクスプロイトがある脆弱性は、ないものよりもリスクが高いため、優先的に対処する必要があります。
「Issues」フィルターでは、次の項目で絞り込めます。
Issue type — 「Vulnerabilities」を選択し、セキュリティに絞り込む
Exploit maturity — 「Mature」を選択し、プロジェクト内の最もリスクの高い問題に絞り込む
Status — 「Open」を選択し、まだ対処していない脆弱性に絞り込む
Fixable — パッチやアップグレードで修正できる脆弱性に絞り込む
さらに実用的な情報を得るには、対象を絞り込むことをおすすめします。最上位の「Filters」リストで「High Severity」を、「Issue filters」で「Fixable」を選択します。こうすれば、開発者が比較的簡単に修正できる、最もリスクの高い脆弱性にチームで集中できます。重大度を「High」にし、「upgrade」または「patch」で絞り込むと、修正可能で重大度が高く、チームにとって迅速かつ大きな効果が期待できる脆弱性を含むプロジェクトの一覧が表示されます。このリストをチームで共有し、最初に対処すべき脆弱性を明確にしましょう。

すばやく対処するための並べ替え
フィルターを適用しても、まだリストが膨大に見えるかもしれません。ご心配なく。さらに対象を絞り、優先順位を付けられます。グループ化されたIssuesの表示に切り替え、「projects affected」で並べ替えると、組織全体で最も多く見られる修正可能な脆弱性がわかります。影響範囲が最も広い問題の修正に集中できます。

このリストは「Summary」タブからも開けます。重大度の高い問題の件数の下にあるテキストをクリックすると、「Issues」タブがフィルター適用済みの状態で表示されます。あとは「projects」列を並べ替えるだけです。
重大度の高い問題への対処が終わったら、次は中程度の問題に取りかかりましょう。

危険な脆弱性を狙い撃ちし、データ侵害を防ぐ
次のevent-streamやリモートコード実行の脆弱性が見つかった場合、修正されないまま過ぎる1分1秒が重大です。しかし、影響を受けるプロジェクトをすべて洗い出すのは、非常に骨の折れる作業です。
「Issues」タブの「Search issues」フィールドで、特定のCVE(CVE-2018-11776)、CWE(CWE-20)、またはIssue type(たとえば「struts」)を検索すると、影響を受けるプロジェクトの数を確認できます。グループ化されていないIssueを表示をクリックすると、プロジェクトごとにIssueが表示されるため、連絡すべきチームを特定できます。

お客様はこの方法を優先順位付けに活用し、特定の脆弱性への対処に集中しています。緊急の侵害対応だけでなく、日々の業務でもこの方法で特定の脆弱性に取り組んでいることがわかりました。
たとえば、組織内の任意コードインジェクションの脆弱性をすべて修正するようチームに依頼できます。すべて対応し終えたら、チームで成果を祝い、次の脆弱性に取りかかりましょう。
脆弱性を期限内に修正する
理想的には、組織内で脆弱性が30日を超えて未対応のまま残ることはないでしょう。しかし、いつもそうとは限りません。脆弱性はすぐに蓄積し、気が付けば90日、180日、365日も未対応のものが出てくることがあります。
「Summary」タブの「Exposure window」グラフを見ると、組織内の脆弱性が未対応のままどれくらいの期間残っているかをひと目で確認できます。

「Issues」タブを開き、タブ内でグループ化されていないIssueをクリックすると、組織内の脆弱性が検出された日付を確認できます。この列を昇順に並べ替えれば、ポートフォリオ内で最も古いIssueがわかります。さらに、「Open」のステータス、「Upgrade」と「Patch」で修正可能な項目、「Vulnerability」のIssue typeなどで絞り込むと、長期間残っている修正可能な脆弱性を特定できます。まず最も古いIssueの解消に取り組むよう、開発チームに促しましょう。

これらのIssueに対処していくと、「Exposure window」グラフにも変化が表れ始めます。
最も重要なプロジェクトから優先的に取り組む
チームにとってビジネス上重要なアプリケーションを構成する特定のプロジェクト群に集中するには、「Projects」ドロップダウンから該当するプロジェクトを選び、「Filters」リストから任意の項目を選択します。これにより、レポートエリアを構成するさまざまなタブを移動しながら確認できます。特定の脆弱性の優先順位付けに集中したり、依存関係の健全性(非推奨パッケージの確認など)や、そのプロジェクト群のライセンス分析を詳しく調べたりできます。

フィルターのその先へ
ここでご紹介したのは、プラットフォーム上で直接作成できるレポートのほんの一例です。「Issues」タブの情報はPDFでエクスポートして同僚と共有できます。また、すべてのレポートタブのデータをCSVやAPI経由でエクスポートすれば、独自のレポートツールとの連携や、より複雑なレポートの作成にも活用できます。
まずは使ってみましょう
レポート機能は、Snyk Standard、Pro、Enterpriseのプランでご利用いただけます。すぐに始められます。皆さんのヒントや活用方法もぜひお聞かせください。
フィルタリングを活用して、安全を守りましょう!
CTFを始めよう
オンデマンドのバーチャル入門ワークショップで、CTFチャレンジの解き方を学びましょう。



