図1 偽の郵便ポストで手紙を集める(イラスト:なかがわ みさこ)
図1 偽の郵便ポストで手紙を集める(イラスト:なかがわ みさこ)
[画像のクリックで拡大表示]
図2 中身を書き換えて本物のポストに投函する(イラスト:なかがわ みさこ)
図2 中身を書き換えて本物のポストに投函する(イラスト:なかがわ みさこ)
[画像のクリックで拡大表示]

 ARPスプーフィングとは,IPの通信で使われている「ARP」(addressresolution protocol)というしくみを悪用した攻撃のことである。2006年あたりから,インターネットを介して,ARPスプーフィングを実行するウイルスをサーバーに仕掛けるという手口が増えている。

 ARPは,IPの通信で使うIPアドレスとイーサネットの通信で使うMACアドレスを結び付けるために使うプロトコルである。例えばLAN内のパソコンからインターネット上のサーバーにアクセスするとき,まずLAN内のデフォルト・ゲートウエイというルーターにデータを転送する。このとき,LAN内はイーサネットで接続しているため,デフォルト・ゲートウエイのIPアドレスに対応するMACアドレスを調べる必要がある。ここでARPを使う。

 ARPでは「このIPアドレスを持つ機器のMACアドレスは何ですか」とネットワーク内の機器すべてに一斉に問い合わせる。該当するIPアドレスを持つ機器(この場合デフォルト・ゲートウエイ)は,自分のMACアドレスを問い合わせ元に返信する。このようにして,パソコンはデフォルト・ゲートウエイのMACアドレスを入手する。

 パソコンやネットワーク機器は,ARPで調べたアドレス情報をきちんと記録しておく。これを「ARPキャッシュ」と呼ぶ。2度目以降の通信からは,このARPキャッシュを使ってMACアドレスを調べる。

 ARPスプーフィングではこうしたARPのしくみを悪用し,他の機器間の通信を盗聴する。具体的には,MACアドレスの問い合わせが来たときに,偽者の機器が自分のMACアドレスを返す。当然,問い合わせ元のARPキャッシュには間違った情報が記録される。すると,それ以降の通信では,偽者の機器にデータが転送されるようになってしまう。例えると,偽の郵便ポストを用意して,そこに手紙を集めるようなものだ(図1)。

 ARPスプーフィングは古くから存在しているが,インターネット上のサーバーに仕掛けてアクセスしてくるクライアントを狙うという攻撃が最近多発している。

 2008年6月にはサーバーのホスティング・サービスを手がけるさくらインターネットで,数台のサーバーがAPRスプーフィングを使った攻撃を受けた。あるサーバーが設定ミスを突かれて攻撃者に乗っ取られ,ARPスプーフィングのウイルスに感染した。このサーバーはデフォルト・ゲートウエイのルーターになりすまし,同一ネットワークからルーターに送られたパケットを不正に取得した。そして,パケット内に攻撃コードを埋め込んでから,ルーターに中継した。先ほどの郵便ポストの例で見ると,偽の郵便ポストで集めた手紙の中身を書き換え,改めて本物のポストに投函するイメージだ(図2)。

 これによって,同一ネットワーク内のサーバーのWebページを閲覧したユーザーあてに,攻撃コードが埋め込まれたパケット(HTTPの応答パケット)が送信されてしまった。

 不正なARPのパケットが送信されるとトラフィックが一気に増えるので,ルーターのコマンドやネットワーク監視ツールでも検知できる可能性が高くなる。ところがさくらインターネットの一件では,トラフィックの増加量が検知にひっかからない程度に抑えられていた。また,ルーターのARPキャッシュが書き換えられていないかも監視していたが,今回は各サーバーのARPキャッシュが書き換えられたため発見が遅れてしまった。現在は,ルーター自体のIPアドレスとMACアドレスの対応が書き換えられていないかをチェックするしくみを取り入れることで,再発を防いでいる。

 万が一,攻撃コードが埋め込まれたパケットが送りつけられてきた場合に備えて,クライアント側でも対策が必要となる。Webブラウザで安易にすべてのスクリプトを実行しないようにしたり,セキュリティ対策ソフトのインストールや最新のセキュリティ・パッチの適用を心がけたい。