2019/01/14

BGP 乗っ取りとは

Server サーバー ラック 大規模 システム
2019 年 1 月 14 日 Trevor Collins 著

BGP 乗っ取りの最近のニュースを見ると、この攻撃方法を使う攻撃者が増加していることがわかります。ウォッチガードの 2019 年セキュリティ予測で、BGP エクスプロイトによってインターネットのかなりの部分が停止する可能性を予測しましたが、一体これは、どのように発生するのでしょうか。BGP の仕組みを理解していないと、ある場所に送信するはずだったトラフィックを誰かが誤って別の場所に送信してしまう恐れがある理由を理解するのは難しいかもしれません。トラフィックは自らの送信先を知らないのでしょうか。我々は、住所にブラジルが含まれているメールを中国に送信することはありません。しかしながら、この例をさらに進めて考え、ブラジルに送信されたメールがパナマを経由し、パナマから中国に送信される場合に、BGP の乗っ取りのように誰かにそのメールが乗っ取られ、中間者が意図的あるいは間違えてトラフィック(メール)を正しくない場所に送信することが考えられます。BGP 乗っ取りの仕組みをもう少し詳しく見てみることにしましょう。

誰かが IP アドレスを盗むことができる理由を理解するには、ルーティングについて理解しておく必要があります。IP ルーティングは、トラフィックがインターネットでたどるルートを定義します。インターネットバックボーンにあるルータ(ネットワークハードウェア)には、これらのトラフィックルートを制御するルートテーブルが存在します。ルートテーブルは、静的ルートを使用して手動で構成することも、BGP(Border Gateway Protocol)、OPSF(Open Shortest Path First)、EIGRP(Enhanced Interior Gateway Routing Protocol)などのプロトコルを使用する動的ルートを使用して自動的に構成することもできます。750,000 を超える BGP 接頭辞が存在することから、ネットワーク管理者が自社のルーティングテーブルに手動でルートを入力するのはおそらく困難でしょう。インターネットを想像するとわかるように、必要なすべてのルートを手動で制御するのは不可能です。そのため、BGP 形式での動的ルーティングがこのタスクの手助けになります。

BGP の仕組みをここで長々と解説するつもりはありませんが、このプロトコルのいくつかの基本原則を理解しておく必要があります。BGP はインターネットバックボーンの主要ルーティングプロトコルであり、ISP や大規模組織は、BGP を使用して、自社が制御または所有するネットワーク接頭辞(サブネット)をアドバタイズします。ただし、アドバタイズされるすべての接頭辞がルーティングテーブルに追加されるわけではありません。組織や ISP によって管理される接頭辞は、AS(自律システム)と呼ばれ、これによって ASN(自律システム番号)にマッピングされます。たとえば、Google の ASN は AS15169 です。IANA(Regional Internet Assigned Numbers Authorities)が、組織への ASN やネットワーク接頭辞の割り当てを担当しています。

インターネットバックボーンに参加するルータは、BGP のパス選択アルゴリズムを使用して、特定の接頭辞に到達するために受信するルートトラフィックを自動的に判断しますが、他の自律システムを経由する場合もあります。たとえば、私が ISP の所有者だった場合に、自分の ISP が自分のネットワーク接頭辞をアドバタイズするには、最初に、他の何らかの動的ルーティングプロトコルまたは静的ルートのルートを知る必要があります。そして、このルートを接頭辞リストに追加し、自分の ASN を使用して、すべての BGP ピアに接頭辞リストをアドバタイズします。ほとんどの組織は直接接続をお互いに共有していないため、接頭辞アドバタイズを相互に伝達します。それぞれの自律システムルータは、最終的には、他の自律システムへとアドバタイズする他の ASN と接頭辞のリストに到達し、このような方法によって、直接接続されていない場合であっても、ISP「A」から ISP「B」へとトラフィックを送信できるようになります。

ここで、不正 ISP を作成しようと考えた場合、適切なルートがない場合であっても Google の接頭辞を自分の ISP がアドバタイズするようにします。また、接頭辞リストを含むアドバタイズメントを操作して、私の ISP が Google への最適ルートであると宣言します。私の ISP のアドバタイズメントを受け入れた他の ISP は、私の ISP に Google トラフィックをルーティングするようになります。このように、不正の仕組みはとても簡単なものであり、BGP 部分ではなく、Google の接頭辞の偽アドバタイズメントである可能性もあります。

ネットワーク管理者がこの不正のリスクを軽減するには、接頭辞アクセス制御リストを使用し、不正自律システムが不正な接頭辞をアドバタイズするのを防止します。これらの接頭辞アクセス制御リストに 750,000 のルートすべてを網羅されている必要はありません。簡単なアクセス制御リストであっても、明らかな不正ルートの発生を防ぐ効果があります。ワシントン州シアトルからニューヨークのサーバにアクセスするにもかかわらず、太平洋を経由してトラフィックを送信するようなものです。BGP プロトコルそのもので自律システムのなりすましを解決することはできませんが、ほとんどの実装に BGP による TCP 認証が実装されています。また、RPKI(Resource Public Key Infrastructure)による接頭辞オリジン検証を使用して、受け取ったアドバタイズメントを検証することもでき、この方法によって、トラフィックが正しい ASN からのものであることが保証されます。

私自身は数年前に BGP について調査していたときに、ISP による BGP の実装方法の改善について検証し、ISP には BGP 認証と接頭辞アクセス制御リストが必須であるという結論に達しました。一部の ISP はこれらのリストを追加しましたが、追加していない ISP が多いのが現状です。BGP のベストプラクティスに関するすべての文書に、BGP の実装に必須である認証と接頭辞アクセス制御のリストが記載されているにもかかわらず、いまだに従っていない ISP がいるのはなぜでしょうか。我々や顧客からの働きかけによって ISP が BGP 接頭辞テーブルを確実に保護するようになり、結果として、インターネット全体あるいは少なくともその多くの部分がダウンするのを防ぐことができるようになることを願っています。