BGPルートリークとハイジャック
毎年のように起きる大規模障害の型を事故報告から分類でき、RPKIで防げる範囲と防げない範囲を切り分けてフィルタ設計に落とし込める。
- 1.ハイジャックは発信元詐称、ルートリークは正しい発信元の経路を伝播ポリシーに反して広く撒く事故で、原因も対策も別物。
- 2.実インシデントは意図的攻撃より設定ミスが大半で、type 1〜4のリーク分類とmore-specific型ハイジャックにパターンが集約される。
- 3.RPKI/ROVは発信元詐称にしか効かず、リークやAS_PATH偽装はIRRベースのprefix-filterとmax-prefixで別途塞ぐ必要がある。
二つの事故は原因が違う
BGP の大規模障害は「経路ハイジャック」と「ルートリーク」という別々の名前で語られますが、この二つは原因も検知手段も異なります。ハイジャックは発信元 AS の詐称、リークは発信元は正しいのに伝播ポリシーを破って広く撒いてしまう事故です。RPKI 発信元検証 が前者にしか効かないのはこの違いに起因します。両者を区別せずに対策を語ると、片方しか守れていないのに安心してしまう典型的な穴になります。
| 観点 | 経路ハイジャック | ルートリーク |
|---|---|---|
| 何が偽られるか | 発信元AS(自分のものでないプレフィックス) | 何も偽らない。伝播範囲だけ間違う |
| 典型原因 | 悪意 または コンフィグミス | ほぼ設定ミス(フィルタ漏れ) |
| RPKI/ROVで検知できるか | できる(発信元不一致) | できない(発信元は正しい) |
| 主な防御 | ROA + drop-invalid | IRR prefix-filter + Gao-Rexford準拠 |
ハイジャックのパターン分類
経路ハイジャックは「自分でないプレフィックスを自 AS 発信として広告する」点で共通しますが、実害の出方で型が分かれます。
- 完全奪取型:被害プレフィックスと同じ長さで広告する。BGP経路選択 の優先順位(AS_PATH長やLOCAL_PREF)で正規経路と競合し、勝った範囲だけ吸い込む。伝播が限定的なら被害も局所的。
- more-specific型:被害プレフィックスより長いプレフィックスを広告する。最長一致 の原理により、伝播が届いた場所では例外なく攻撃側が勝つ。2008年のYouTubeプレフィックスハイジャック事件はこの型で、本来一部地域向けの広告のはずが全世界に伝播し、YouTube自体が長時間到達不能になった。
- AS_PATHごく短縮型:中間のASを経由しているように装いつつAS_PATHを短く見せる、あるいは正規の発信元ASを末尾に付けて発信元検証だけは通す。ROVがValidと判定してしまう最も厄介な型。
more-specificハイジャックは「一部だけ盗られる」事故ではありません。最長一致は例外のない決定的なルールなので、広告が到達した経路上のルータは100%攻撃側を選びます。伝播範囲=被害範囲がほぼ直結するため、フィルタで伝播そのものを止める以外に部分的な緩和策はありません。
ルートリークの分類(type 1〜4)
RFC 7908 はルートリークを、誰から学んだ経路をどの関係の相手へ渡したかという伝播ポリシー違反の形で分類します。BGP伝播ポリシー で述べたGao-Rexfordルールの違反パターンそのものです。
type 1: ピア/プロバイダから学んだ経路を別のピア/プロバイダへ広告
(本来カスタマにしか流してはいけない経路を横に漏らす)
type 2: プロバイダA経由で学んだ経路をプロバイダBへ広告
(複数上流を持つカスタマASが誤ってトランジットの真似をする)
type 3: 内部の機器設定ミスで、フィルタ対象外の全経路を隣接へ広告
type 4: 意図的なトラフィック誘導のためのリーク(悪用目的)
最も多いのが type 1 と type 3 で、いずれもマルチホームAS(複数のISPと契約するAS)が、片方から受け取った経路をもう片方へそのまま流してしまう設定ミスです。2019年のCloudflare関連障害(Verizon経由でDQEの経路が誤って世界に広がった事例)はtype 1の典型で、本来カスタマ向けのはずの経路がプロバイダ間トランジットのように大量に伝播し、広範な到達性障害を引き起こしました。
公開されているBGPインシデントの大半は、フィルタの書き忘れ・IRRオブジェクトの登録漏れ・route-mapの適用順序ミスといった単純な設定ミスに起因します。type 4(悪意)は稀少です。対策の優先順位も「攻撃者を想定した高度な仕組み」より先に「基本のprefix-filterとmax-prefixを全セッションに漏れなくかける」ことに置くべきです。
RPKI/ROVで防げる範囲と防げない範囲
RPKI発信元検証 はROAという署名済みの(Prefix, maxLength, Origin AS)を根拠に、受信経路をValid/Invalid/NotFoundへ分類します。これが有効なのは発信元詐称型ハイジャックだけです。
攻撃/事故のタイプ ROVでの見え方
完全奪取型ハイジャック → Invalid(発信元AS不一致)で検知可能
more-specific型 → maxLengthを絞っていればInvalidで検知可能
AS_PATH末尾偽装型 → Valid(発信元だけは正しいので見抜けない)
ルートリーク(type1-3) → Valid(発信元は正しいので見抜けない)
ここが実務でよく誤解される点です。「ROVを入れたから経路事故は防げる」という理解は半分しか正しくありません。ROVは発信元という入口の1点しか検証しないため、BGPsec が対象とするAS_PATH全体の真正性や、伝播ポリシー違反であるルートリークには無力です。ASPA(Autonomous System Provider Authorization)はAS間の正当な上流関係を署名し、type 1/2 リークの一部(本来ありえない上流関係の経路)を検知できますが、普及はまだ限定的です。
フィルタリングのベストプラクティス
実運用でリークとハイジャックの双方を抑えるには、ROVだけに頼らず複数層のフィルタを重ねます。
| 対策 | 防げるもの | 限界 |
|---|---|---|
| ROV(drop-invalid) | 発信元詐称型ハイジャック | AS_PATH偽装・リークは通す |
| IRRベースprefix-filter | カスタマから受ける経路を登録済み範囲に限定 | IRRデータの陳腐化・未登録に弱い |
| max-prefix | 誤って全経路を吸い込むリークの被害を上限で遮断 | 閾値到達後の事後対応。予防ではない |
| AS_PATHフィルタ(bogon AS除去等) | 私用AS番号やAS 0などの明らかな異常経路 | 正規に見えるリークは通す |
実務上の基本形は、カスタマ収容セッションにはIRR由来のprefix-filterを自動生成して適用し、上流(プロバイダ・ピア)セッションにはmax-prefixとROV drop-invalidを両方かけるという組み合わせです。IXPの多くがルートサーバでこの種のフィルタを標準提供しているのも、type 1/3 のリークが「ピアの先のピア」という到達範囲を経由して急速に広がるためです。
IRR(Internet Routing Registry)はAS同士が「このプレフィックスはこのASから受け取る想定」という経路ポリシーを登録するデータベースで、prefix-filter自動生成の材料になります。RPKIは暗号署名で発信元の真正性を保証します。IRRはポリシーの記述、RPKIは事実の証明という別レイヤーなので、片方だけでは互いの弱点を埋められません。
検知の限界
ここまでの対策を重ねても、検知には構造的な限界が残ります。第一に、ROVもASPAも制御面(経路広告)の検証であり、転送面で実際にパケットがどこを通ったかは保証しません。経路上はValidでも、途中のASがトラフィックを盗聴・改ざんしていないかは別問題です。第二に、BGPの収束 には時間がかかるため、ハイジャックやリークが観測・是正されるまでに数分〜数十分の伝播が先行し、その間の実害は防げません。第三に、外部からの検知(RIPE RISやBGPStreamのような経路モニタリング)は「いつもと違うAS_PATHやOrigin ASが出現した」という異常検知に頼る部分が大きく、巧妙にAS_PATHを偽装されると異常として浮かび上がりにくくなります。
- ハイジャックは発信元詐称、リークは正しい発信元の経路を伝播ポリシー違反で広く撒く事故。原因も対策も別。
- more-specific型ハイジャックは最長一致で例外なく勝つため、伝播範囲がそのまま被害範囲になる。
- ルートリークはtype1〜4に分類され、実インシデントの大半はtype1/3の設定ミス。
- RPKI/ROVが検知できるのは発信元詐称のみ。AS_PATH偽装とルートリークは素通りする。
- 対策はROV単独でなくIRR prefix-filter・max-prefix・ASPAを層として重ねるのが実務の基本形。
一段で言うと
経路ハイジャックとルートリークは、どちらも「BGPが広告内容の真偽を検証しない」という同じ根本原因から生まれますが、ハイジャックは発信元の嘘、リークは伝播範囲の誤りという別の症状です。RPKI/ROVは前者の入口だけを暗号的に塞ぎますが、AS_PATH偽装やリークには手が届かず、IRRベースのフィルタ・max-prefix・ASPAといった複数の層で補う必要があります。実機では経路モニタリング(RIPE RIS、BGPStream等)で自組織プレフィックスのOrigin ASとAS_PATHの異常を継続的に観測し、show ip bgpのRPKI状態と組み合わせて、どの層で何を検知できて何を検知できていないかを常に切り分けて運用してください。
ネットワーク Article
BGPルートリークとハイジャックを実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
BGP
比較で見る軸
難易度: advanced / カテゴリ: ネットワーク / タグ数: 6
導入後に効く点
実インシデントは意図的攻撃より設定ミスが大半で、type 1〜4のリーク分類とmore-specific型ハイジャックにパターンが集約される。
先に潰すリスク
用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。
- 難易度
- advanced
- カテゴリ
- ネットワーク
- タグ数
- 6
判断チェックリスト
- 自社の用途が「BGP / 経路ハイジャック」に近いか確認する。
- 強みである「ハイジャックは発信元詐称、ルートリークは正しい発信元の経路を伝播ポリシーに反して広く撒く事故で、原因も対策も別物。」が本当に評価軸になるか確認する。
- 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。