ゼロデイ攻撃[Microsoft SMBv3 の脆弱性 (CVE-2020-0796) ]とプロトコル実装の脆弱性

 2020.03.13  株式会社テリロジー 技術統括部

こんにちは。テリロジーのTです。

つい先日、WindowsのSMBv3プロトコルにリモートコード実行の脆弱性(CVE-2020-0796)が発見されました。

この脆弱性が悪用されることで、SMBサービスが有効になっているリモートシステムに対して、認証されていない遠隔の攻撃者が接続し、任意のコードを実行される可能性があります。

CVE-2020-0796の対象となるWindowsOSとバージョンは以下の通りです。

- Windows 10 Version 1903
- Windows 10 Version 1909
- Windows Server, version 1903 (Server Core installation)
- Windows Server, version 1909 (Server Core installation)

ゼロデイ攻撃となったMicrosoft SMBv3 の脆弱性 (CVE-2020-0796) 

FortinetによるとCVE-2020-0796の脆弱性は、「Microsoft SMBサーバーのバッファオーバーフローの脆弱性」と説明され、重大度レベルは高に指定されています。
この脆弱性を悪用することで、被害者から被害者に簡単に移動できる点からシステムを「ワーム化」可能です。

SMBのワームと聞くと2017年に話題となったランサムウェアの「WannaCry」や「NotPetya」が利用したような自己拡散能力を持つSMBワームを連想させます。

Fortinetからは2020/3/10に本脆弱性が公開されており、公開時点ではMicrosoftから修正パッチのリリースは行われておらず、ゼロデイ攻撃可能な状態となっておりました。

※現在(米国時間の2020/3/12)はMicrosoftから修正パッチがリリースされ、修正パッチの適用が可能になっています。

修正パッチの詳細は以下の通りです。

マイクロソフト株式会社
CVE-2020-0796 | Windows SMBv3 クライアント/サーバーのリモートでコードが実行される脆弱性

https://portal.msrc.microsoft.com/ja-JP/security-guidance/advisory/CVE-2020-0796

既にセキュリティの研究者たちによる実証デモなどが公開されており、CVE-2020-0796に該当する脆弱なマシンがクラッシュされた報告があるため、エクスプロイト(攻撃コード)が出回るのも時間の問題だと考えられます。

早急な修正パッチの適用を推奨いたします。

このような「プロトコルの脆弱性」について、最近ちょうど勉強したので、記事に書きたいと思います。

プロトコル実装の脆弱性について

そもそもCVEとは?

共通脆弱性識別子CVE(Common Vulnerabilities and Exposures)は、個別製品中の脆弱性を対象として、米国政府の支援を受けた非営利団体のMITRE社が採番している識別子です。


※引用:

www.ipa.go.jp

CVEとは脆弱性の識別番号で、以下の形式で採番されます。

CVE-[登録時の西暦]-[ユニークな番号]

米国のMITRE社が主にCVEを採番していますが、他にもApple社やAdobeなど
CNA(CVE Numbering Authorities、CVE採番機関)として認定された機関も
脆弱性を発見次第、CVEを採番しています。

プロトコルの実装の脆弱性

プロトコルの定義は、RFC(Request for Comments)により定められています。

RFCはIETF(Internet Engineering Task Force)による技術仕様の保存、公開形式のことで、
インターネットで用いられるさまざまな技術の仕様などについての文書としてまとめられています。

例えば、SSL3.0プロトコルはRFCに以下のように定義されています。

https://tools.ietf.org/html/rfc6101

CVEが採番されないケース

CVEプログラムにおいては、脆弱性を厳密には定義していません。

ほとんどの場合、何かを脆弱性であるかどうかを判断する際、CNAの独自の裁量に任されています。また、脆弱性により影響を受ける「製品」については、一般的な各企業が提供する製品だけでなく、標準規格、アプリケーション・プログラミング・インターフェイス(API)、プロトコルを含む広義の用語として扱われます。

脆弱性について、具体的には以下の定義に従います。

  • 製品の所有者が問題をその製品の脆弱性とみなす場合、他の関係者(たとえば、影響を受けるコードを共有する製品を持つ他のベンダー)に関係なく、問題は脆弱性と見なされます。
  • 問題が製品のセキュリティポリシーに違反しているとCNAが判断した場合、その問題は脆弱性と見なされる必要があります。
  • CNAがマイナスの影響を与える新しい脆弱性に関するレポートを受け取った場合、報告された脆弱性は脆弱性と見なされる場合があります。

例えば、HTTPなど暗号化を行なわないセキュアではないプロトコルがありますが、
HTTPで暗号化を行わない実装について、CVEは採番されていません。

CVEが採番されるケース

プロトコルの実装による脆弱性に対して、CVEが採番されるケース。

例として、2014年に流行したPOODLE(CVE-2014-3566)の脆弱性があります。
暗号化通信の一部を解読されてしまう恐れのある脆弱性です。

POODLEの具体的な内容は以下のとおりです。

SSL3.0を利用した通信ではブロック暗号のCBCモードを利用している
  ↓
CBCモードには暗号化の際、パディングが必要となる

  ↓
攻撃者によりパディングが改ざんされた場合、CBCの仕様上、パディングが改ざんされているか確認しません(オラクルパディング攻撃の際に話題になった)

  ↓

SSL3.0 の仕様ではパディング長がブロック長の範囲内かというチェックしかせず、残りのパディングの部分にどんな値が入っているかをチェックしていません
(末尾の値さえ正しければ正当なパディングがセットされていると判断)

 ⇒ここが問題!!

上記のように、攻撃される可能性のある仕様が問題となり、脆弱性として登録されました。このようにプロトコルの実装に問題がある場合、その仕様に対してCVEは採番され、プロトコル実装の脆弱性となります。

まとめ

つまり、CVEの採番については、

  • 何かを脆弱性であるかどうかを判断する際は、CNAの独自の裁量に任されています
  • CVEの対象となるのは、ソフトウェアやハードウェアだけでなく、標準規格やアプリケーションプログラミングインターフェイス(API)、プロトコルが含まれています
  • HTTPやFTPなど非暗号化プロトコル自体が安全ではないことは、CVEとしては採番されていません
  • プロトコルの実装に問題がある場合は、脆弱性としてCVEが採番されます

以上


RECENT POST「技術情報」の最新記事


技術情報

OCVS・Horizon構築してみた②

技術情報

Sumologicで目にするOpen Telemetry Collectorとは(中編)

技術情報

Sumo Logic アカウントを持っていないユーザへのダッシュボードの共有方法は?

技術情報

Sumo Logic ダッシュボードやフォルダ共有について

ゼロデイ攻撃[Microsoft SMBv3 の脆弱性 (CVE-2020-0796) ]とプロトコル実装の脆弱性