IPv4の各範囲にはIPv6の対応物がある
見過ごせないIPv6のセキュリティ上の注意点
IPv6を、アドレス空間が広いだけで、IPv4をそのまま置き換えられるものと考えたくなるのは自然なことです。しかしセキュリティの面では、IPv4のあらゆる対策がそのまま通用すると思い込むのではなく、理解しておくべき実際の違いがいくつかあります。
ブロックリストは、長くするだけでなく別に作る必要がある
IPv6には、IPv4とは構造が異なる、独自のプライベート、ループバック、リンクローカルの範囲があります。IPv4の範囲しか解析してフィルタリングできないセキュリティチェックは、IPv6側ではこれらをすべて素通しにしてしまいます。IPv6が安全でないからではなく、同等の保護がそもそも作られていないからです。
| カテゴリ | IPv4の範囲 | IPv6の対応する範囲 |
|---|---|---|
| ループバック | 127.0.0.0/8 | ::1 |
| プライベート / ユニークローカル | 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 | fc00::/7 |
| リンクローカル | 169.254.0.0/16 | fe80::/10 |
| 未指定アドレス | 0.0.0.0/8 | ::/128 |
IPv4射影アドレス:見落としやすい盲点
IPv6には、IPv4アドレスをIPv6アドレスの中に埋め込む表記があります。たとえば ::ffff:127.0.0.1 は、通常の 127.0.0.1 と同じループバックアドレスを指しており、単にIPv6の形式で書いたものです。IPv4のループバックは正しくフィルタリングできても、この埋め込み形式を展開しないチェックでは、本来なら完全にブロックしたはずのアドレスと機能的に同一のアドレスを、通してしまいます。
- 解決されたアドレスをブロックリストと照合するシステムは、IPv4のルールが自動的に一般化されると思い込まず、IPv6用の別個の完全なロジックを持つ必要があります。
- IPv4射影IPv6アドレスは、中身の分からないIPv6アドレスとして評価するのではなく、展開したうえでIPv4のルールに照らして確認する必要があります。
- デュアルスタックのシステム(最近のものの大半)では、両方のチェックを一貫して適用する必要があります。攻撃者は、弱いチェックのほうのアドレスファミリーを使うだけだからです。
これはIPv6を避ける理由にはなりません。普及が広がることは概して良いことであり、IPv6固有の攻撃面が、本質的にIPv4より大きいわけでもありません。アドレスを扱うセキュリティロジックが、一方を後付けの扱いにするのではなく、両方のアドレスファミリーに対して実際に作られ、テストされていることを確認すべきだ、ということです。
NAT64は、知っておくべき第2の変換層を追加する
IPv6のみのネットワークの中には、クライアントがIPv4のみのインターネットに到達できるように、NAT64とDNS64を使うものがあります。DNS64は、Aレコードしか持たないドメインに対して、その場でAAAAレコードを合成し、IPv4アドレスを特別なプレフィックスの中に埋め込みます(64:ff9b::/96 が、よく知られた既定値です)。NAT64は、その合成されたアドレス宛てのトラフィックを、ネットワークの境界で本物のIPv4に変換し直します。これは正当で有用な仕組みです。しかしそれは、その範囲に入ったアドレスが、単独で評価すべき素のIPv6アドレスではなく、IPv6の衣装をまとったIPv4であることを意味します。IPv4射影アドレスと同じように、展開してIPv4のルールで確認する必要があります。
セキュリティロジックのテストとは、両方のファミリーをテストすること
自動テストは、気づかないうちにIPv4に偏りがちです。ほとんどのサンプルドメイン、ほとんどのテストフィクスチャ、ほとんどの簡易な手動チェックが、誰かが意図的に決めたわけでもなく、IPv4を既定にしています。アドレスを解決してフィルタリングするものに対するテストスイートは、IPv6のカバレッジの分だけ信頼できます。上に挙げたプライベート、ループバック、リンクローカルの範囲、IPv4射影アドレス、NAT64方式で合成されたアドレスは、それぞれ専用のアサーションに値するもので、「おそらく同じように動くだろう」では済みません。アドレスを扱うセキュリティコードは、テストされていない経路と壊れた経路が、攻撃者が先にその違いを見つけるまで区別できない、まさにそういう種類のロジックです。
ドメインの公開DNSアドレスを調べたい場合は、Domain IP Lookupツールをお試しください。
関連記事
偽の回答で競争に勝つ
攻撃者
本物の応答と競争
偽の回答
先に到着
リゾルバーキャッシュ
共有する全員分が汚染される
DNSスプーフィングとキャッシュポイズニングの概要
偽のDNS応答でトラフィックをそらす手口は、ネットワークの世界で最も古いものの1つです。DNSSECや最新のリゾルバーの防御が存在する理由でもあります。
パブリックとプライベートのアドレス空間
パブリックIP
192.0.2.10
グローバルに一意、どこからでもルーティング可能
プライベート範囲
公開インターネットではルーティング不可
プライベートIP範囲が公開DNSで解決されてはいけない理由
10.0.0.0/8や192.168.0.0/16などの範囲は、世界で一意にならないよう、あえて用意されています。それがDNSにとって重要な理由を解説します。
SSRFはサーバーを意図せぬプロキシに変える
攻撃者
リクエストURLを細工
脆弱なサーバー
SSRFにだまされて取得
169.254.169.254
メタデータエンドポイント
認証情報
攻撃者に返される
クラウドメタデータエンドポイントの隠れた攻撃面
ルーティング不能に見える1つのIPアドレスが、クラウドインスタンスに認証情報や設定へのアクセスを与えます。SSRFの標的になりやすい点にも注意が必要です。