パブリックとプライベートのアドレス空間
パブリックIP
192.0.2.10
グローバルに一意、どこからでもルーティング可能
プライベート範囲
公開インターネットではルーティング不可
プライベートIP範囲が公開DNSで解決されてはいけない理由
RFC 1918は、10.0.0.0/8、172.16.0.0/12、192.168.0.0/16という3つのIPv4範囲を、プライベートネットワーク内での使用のために確保しました。すべてのプライベートネットワーク上のすべてのデバイスに、世界で一意の公開IPv4アドレスを割り当てるには、アドレスが足りないからです。これらの範囲は、世界中の何百万もの無関係なネットワークの内部で、同時に再利用されています。お使いの家庭用ルーターは、ほぼ間違いなく192.168.x.xのアドレスを配りますし、ほかのほぼ全員のルーターも同様です。
公開ドメインがこの範囲に解決されるとは、どういうことか
これらのアドレスは、問い合わせているローカルネットワークの中でのみ意味を持ちます。そのため、公開ドメインがこの範囲に解決されるのは、よくても設定ミスであり、最悪の場合は、公開側のシステムに、その内部ネットワーク上のたまたまそのアドレスにあるものへリクエストさせようという、意図的な試みです。公開インターネットには、10.0.0.5が何を指すのかという一貫した認識がありません。どのネットワークから問い合わせるかによって、まったく別のマシンになります。
| 範囲 | 名称 | ブロックされる理由 |
|---|---|---|
| 10.0.0.0/8 | プライベート(RFC 1918) | 何百万もの無関係なネットワークの内部で再利用される |
| 172.16.0.0/12 | プライベート(RFC 1918) | 上記と同じ |
| 192.168.0.0/16 | プライベート(RFC 1918) | 上記と同じ。家庭用ルーターで一般的な範囲 |
| 127.0.0.0/8 | ループバック | 問い合わせたマシン自身を指す |
| 169.254.0.0/16 | リンクローカル | クラウドのメタデータエンドポイントである169.254.169.254を含む |
| 100.64.0.0/10 | 共有アドレス空間(RFC 6598) | キャリアグレードNAT。自作のブロックリストでは漏れがちな範囲 |
| 0.0.0.0/8 | 未指定 | 実際にルーティング可能な宛先ではない |
| 192.0.2.0/24, 198.51.100.0/24, 203.0.113.0/24 | ドキュメント用の範囲 | 例示用に予約されており、実際に使われることは想定されていない |
- 正当な公開ドメインが、プライベート範囲のアドレスに解決される理由はありません。もし見かけたら、通常の結果ではなく、調査する価値のあるシグナルとして扱ってください。
- IPv6にも、同等のプライベートや予約の範囲があります。ユニークローカルアドレス(fc00::/7)とリンクローカル(fe80::/10)で、これらにもまったく同じ対処が必要です。
公開ドメインは常に公開アドレスに解決されると信頼するのではなく、名前解決の時点でこれらの範囲を除外することが、ユーザーに代わってドメインを名前解決するあらゆるツールに対する、最低限の期待です。
ほとんどのブロックリストが忘れる範囲
100.64.0.0/10(RFC 6598で定義された「共有アドレス空間」)は、公開インターネット上でまったくルーティングできないという点では同じなのに、10.0.0.0/8や192.168.0.0/16ほどには知られていません。これはキャリアグレードNATのために用意されており、ISPが、顧客の接続ごとに公開IPv4の空間を消費せずに、多数の接続を内部でアドレス指定できるようにします。従来のRFC 1918の範囲よりも新しく、知名度が低いため、自作のブロックリストで最もよく抜け落ちている範囲です。誰かが意図的に、その内部のアドレスにドメインを向けて初めて、その穴が表面化します。
「フェイルクローズ」も、リストそのものと同じくらい重要
ブロックリストの質は、アドレスをまったく解析できなかったときに何が起きるかで決まります。不正な形式の入力、珍しい表記、既知のどの範囲にもきれいに一致しない値を、デフォルトで「おそらく問題ない」と扱ってはいけません。安全なデフォルトは、既知の悪い範囲に明確に一致するアドレスだけを拒否するのではなく、公開アドレスだと確信を持って分類できないものはすべて拒否することです。この「フェイルクローズ」の姿勢が、リストにすでにあるよく知られた範囲だけでなく、まだ誰も追加しようと思っていない範囲に対しても、ブロックリストを堅牢に保ちます。
ドメインの公開DNSアドレスを調べたい場合は、Domain IP Lookupツールをお試しください。
このテーマの無料ツール
関連記事
SSRFはサーバーを意図せぬプロキシに変える
攻撃者
リクエストURLを細工
脆弱なサーバー
SSRFにだまされて取得
169.254.169.254
メタデータエンドポイント
認証情報
攻撃者に返される
クラウドメタデータエンドポイントの隠れた攻撃面
ルーティング不能に見える1つのIPアドレスが、クラウドインスタンスに認証情報や設定へのアクセスを与えます。SSRFの標的になりやすい点にも注意が必要です。
同じアドレスを書き表す4つの方法
SSRF攻撃とは?DNSが悪用される仕組み
サーバーサイドリクエストフォージェリは、サーバーがだまされて名前解決とリクエストを行ってしまった、ただ1つのドメイン名から始まることがよくあります。
同じドメインから、2つの異なる回答
最初のリクエスト
公開IPに解決
検証
通過、安全に見える
TTL切れ
数秒後
2回目のリクエスト
127.0.0.1に解決
DNSリバインディングとは?その危険性を解説
一度は安全なアドレスに解決され、後から内部アドレスに解決されるドメイン。DNSリバインディングは、DNSそのものを攻撃対象にする手口です。