ランダムプレフィックス攻撃(random prefix attack)とは、存在しそうにないサブドメイン(12345.example.com、abcdefg.example.com など)に大量のトラフィックを送りつける攻撃です。これらのサブドメインは、メインのドメイン(example.com)に紐づいています。
通常、各ランダムサブドメイン(またはプレフィックス)への DNS クエリは繰り返されないため、リゾルバーやほかのプロキシではキャッシュされず、常に権威ネームサーバーに届きます。送信元 IP に基づくレート制限やクエリのブロックは、誤検知を多く招きがちです。ランダムプレフィックス攻撃は、公開リゾルバー経由で行われることが多いためです。そのため、この攻撃は特に効果的で、緩和が難しくなります。
リクエストが存在しないドメインだけを対象にする場合、NXDOMAIN エラーは com. のトップレベルドメイン(TLD)ネームサーバーだけが返します。つまり、クエリは権威ネームサーバーまで到達しません。
flowchart TD
accTitle: ランダムプレフィックス攻撃の図
A[エンドユーザーのクエリ(<code>example.com</code>)] --"1)"--> B[<code>1.1.1.1 resolver</code>]
B --"2)"--> C[<code>com.</code> TLD NS]
C --"3)" <code>NXDOMAIN error</code>--> B
B --"4)" <code>NXDOMAIN error</code>--> A
D[権威 NS]
こうした攻撃が成立するのは、サブドメインを狙うからです。サブドメインへの応答には、そのドメインの権威ネームサーバーが必要です。
flowchart TD
accTitle: ランダムプレフィックス攻撃の図
A[エンドユーザーのクエリ(<code>random.example.com</code>)] --"1)"--> B[<code>1.1.1.1 resolver</code>]
B -- "2)" --> C[<code>com.</code> TLD NS]
C -- "3)" 権威 NS へクエリ --> B
B -- "4)" --> D[権威 NS]
D --"5)" <code>NXDOMAIN error</code>--> B
B --"6)" <code>NXDOMAIN error</code>--> A
既存ドメインのサブドメインを狙う攻撃では、ランダムなサブドメインはリゾルバーや他のプロキシにキャッシュされていないことが多いため、リゾルバーは権威ネームサーバーまで完全に解決せざるを得ません。攻撃者が十分な数のクエリを送り、権威ネームサーバーが負荷に耐えられないと、応答不能になったりダウンしたりします。その場合、攻撃対象のゾーンだけでなく、そのネームサーバーがホストするすべてのゾーンが影響を受けます。
この攻撃は、いくつかの理由で緩和が難しいです。権威ネームサーバーから見ると、クエリの送信元は Cloudflare(1.1.1.1)に見えます。正規トラフィックまで止まってしまうため、Cloudflare をブロックする選択肢はありません。
ランダムプレフィックス攻撃の緩和を有効にする と、Cloudflare は受信クエリを監視し、ランダムプレフィックス攻撃の兆候を探します。
攻撃を検知すると、サブドメイン、サブサブドメインなどへの上流ネームサーバーへの問い合わせを一時的に止めます。その後 Cloudflare は、TTL がまだ切れていなければキャッシュ済みの応答を返します。