PCやサーバの歴史を繰り返すか

組み込みシステムは古典的脆弱性の宝庫!?

2007/04/06

ipa01.jpg 米eEye Digital Securityのシニアリサーチエンジニアの鵜飼裕司氏

 PCの周辺機器、モバイル端末、情報家電などの組み込みシステムにおけるセキュリティレベルは二極化している。設計から実装にいたるまで十分なセキュリティ対策を施した製品がある一方で、これまで汎用システムで長い年月をかけて学んできた歴史が生かされず、古典的な脆弱性を大量に作り込んでいる製品も多い。独立行政法人 情報処理推進機構(IPA)が4月6日に行った「IPA組み込みセキュリティワークショップ」で講演した米eEye Digital Securityのシニアリサーチエンジニアの鵜飼裕司氏は、そう指摘し、ブロードバンドルータの事例を挙げて実際のクラック手法を説明した。

脆弱性の本質は、多くの場合汎用システムと同じ

 バッファオーバーフロー、コマンドインジェクション、ディレクトリトラバーサル、クロスサイトスクリプティング、DoS攻撃、認証バイパス……、こうしたクライアントPCやサーバの世界で常套手段となっている典型的な脆弱性は、そのまま組み込みシステムにも存在することが多い、と鵜飼氏は指摘する。もちろん、組み込みシステム独自の問題や新たなアタックベクタが表面化する可能性などがある。

 その一方、組み込みシステムをクラックするには、搭載チップの物理的配線からファームウェアを吸い出す必要があるなど、攻撃者にとっての新たな技術的ハードルもある。システムコールやAPIの仕様が非公開でバージョンによってアドレスが異なることがあることがあることや、ARMやMIPSなどIA32以外の命令セットに習熟する必要があるといった事情もクラックを難しくするという。

 しかし、仕様が非公開といっても、汎用的なチップを使っている限り、少しネットで検索すれば仕様書は手に入る。「オープンなアーキテクチャは便利だが、場合によっては考え物」(鵜飼氏)で、チップのどの足の信号線が「JTAGポート」と呼ばれるデバッグ用のものであるかは簡単に分かるという。信号線のピッチが狭いため、はんだ付けに習熟していないと配線は難しいというが、例えば同社が調査したD-Linkのブローバンドルータでは、JTAGポート用の接続コネクタが基板上に残ったまま出荷されており、「はんだ付けすら不要」(鵜飼氏)だったという。

ブロードバンドルーターの乗っ取り手法

 さらに問題のD-Linkのブロードバンドルータでは、UPnPで利用されるUDPの1900番ポートに800バイトを超える特定の文字列を送り込むと、任意のコードを実行できるというバッファオーバーフローの脆弱性があった。同社では、管理パスワードのリセット、設定情報をフラッシュメモリに書き込むAPIの呼び出し、ルータのリセット、クラック版ファームウェアの書き込みを行うことに成功したという。例えばパケット受信ルーチンを書き換えたり、フックすることによって、ダウンロード中のexeファイルをリアルタイムで書き換えて、クライアントPCにバックドアを仕込んだり、DNSレスポンスを書き換えて、正しいURLでアクセスしているつもりの被害者をミラーサイトに誘導したりといったことができるという。

 ネットワークカードのファームウェアについても、ブロードバンドルーター同様に、ファームウェアの書き換えができてしまう製品が存在する。ネットワークカードは送受信するパケットのデータをDMAを介して行うため、ホストとなるPCの物理メモリを自由に読み書きできる。このため、例えば、常に同一アドレスにロードされるようなOSであれば、メモリ上のカーネルイメージに直接バイナリパッチを当てることができ、管理者権限のチェックルーチンをゼロで埋めてしまうようなことまでできてしまう。

 このように、組み込みシステムといっても既知の方法の組み合わせで攻撃可能であるため、「攻撃者にとっては、組み込みシステムは格好のターゲットになりつつある」(鵜飼氏)。対策として同氏は、「デバイスのファームウェアは常に書き換え可能にするべきではない」、「クローズドアーキテクチャを使う」、「安全なOSやミドルウェアを使う」、「JTAGなどのポートを基盤に残さない」、「CPUの名称や型番などを外見から判別不能にする」、「物理的にクラックを難しくするためにBGAパッケージを採用する」といったポイントを指摘。開発プロセスの見直しやノウハウの蓄積も課題だと話した。

関連リンク

(@IT 西村賢)

情報をお寄せください:



@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)