treedown’s Report

システム管理者に巻き起こる様々な事象を読者の貴方へ報告するブログです。会社でも家庭でも"システム"に携わるすべての方の共感を目指しています。

※https化しました。その影響でしばらくリンク切れなどがあるかもしれませんが徐々に修正していきます。 リンク切れなどのお気づきの点がございましたらコメントなどでご指摘いただけますと助かります。

Windows ServerのDNS Serviceに脆弱性

PC側のWindows Updateが一通り先週で完了したところで、Windows Server側のWindows Updateにも取り組み開始。
と思っていたら、結構重要な更新プログラムがリリースしているじゃないか、ということでご報告です。

Windows DNS Server(DNS Service)の脆弱性?

Windows ServerのDNS Serviceには脆弱性が存在しており、7月の更新プログラムでその脆弱性を対処することが推奨されています。

調べて見ると、どうやらWindows Server 2003から存在していた脆弱性だとの話もあり、うーん、そんな昔から気づかれることなくフツーに使われていたってことになるのかと、ちょっと驚き。
脆弱性はCVE-2020-1350が割り当てられ、KB4569509にてMSの解説が公開されています。

KB4569509: DNS サーバーの脆弱性に関する説明–2020-1350
https://support.microsoft.com/ja-jp/help/4569509/windows-dns-server-remote-code-execution-vulnerability

CVE-2020-1350 | Windows DNS Server Remote Code Execution Vulnerability
https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2020-1350

Microsoft Security Response Center:Windows DNS サーバーの脆弱性情報 CVE-2020-1350 に関する注意喚起
https://msrc-blog.microsoft.com/2020/07/14/20200715-dnsvulnerability/

調べて見て、思ったこと

「Microsoft Security Response Center:Windows DNS サーバーの脆弱性情報 CVE-2020-1350 に関する注意喚起」での記載によれば、ワーム可能な脆弱性であり、深刻度は緊急、しかしこれはいつもの深刻度=緊急よりも深刻な緊急なんじゃないかという感じもします。
ワームって、感染したノードがネットワーク内に存在しているだけですぐ拡散してしまいます。これは深刻そう。

とはいえ、Windows ServerのDNSしか影響を受けない脆弱性なので、世の中で使われている(Windowsではない)DNSサーバはほとんど問題にはなりません。
ただこれは設置場所の問題ではないので、DMZにWindows Serverを配置して、外向けのDNSサーバとして利用しているような環境であれば、注意は(加えて迅速な対処も)必要に思います。

あと、「KB4569509: DNS サーバーの脆弱性に関する説明–2020-1350」に回避策が掲載されているのが目に付きました。
即日のうちに更新プログラムの適用が困難な環境のために、レジストリベースでの回避策が用意されているということのようです。

回避策は?

回避策は、
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DNS\Parameters
にあるキー「TcpReceivePacketSize」のサイズを既定の「0xFFFF」から推奨値の「0xFF00」に変更すること。

f:id:treedown:20200716174417p:plain
うーん、キー「TcpReceivePacketSize」が見当たりません。
作成すればいいのか?
--------------------------------------------------------------
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DNS\Parameters" /v "TcpReceivePacketSize" /t REG_DWORD /d 0xFF00 /f
--------------------------------------------------------------
でレジストリキーを作成し、サービス再起動(OSは再起動しなくてもOK)

net stop DNS
のあと
net start DNS

で再起動完了。

コマンド実行後にはこのようなキーが生成されています。

f:id:treedown:20200716174446p:plain

更新プログラムの適用が急いでできないケースや、OS再起動をすぐにできない場合にはサービス再起動だけで済むのでよさそうな回避策です。

ただし、前出「KB4569509: DNS サーバーの脆弱性に関する説明–2020-1350」の記載にあるように、(以下抜粋)
--------------------------------------------------------------
回避策が実装された後、上流のサーバーからの DNS 応答が65280バイトより大きい場合、Windows DNS サーバーはクライアントの DNS 名を解決することができなくなります。
--------------------------------------------------------------
という注意点が。加えて「この回避策に関する重要な情報」に記載のある(以下抜粋)
--------------------------------------------------------------
推奨値を超える TCP ベースの DNS 応答パケットは、エラーが発生することなく、削除される可能性があるため、一部のクエリが応答しない可能性があります。 予期しないエラーが発生する可能性があります。 この回避策は、前の解決策 (65280 バイト以上) で許可されている TCP 応答が有効である場合にのみ、この回避策により、DNS サーバーに悪影響を与えます。

制限された値は、標準的な展開や再帰クエリに影響を与えることはありませんが、標準以外の用途を特定の環境に存在させることはできません。 この回避策でサーバーの実装が悪影響を受けるかどうかを判断するには、診断ログを有効にし、一般的なビジネスフローの代表となるサンプルセットをキャプチャする必要があります。 次に、anomalously サイズの大きい TCP 応答パケットの存在を特定するためにログファイルを確認する必要があります。
--------------------------------------------------------------

という記載があるので、注意が必要のようです。DNSパケットのバイト数がそうそう大きくなることはないとは思いますが。

根本的な解決策はやはり更新プログラム

更新プログラムの適用が一番の解決策になります。やはり根本的に対策するにはセキュリティパッチ。

f:id:treedown:20200716175049p:plain
早くできるなら、適用に超したことはない。

f:id:treedown:20200716175112p:plain
7月のWindows UpdateはPCよりもサーバ側で注意が必要になるようです。