shiichan

Tier 1 の半分が無防備だった!BGP 先頭 AS 強制のすすめ

やっほー、しぃちゃんだよ!今日はインターネットのおおもと、BGP のルーティングを守るお話だよ。ちょっと地味だけど、実はすっごく大事なやつなの!

Cloudflare Blog blog.cloudflare.com

なにが発表されたの?

Cloudflare の Blog が「Enforcing the First AS in BGP AS PATHs」という記事を出したよ。ざっくり言うと、BGP の経路情報に含まれる「一番最初の AS 番号」がちゃんと正しいかをルーターでチェックしよう、そうすれば経路ハイジャックをかなり防げるよ、というお話なの。

今までどうだったの?

BGP では、経路が流れていくときに通った AS(ネットワークの番号)が AS_PATH にどんどん書き足されていくの。荷物の追跡みたいなイメージだね。一番左(先頭)にあるのが、その経路を最初に広告した AS だよ。

RFC 4271 の 6.3 でも「AS_PATH の一番左の AS は、そのメッセージを送ってきたピアの AS 番号と一致しているべき」と決められているの。でも、このチェックをサボっているルーターがけっこうあって、攻撃者はそこを突いてくるんだ。

悪い人は、自分の AS 番号を経路に入れずに偽の AS_PATH を作って、正しいネットワークになりすまして経路を乗っ取っちゃう。RPKI-ROV や ASPA みたいな仕組みでも、そもそも経路情報がちゃんと入っていない偽の広告は防ぎきれないの。

これで何が変わるの?

enforce-first-as(先頭 AS の強制)を有効にすると、受け取った経路の先頭 AS が、実際に送ってきたピアの AS と一致しているかをルーターが検証するようになるよ。食い違っていたら、その経路を捨てる(RFC 7606 の treat-as-withdraw で処理)から、BGP セッション自体は落とさずに、おかしな広告だけを弾けるの。

これでハイジャックの入口がひとつ塞がるから、自分のネットワークだけじゃなくてインターネット全体が少し安全になるよ。

深く潜ってみよう

記事では実際のハイジャック例も紹介されているよ。47.1.0.0/16 と 47.2.0.0/16 を狙った攻撃で、偽の経路は「199524 270118 17072 13335 36429」というもの。ここには Cloudflare の AS13335 が AS36429 の上流みたいに紛れ込んでいたけど、Cloudflare は AS36429 と隣接なんてしていないの。攻撃者は自分の AS を隠したまま Gcore(AS199524)に広告して、そこが先頭 AS チェックをしていなかったのを悪用したんだね。

Cloudflare は自分たちでも、テスト用の 162.159.82.0/24 に本来の AS13335 の前へ別の AS402542 をわざと付けて広告して、どの Tier 1 が受け入れてしまうか調べたの。結果は…

Half of the Tier 1 networks are vulnerable to hijacks that violate the First AS rule.

半分もチェックしていなかったなんてびっくりだよね。しかも弾かなかった Tier 1 の多くは Juniper のルーターを使っていて、これはベンダーの初期設定の差がそのままセキュリティの差になっているって話なの。

初期設定で先頭 AS を強制するのは Cisco IOS/XE/XR、Arista EOS、Huawei、OpenBGPD、FRR(2023 年 10 月から)。逆に初期設定では強制しないのが Junos、Nokia SR OS、Extreme SLX-OS、RouterOS、BIRD だよ。

ひとつだけ例外があって、IX の Route Server は自分の AS を足さずに経路をそのまま中継する仕組みだから、そこ向けのセッションでは先頭 AS チェックを外す必要があるの。それ以外の EBGP では全部有効にしてね、というのが結論だよ。

まとめ

  • 先頭 AS の検証は、攻撃者が自分の AS を隠す型のハイジャックを防ぐ大事なチェック
  • 一致しなければ treat-as-withdraw でその経路だけ捨てる(セッションは落とさない)
  • Cisco・Arista・Huawei などは初期設定で有効、Junos・Nokia・BIRD などは無効
  • Tier 1 の半分が未対応というテスト結果、しかも多くは Juniper 系
  • IX の Route Server 向けだけは例外、それ以外の EBGP は全部オンに

ネットワークを運用しているみんな、ルーターを触る人には今日にでも効かせてほしい設定だよ。地味だけどインターネットのみんなを守る一歩なの!