古典的な脆弱性が残る組み込みシステム 67
ストーリー by kazekiri
そりゃそうだな 部門より
そりゃそうだな 部門より
slashscreen2 曰く、
周辺機器、モバイル端末、情報家電などの組み込みシステムでのセキュリティレベルが二極化しており、古典的な脆弱性を大量に作り込んでいる製品も多いという記事が@ITに掲載されている。 バッファオーバーフロー、コマンドインジェクション、ディレクトリトラバーサル、クロスサイトスクリプティング、DoS攻撃、認証バイパスといったPCの世界では常套手段となっている典型的な脆弱性が、そのまま組み込みシステムにも存在することが多いという主旨であるが、JTAGポートを基盤に残しているといった不備もあるらしい。実際にD-Linkのブロードバンドルータをクラックした話も載っているが、組み込み系のシステムは盲点になりやすいだけに皆さんご注意を。
ハードとソフトの脆弱性を同一にとらえる? (スコア:5, すばらしい洞察)
絶対に脆弱性もバグもないソフトを作れというなら組み込みに限った話ではないはずです。
ネットワークやDBまで載った大規模組込みの場合、コンパクトフラッシュなどに書き込んでブートさせるのですが、そういったものはコンパクトフラッシュ抜くだけでいくらでもやり放題ですし。
#組み込んだBOXごと樹脂にでも漬け込んで二度とアクセスできないようにしろってことですかそうですか
「古典的な脆弱性」を絶滅から救え! (スコア:3, おもしろおかしい)
------------
惑星ケイロンまであと何マイル?
微妙な指摘のような (スコア:3, すばらしい洞察)
「クローズドアーキテクチャを使う」「CPUの名称や型番などを外見から判別不能にする」のような、汎用システムではうまくいかないとわかっている隠蔽によるセキュリティによる提案が一部あるのはどうかとも思いました。
ブルース・シュナイアー先生も特殊な状況では有益と言っていたと思いますが…。
参考:シュナイアー先生の"Secrecy, Security, and Obscurity" [schneier.com]
記事の書き方に問題があったとか、組み込みの事情ではうまくいく提案であるとかいろいろあるかとも思いますので、ワークショップに参加された方や組み込み事情に詳しい方にぜひ語っていただきたい。
/.configure;oddmake;oddmake install
Re:微妙な指摘のような (スコア:2, 興味深い)
同じ発表をしています。そちらに参加したのですが、
別に極端な事や狼少年的な事ではなく、むしろ、現実的な、セキュリティとコストの
バランスの上での発言であるように感じられました。
・調べてみると、組み込み機器には、非常にたわいもない脆弱性が
存在する。PCでは既にほとんど駆逐されたような、古典的なバッファオーバーフローの
手口など。
・しかし、そもそも組み込み機器は、PC上で動作するソフトウェアのように簡単に
セキュリティフィックスが出来ないし、実際、ほとんど行われていない
・ならば、JTAGのような中途半端なものは残さないなど、もっとクローズド(外部からの解析不能)にして、
脆弱性を隠す、というのも現実的な対策だ
外部から攻略可能な脆弱性が沢山あるような状態がそもそもの問題だ、ということです。
それが修正されるのであれば、それが最良でしょう。
他の人が沢山おっしゃってますが、JTAG自体は、「脆弱性の発見」のために使うだけであって、
一度発見した脆弱性は、ネットワークから侵入し、乗っ取るのに使用できます。
確か、NICのRAM乗っ取り、などもやっていたような・・・(これは、PCからは気がつけない)
NICやルータを乗っ取ってしまえば、通信の盗聴や改竄はやりたい放題。非常に効率が良いわけで、
これが攻撃の対象にならんわけがない、と。
Re:微妙な指摘のような (スコア:4, 興味深い)
元記事の主張は至極まっとう。
・今では絶滅したようなショボい脆弱性が組み込みには沢山ある
・JTAGを差せば、簡単に脆弱性攻略コードが書けまっせ
・広範に普及しているネットワーク機器などは、攻撃者にとって十分ターゲットになるはず
・脆弱性は当分どうしても作りこんでしまうだろうから、せめて脆弱性を攻略されにくくするフェールセーフくらいは用意しとけ
しかし一番の問題点は、元記事を読んでも、こんな基本的な事すら理解できない技術者(?)がここにすらも沢山居るという事かも。もし組み込み技術者に大半がこんな調子なら、やはりPC用OSと同じ道を辿るんじゃないでしょうかね。
組み込み技術者向けに、もうちょっと基本から分かりやすく解説したような記事なり書籍なりは無いんでしょうかね・・・。
Re:微妙な指摘のような (スコア:1)
なんか組込みだと発見できないという理由があるとでもいうのかな。
Re:微妙な指摘のような (スコア:0)
どちらも吸い出すまでもなく、ソースコードが公開されてるわけで。
クローズなシステムと比べてそんなに攻撃しやすいとは思えないけど。
自由度が高いから自分で穴を開けたり、マルウェアに引っかかったりする可能性は高そうだけど。
代替ファームウェアとか使ってみるのはいかがでしょう? (スコア:2, 興味深い)
http://wiki.openwrt.org/OpenWrtDocs/Hardware/D-Link [openwrt.org]
親切にJTAGやシリアルのpinoutも載っているようですよ。
ソースからコンパイルすればセキュリティのパッチとか
自分で当てたファームをルータに焼く事もできそうです。
# JTAGでファーム焼く環境が有れば、立ち上がらなくなっても元に戻せるかな?
## 全て自己責任って事になりますが。
もはや何処でも対策は当たり前? (スコア:1)
OpenBSDは専用のライブラリを開発・使用して脆弱性対策をしていますが、 これからは(組み込みも含めて)プログラミング環境付属のライブラリも脆弱性対策を行う段階なのでしょうか。怖くて夜も眠れません。
もう、コードを一瞥しただけでは絶対にセキュアとは言い切れませんね。
#Perl適当に書いただけでXSS脆弱性を作成可能だがID。
All your base are belong to us
Re:もはや何処でも対策は当たり前? (スコア:0)
PCと異なり、製品の用途に幅があるのでしょうがないのかもしれませんが。
とりあえず、CPUのコントロールを奪うという点だけであれば、
JTAG経由でデバッガを起動すればできそうです。
しかし、バッファオーバーフローなどに言及しているということは、
ターゲットはルータやプリンタなど、通信用インタフェースを持っているものを
想定しているということでしょうか。
JTAGポートねぇ (スコア:0)
Re:JTAGポートねぇ (スコア:1, 興味深い)
JTAGポート経由で無線操作可能な工作をしたネットワーク製品なんかが売られた結果、エンドユーザが損害(passwordや個人情報の抜き取り)をうけた場合の責任の所在というのはどうなってしまうのだろうか?
JTAGが無ければ事態が起きないと言われたらPL法で縛られる対象なんだろうか
Re:JTAGポートねぇ (スコア:1, 興味深い)
そういうブツが販売されるとしたら、かなりアングラな商売での販売ではないかと。(例えば、iLinkやHDMIなどの外部バスに出力する部分でコピーの制限を外せるようにクラックしてあるファーム突っ込んだDVDレコーダとか、クローン携帯とか…)
ファームのアップデート構造やベースになってるOSをソフトウェアの脆弱性を逆手に取って乗っ取られ、ファームを書き換えられたりバックドア仕掛けられる方が数桁はリスクが高いのではではないですか?
書き換え可能ROM内蔵のMPUであっても、最近のは多くの場合、特定のポートを叩けば書き込みロックが解除できる訳で、私が攻める側だったら、JTAG云々よりはそういうソフトウェア的な手法で書き換えたり、外付けROMやメンテナンス用のRS-232Cポートなどがあればそこから情報をすり替えるとか、そういう「正攻法」で試しますけどね…
やる気の有る奴はBGAであっても専用のフローハンダ付け治具などを使って線付ける位平気でやるでしょうが、他の侵入方法よりは数段どころではなく敷居が高い訳でだし、JTAGでバスを止めて不揮発性の部分を書き換えるというのはそこそこ高度な技術が必要では?動いてるものを変えるのならばそんなに手間はかからないでしょうけど
…古の8bitの個人用マイコンやシーケンサのソフトだったらできなくはない真似でしょうけど、ルータ程度の規模になると大抵の場合、ROM化されたファームは圧縮とCRCなどで多重に防護されている訳で。例外が有るとすればブートローダー部分くらいでは?(でも、間抜けでなければブートローダ込で多重にCRCやHASHかけると思いますが)
…そこまでする位だったら、未知のデバイスの「フリーな」ドライバを作るための挙動調査に注力しますけどね:-)
Re:JTAGポートねぇ (スコア:2, すばらしい洞察)
Re:JTAGポートねぇ (スコア:1)
基本的な話ですが、JTAGが必要な段階の基板から*わざわざ*JTAGなくすためだけにパターン変えるなんてのはコスト的にまずありえませんよね?
よほと致命的なパターン修正が必要で、ついでにJTAGなくしました。というのなら(まぁやられた方は調整工程にせよファームのデバッグ工程にせよすごく迷惑ですけど)なくはないでしょうけど、それやらかすのは酷くバカな開発屋orメーカーですよね。程度の話から膨らませただけなんですけどね。
例えば、元記事で例に出たルータなんかはJTAGコネクタ立ててあるのがあかんような事を元記事の講師の方は強調していますが、コネクタ一個余計にコストに加算してるということはそれ以上の「プラス要素」が製造・販売側にあるからやってることだし、親の仇のようにJTAG外せだBGAつかえだICの型番消せだなどと無意味な事を宣っておられるな…と言うのを念頭に置いて書いたのですが。
つまりは、
>そこにTapされたものが密かに売られたらという元ACの懸念
と言うようなこと自体が机上の空論・あるとしたら違法スレスレの目的にクラックしたブツや所謂「チャイニーズ・コピー品」(もう死語ですね…「パチモノ」と言う方が適切か?)のようなそもそもが物騒な流通ルートでしか流れないブツが売られていて、
そこに「おまけ」でロジック爆弾やtrojan(だけではありませんけど)仕込まれる位じゃないですかね。その位非生産的で量産品の実状を知らないシチュエーション設定だ。と言いたかったのですが。
まぁ、売り元のメーカが定期点検しているブツで、現場のエンジニアがおいたする位はあるでしょうけど…バレたときのリスクが高いわりにかなり手の込んだ「おいた」な訳で、ふつう会社とかお客とかによほどの怨みがなければやらんでしょ。と言うことで、やらかすのはあくまでも購入した側の方が強いのに…と言いたかったんですけど。
Re:JTAGポートねぇ (スコア:0)
>変えるなんてのはコスト的にまずありえませんよね?
見るからにEmbedded ICEインタフェースです!といったパターンを基盤に残す必要は全く無いと思いますが。
BGAなら、たとえば基盤のあちこちにそれぞれのTAPピンを散らしておくなどすると、どれがどれに該当するのか部外者が調査するのは大変ですので、クラッカーのモチベーションを削ぐ効果は高いと思います。しかし、開発者側は簡単にJTAGを接続する事ができますし、これによりコストが大幅アップするとは思えませんが
Re:JTAGポートねぇ (スコア:1, すばらしい洞察)
ブラックボックス化することによって安全性を得ようという発想(クローズドソースだから安全というのと同様)自体の是非はあるでしょうが、現実的には一つハードルが高くなる分、小さな安全は得られるでしょう。
Re:JTAGポートねぇ (スコア:0)
設置してある場所に進入でもする気?
Re:JTAGポートねぇ (スコア:1, すばらしい洞察)
一台あれば、JTAGポートからデバッガで内部がどうなってるかを調べて
攻撃コードを作ることができて、それによってできたコードを用いて
他の装置に *外側から* 攻撃できるということだと読みました。
違うの?
件の記事からはそうとしか読み取れなかったんだけど。
Re:JTAGポートねぇ (スコア:0, 参考になる)
JTAGってのはシリアル通信形式で、チップ内のレジスタやメモリを読み書きする為の物理的な端子で、例えばルーター内の基板にJTAGポートが付いていたとして、そこにアクセスする為には、ルーターの設置されている建物に侵入して、ルーターの設置されている部屋に到達できて、ルーターを分解してJTAGポートにデバッガなり何なりを接続してって作業が必要だよ?
Re:JTAGポートねぇ (スコア:3, すばらしい洞察)
外部から攻撃可能な脆弱性を発見することも可能、ってことじゃね?
Re:JTAGポートねぇ (スコア:0)
Re:JTAGポートねぇ (スコア:0)
Re:JTAGポートねぇ (スコア:0)
やっと出発点。
で、PCなどの汎用機では既になされてる対策が、全くなされてない組み込みシステムが多いということで、タレこみのリンク先では「あなたたちの粗末なコードを隠してください」と言ってる訳です。それに対する疑問や評価が [#1138903] [srad.jp] [#1138886] [srad.jp]。
Re:JTAGポートねぇ (スコア:0)
手の込んだ対策をしようと思えば、その分製品単価に跳ね返るからね。
物理的な防御を完全にするのは、かなりのコストが掛かると思うよ。
コストの安い簡単なプロテクトを施した程度じゃ、
解析したくて解析する側はすぐに破ってくるだろうし。
コストを掛けたとして物理的な防御もある程度以上に強固にした場合、
今度は、製品を修理できなくなるよ。
Re:JTAGポートねぇ (スコア:1, すばらしい洞察)
Re:JTAGポートねぇ (スコア:1)
JTAGはあくまで脆弱性の解析と攻撃コード作成に必要という話。
PCの場合はデバッガをインストールできるので脆弱性攻略が簡単なのは明白だが、組み込みでもJTAGを使える状況なら簡単にデバッグできて攻撃コードが作成れますよ、というお話。
Re:JTAGポートねぇ (スコア:4, 興味深い)
>パケットスニファの設置が物理的に可能だということだよね。
いやだから、、、
(1) 友人が使っているD-Linkのルーターに侵入したい
(2) とりあえず、脆弱性があるかないか調べるために、店で友人のと同じD-Linkルーターを買ってきた
(3) 脆弱性を見つけ攻撃コードを書くには、対象をデバッグしなければいけない
(4) デバッグするためにはJTAGが手っ取り早い(っていうか、クローズドな組み込みでは他に簡単で良い方法が無い)
(5) こうしてD-Linkルーターの脆弱性を攻略する攻撃プログラムが完成した
(6) この攻撃プログラムは他のD-Linkルーターでも動作するので、これを使って友人のD-Linkルーターに侵入
こういう事。
攻撃プログラムさえできてしまえば、友人宅のD-Linkルーターに物理的に触る必要は全く無い。
Re:JTAGポートねぇ (スコア:0)
たかだか数万円の機材をハックするのに、
平気でン十万、ン百万円もするJTAGを使う意味があるのだろうか?
職場で使ってるJTAGの接続ケーブルがハード屋のミスで
おじゃんになったとき、たかだか50cmのリボンケーブルで
5万円とか言われたときは目を疑った・・・・・
(テフロンコートの銀メッキ線のリボンケーブルってので、値段に納得したが)
Re:JTAGポートねぇ (スコア:0)
Re:JTAGポートねぇ (スコア:0)
が、「同じ装置を誰が使ってるか」はどうやって知るの?
「誰」が初めから決まっている…つまりターゲットが限定されているなら、「何を使っているか」をどうやって特定する?
「同じ装置」が決まっている…つまりターゲットが非限定なら、どうやって探す?
ポートを残さないことが「more better」なことは否定しないが、煽りすぎだよ。
Re:JTAGポートねぇ (スコア:0)
「こんなこともあろうかと」という手段として
保持しておく人だっているんじゃないの?
Re:JTAGポートねぇ (スコア:0)
みんな~! (スコア:1, 参考になる)
たとえ、いまのところは製品検査に使われる頻度よりもソフトウェアのデバッグやROMやコンフィギュレーション情報の書き込みに使われる頻度のほうが圧倒的に高いとしても、だ。
Re:JTAGポートねぇ (スコア:0)
とかなら、いくらでも機器の蓋あけて細工可能とか
JTAGが付いてても、、 (スコア:0)
コードにはデバッグ情報が含まれていないからマシン語でしか読めないし、バウンダリスキャンを使ったところでハードディスクとかの非メモリなデバイスにアクセスすることも出来ない。
フラッシュとかSDRAMとかのメモリにはアクセスできるけど、「どのチップセレクト信号がどのデバイスに繋がっているか」「どのアドレスに何が書いてあるか」が判らない状態で個人情報を吸い出そうっていうのかな。。
頓珍漢な対策ばかり (スコア:0, 興味深い)
組込みシステムが攻撃のターゲットになることはないんじゃないかなぁ。
Re:頓珍漢な対策ばかり (スコア:0, 興味深い)
JTAGが駄目ならPCなんてもっと駄目だよね (スコア:0)
そんな直接ハードを触れる状態にあるなら、PCだろうが組み込み機器だろうがセキュリティなんてないに等しいのは自明の理。
JTAGが駄目なら、PCだってOSを入れ替えたりハードウェアを簡単に変更出来るんだから駄目駄目だよね。
もっとも、組み込み機器系にバッファオーバーフローなどの脆弱性が多く残ってるのは否定はしない。
実際に設定関連のCGIとかチェックが甘くて、ブラウザでは入力制限で入力できない長さの文字列を送りつけるとリブートしたりするってのは結構ある。
重要なのは他人がアクセスできるような状況にあるものはPCだろうが組み込み機器だろうがリスクを持っているって事を認識すること。JTAGだとかそんなのは不備でもなんでもなくただのこじ付け。
Re:JTAGが駄目ならPCなんてもっと駄目だよね (スコア:0)
ということで、手元の実機のJTAGポートを使って解析して、攻撃対象の同機種をリモートから攻撃する方法を発見したってことです。
Re:JTAGが駄目ならPCなんてもっと駄目だよね (スコア:1, 興味深い)
と読み解くには無理があります。
Re:JTAGが駄目ならPCなんてもっと駄目だよね (スコア:3, すばらしい洞察)
危険性としてはPCと同じだが、攻略されなかった大きな原因はクローズドアーキテクチャであり、かつ、機器を簡単にデバッグできないと多くの攻撃者が思っていたという事(バッファオーバーフローを攻略するためには、動作中の実機をデバッグする必要があるでしょう)。
セキュリティというのは、基本的にトレードオフ。デバッグもメーカーなら簡単に出来る訳だが、単に、攻撃者のような外部の人間には難しいとされていたため、脆弱性があっても攻撃コードが世の中に出現しにくいという背景があった(そういう意味で、組み込みで言えばクローズドアーキテクチャは攻撃者にとって足かせのひとつにはなり得た)。
それが、JTAGが基盤に残ってると、JTAGさえ買ってくれば簡単に誰でもデバッグできてしまう(今は数万円で買えるはず)。デバッグができれば、もしバッファオーバーフローなどの脆弱性があった場合、簡単に攻撃コードを作成されてしまうので、攻撃者にとって非常に大きな障害が一つ減って攻撃コード作成が楽になる。
汎用的な組み込み機器の場合、それを買ってきて分解し、脆弱性を探してJTAGでデバッグしながら攻撃コードを作成すると、それが同一型番の全ての機器で動作する事になる。その攻撃コードが公開されれば、第三者はある特定バージョンの汎用OS向け攻撃コードと同じ要領でそれを利用できる。
対策としては、当然ながら脆弱性を無くすのが一番だろうが、組み込みシステムの場合、耐タンパも考慮すれば、攻撃コード作成に至らない可能性がある。セキュリティは、本質的な対策だけではなく、セキュアチップに見られるような攻撃に対する障害(破られるかもしれないが)を増やす事も大事でしょう。バッファオーバーフロー脆弱性を発見したとしても、結局、世の中の攻撃者がデバッグに成功しなければ攻撃コードを作成する事はできない訳で。バッファオーバーフロー対策のハードウエアDEPだって、破られる事が分かっていても実際の攻撃プログラム作成に対する障害としては決して無意味では無いのと同じ。
組み込みの場合、クローズドアーキテクチャや耐タンパは、汎用システムと違って、脆弱性に対する防御策としてある程度考慮すべきでしょう。そういった意味でも、ルーターのような脆弱性が発生するとまずい機器に、見た目一発で分かるJTAGポートがそのまま乗っかってるのは問題でしょ。
Re:JTAGが駄目ならPCなんてもっと駄目だよね (スコア:0)
このノリで行くと、そのうちセキュリティ重視の製品は、
全てエポキシ樹脂とかで基板を固めてありそうだな(笑)
(固めたところで削れば解析できちゃうだろうけどね。)
Re:JTAGが駄目ならPCなんてもっと駄目だよね (スコア:1)
ルーター程の規模だとROM外付けだとは思いますが。
Re:JTAGが駄目ならPCなんてもっと駄目だよね (スコア:1, すばらしい洞察)
書き込むことはできてでも、読み出すことはできませんよねえ。
適用対象と可動条件を限定しない一般的なセキュリティ話なんて、
組み込みに限らず煽りねたとしての値打ちしかないような。
Re:JTAGが駄目ならPCなんてもっと駄目だよね (スコア:1)
↓に適用対象と稼動条件が公表されてますよ。
http://research.eeye.com/html/advisories/published/AD20060714.html [eeye.com]
Vendor:
D-Link
Systems Affected:
DI-524 Rev A
DI-524 Rev C
DI-524 Rev D
DI-604 Rev E
DI-624 Rev C
DI-624 Rev D
DI-784 Rev A
EBR-2310 Rev A
WBR-1310 Rev A
WBR-2310 Rev A
Re:JTAGが駄目ならPCなんてもっと駄目だよね (スコア:1)
軍用の製品でも先端技術が使われているものではそこまでしているのがあるとは聞きますが、通常は基板検査が終わった時点でコーティング材を厚めに塗れば済むのでは(汗)
本当に隠蔽したい部分だけハイブリッドICのように別基板に実装して不透明のモールド材で固めることは今でもそこそこあるとは思いますが…
>(固めたところで削れば解析できちゃうだろうけどね。)
確かに、そうですね。
冷戦時代には西側が戦略物資指定したICやLSIを東側が解析してデッドコピーして軍用に使うのは普通だったようですが。
Hack前提の玄箱にJTAGが付いていても脆弱性? (スコア:0)
#玄箱Proの穴が大きくてコンスルー使えず_| ̄|○
「基盤」なんて字を書いているようじゃ (スコア:0)
#「基板」って書けよ。
Re:「基盤」---おふとび (スコア:0)
(風俗用語で、本番のこと。)
ニヤと笑ってあげましょう。