
このラボでは、セキュリティチームが行うように、よく知られた実際の脆弱性のトリアージを実践することを目的としました。CVE の詳細を読み、CVSS スコアを理解し、状況に応じて実際のリスクがどの程度かを考えるという流れです。
National Vulnerability Database(NVD)にアクセスし、CVE を調べました。
https://nvd.nist.gov/vuln/search#/nvd/home?resultType=records
CVE-2021-26855 を検索し、結果ページを開きました。
説明を一通り読んだ後、実際に何がリスクにさらされているのかを理解するために、いくつかの基本的な問いに答えました。
ページに記載されている CVSS スコアとベクター文字列を確認しました。
ベクター文字列を一つずつ確認し、各部分が実際に何を意味するのかを見ていきました。
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
基本的に、これは攻撃者がこの脆弱性を悪用するのに資格情報やユーザー操作を必要とせず、悪用された場合には機密性・完全性・可用性が完全に損なわれる可能性があることを意味します。この組み合わせが、この CVE が当時、非常に深刻で活発に悪用された脆弱性として扱われた大きな理由の一つです。
NVD ページの Weakness Enumeration(CWE)セクションを確認し、これが実際にどのカテゴリの弱点に該当するのかを調べました。
記載されていた CWE は CWE-918: Server-Side Request Forgery(SSRF) です。平たく言うと、サーバーがどこか別の場所からの URL やリクエストを取得する際に、リクエストが本来の宛先に正しく送られているかを適切に検証せずに取得してしまうという意味です。
この脆弱性を、2 つの異なるシナリオの下でリスクが高いと判断するか、低いと判断するかを考えました。
シナリオ 1: 脆弱なソフトウェアが稼働しており、到達可能である。
リスクは高い。この脆弱性により、攻撃者は自分のものではないメールボックスやファイルにアクセスし、システム上でコードを実行したり変更を加えたりすることができます。
シナリオ 2: 脆弱なソフトウェアが、電源が切れて到達不能なマシンにインストールされている。
リスクは低い。電源もネットワーク接続もない場合、攻撃者がサーバーに到達して脆弱性を悪用する方法はそもそも存在しません。
この演習は、CVE の深刻度スコアだけが全体像ではないことを改めて認識させてくれました。実際のリスクは、脆弱なシステムに到達可能かどうかといった状況にも依存します。オフラインのマシンにある致命的な脆弱性は、稼働中のインターネットにさらされたサーバーにある同じ脆弱性とは、リスクが大きく異なります。