去年のDEFCONにて、"Stealing the Internet: An Internet Scale Man-In-The-Middle Attack"というタイトルのBGP中間者攻撃の実例のプレゼンがあってから、この攻撃手法には注目が集まっていた。今年のBlackHat DCでは、このコラムで何度か紹介したRenesys社のEarl Zmijewski 氏が、"Defending Against BGP Man-In-The-Middle Attacks"というタイトルにて更なる仔細をプレゼンしている。Zmijewski 氏のプレゼンは、DEFCONでのAlex Pilosov氏とTony Kapela氏が発表した実例を基に、攻撃の仔細、回避方法、そして在野での攻撃例の収集結果をまとめたものだ。
ご存知のようにインターネットトラフィックは、どんな組織でも自由に参加できるBGP4というシステムとプロトコルでその道順(パス)が決定されている。参加している組織はAS(Autonomous System)と呼ばれ、それぞれ個別のAS番号(ASN:Autonomous System Number)が与えられる。BGPのルールは、ASNはそれぞれが「自分はだれそれのASN行きのルートを持っている」とアナウンスし、近隣のASNがこれを受け取り一番スペシフィックなパスを選択する、というシンプルなもの。どこかの国際的な組織ががこれを決定するものでもない。このルールは「ASNは全て善人」という信頼を基礎にして成り立っている。つまり、攻撃者のASNも問題なくBGPに参加できるのだ。そのため、攻撃者のASNが一番スペシフィックなパスをアナウンスすれば、トラフィックは攻撃者のASN経由に流れてしまう。
攻撃自体は非常に簡単だ。攻撃者ASNを100、被害者を200としよう。ASN200が10.10.220.0/22をアナウンスする。ASN200とASN100との間の正規のトラフィックが、ASN20とASN10を経由して流れている。攻撃者ASN100は、この正規のパスを崩すことなく、ASN30やASN40からASN200に行くトラフィックを、全てASN200経由で流れるようにしたい。そのためにASN100は、10.10.220.0/23 and 10.10.222.0/23という、より一層スペシフィックなprefixにASN10、ASN20、そしてASN200をプリペンドしてアナウンスする。こうすることによってASN200行きのトラフィックの90%は、ASN100を経由することになる。