CVE-2020-1350(SIGRed)について
概要:
Windows DNSサーバに対して、悪意のあるドメインへのDNSリクエスト(正確にはSIGレコード要求)を行うと、バッファオーバーフローが発生する。
その結果、Windows DNSサーバ上で任意のコマンドを実行される可能性がある。
(任意なので、サーバ上のファイルを外部に送ったり、DNSレコード書き換えたりもできる。と思われる)
Windows DNSサーバは、一般的にADサーバへ組み込まれていることが多いため、ADサーバで任意のコマンドを実行された場合の被害は大きいと考えられる。
実行方法:
1. 攻撃者は任意ドメイン(〇〇[.]comとします)のNSレコードを細工済みの
DNSサーバにしておく。
2. 〇〇[.]comへのSIGレコード要求を攻撃対象のWindows DNSサーバに対し
て行う。
3. Windows DNSサーバでバッファオーバーフローが発生、任意のコマンドを
実行される。
原因:
SIGレコードは65535バイト(16ビット)が割り当てられている。
通常のDNS要求(DNS over UDP)では、最大512バイトなので65535バイト以下となり、オーバーフローは発生しない。
しかし、以下2つを組み合わせることでは65535バイト(16ビット)を超える
レスポンスをWindows DNSサーバに送り付けることが可能となり、
バッファオーバーフローが発生する。
・TXTレコードなどの長いレコードを処理させるための技術、
DNS over TCPを用いて、512バイト以上のやり取りを可能とする
(Tcフラグを使うことでDNS over TCPを使わせることができる)
・DNS圧縮機能により、TCP上の転送文字数を減らし、
TCPパケットの上限(64キロバイト)以下の容量に圧縮する
攻撃のシナリオ:
1. Windows DNSサーバに対して細工したSIGレコード要求を行う
補足:内部犯、または、外部からWindows DNSサーバに名前解決ができる 構成で影響を受ける
2. 利用者がメールのリンクをクリックしたり、改ざんしたサイトへアクセスすることで、クライアントPCから「1.」を実行させる
補足:発見者によると、IE、Edge(非Chromeベース)でのみ行えるらしい。
Chrome、Firefoxでは実行できないとのこと。
影響を受ける構成:
1. インターネットからアクセス可能なDNSとしてWindows DNSを使っている
システム
2. 社内のDNSサーバとしてWindows DNSを使っているシステム
影響範囲の補足:
1. DNSクライアントは影響を受けない
2. フォワーダーを設定しているWindows DNSサーバも影響を受ける
→SIGレコード要求は、フォワーダーを介さずに
直接DNSサーバ間でやり取りが行われるようです
3. BIND等サードパーティ製DNSサーバが稼働するWindowsサーバは影響を受けない
対象のWindows Server:
Windows Server 2008
Windows Server 2008 R2
Windows Server 2012
Windows Server 2016
Windows Server 2019
Windows Server, version 1903
Windows Server, version 1909
Windows Server, version 2004
緩和策:
1. DNSサーバのレジストリに以下を追加し、
65280バイトを超えるパケット処理をさせなくする。
(なぜ65280バイトかは未調査)
補足:別の不具合が起こる可能性があるので、
Windows Updateがシンプルかと思います。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DNS\Parameters DWORD = TcpReceivePacketSize Value = 0xFF00
2. 上位ネットワークで、フォワーダー以外とのDNSサーバのTCP/53通信を
許可しない設定とする
補足:別の不具合が起こる可能性があるので、
Windows Updateがシンプルかと思います。
対策:
Windows DNSサーバへ、2020/07配信のWindows Updateを行う
参考情報:
MS公式ページ
https://portal.msrc.microsoft.com/ja-JP/security-guidance/advisory/CVE-2020-1350
Microsoft Japan Securityチームのブログ
https://msrc-blog.microsoft.com/2020/07/14/20200715-dnsvulnerability/