組み込み屋はソフトの脆弱性に対する意識を高めるべき

MobileHackerz再起動日記: au IS01 (DoCoMo LYNX SH-10B)でroot権限を奪取する

Androidの開発をちょうど仕事にしているので、あまり人ごとでは無い。

Javaでアプリ層だけなら、Dalvikのsandbox上でほぼ守られていると考えてもいいのだろうが、native層まで含んだものを開発していると、こういうセキュリティホールをいうのを知らない間に作ってしまう可能性がある。

仮に純正Androidのフレームワーク部分はセキュリティホールが無かったとしても、そこに"メーカー拡張"として独自の処理を追加するケース、新しく常駐プロセスを追加するケースなど、実行ユーザー権限などによっては、ちょっとしたバグがすぐに脆弱な箇所を生む。

今回のIS01の場合は、"WifiをOff/Onにする"という操作が必要なことから、おそらくOnにする際に何か設定ファイルのようなものを読み込んだりしているのだと思う。そこにバッファオーバーフローを起こすようなデータが入ってきたら...?というような感じでは無いかと勝手に想像してみる。

Androidは特に、ユーザーがadbでshellを使うことができたり、野良アプリをインストールできたりと開発者にとってもエンドユーザーにとっても自由度の高いプラットフォームだ。

組み込みをやって来た人間でも、ずっとクローズドな実行環境で開発していると、そこまで真剣に脆弱性というものを考えないのではないだろうか。ネットワーク周りや外部とのやりとりがあるような機能なら意識すると思うが、機能的に閉じているモジュールなどは...。

メモリリークやバッファオーバーフローなどはバグとしても顕在することがあるから見つけた物は潰すだろうが、発生条件によっては実動作に影響しないケースもあったりして見逃すこともあるだろう。

そういう環境で開発してきた人が、Androidのようなオープンなプラットフォームの開発に従事したときに、安易な考えで常駐プロセスをroot権限で動作させようとしたり、ファイルや外部デバイスからの読み込みで不正なデータが来た場合のチェックやフェールセーフが十分では無かったりと「穴」を作り込んでしまわないだろうか。

「脆弱性」というと、Webアプリではよく聞くがまさか組み込みデバイスでも、と思う人も多いと思う。でもデバイスのrootを取られて、本来秘匿されるべきデータがクラッキングされたりすると、損害賠償のような話にもなりかねない。

元ネタのIS01の場合は、現在の所はrootを取られた場合も想定した対策が入っているようだが、これもいつどこから突破されるか分からない。そうすると、国産のAndroid端末だとガラケーのようにDRMや課金情報や、データを暗号化して保持するように独自拡張しているだろうから、その辺りが突破されるといろいろ不都合が出てしまうだろう。

私も含めて、組み込みでのセキュリティホールというものをもっと意識していかないといけない。

コメント

タイトルとURLをコピーしました