世界を動かす技術を、日本語で。

Flipper Zeroのダークウェブファームウェアがロールコードセキュリティを回避

概要

Flipper Zeroのカスタムファームウェアにより、最新の車両で使われるローリングコード式セキュリティが破られる事例が報告。 従来のRollJam攻撃よりも簡単に実行可能。 キーのボタンを1回押すだけで全機能をエミュレート可能。 影響を受ける車種が多岐にわたる。 現時点で簡単な対策は存在しない。

Flipper Zeroによるローリングコード攻撃の新展開

  • Talking Sasquatch がYouTubeでFlipper Zero用カスタムファームウェアのテストを実施
  • ローリングコードセキュリティ は、送信機と受信機で同期したアルゴリズムにより毎回異なるコードを生成
  • これにより、 リプレイ攻撃や不正アクセス を防止する仕組み
  • 過去には RollJam 攻撃が有名だが、実際の運用は難易度が高い
  • RollJamは信号を ジャミング しつつ記録、後で再利用する手法

新攻撃手法の特徴

  • 新たな攻撃では キーのボタンを1回押すだけで信号をキャプチャ可能
  • ジャミング不要で、 1回のキャプチャで全機能(ロック、アンロック、トランク解錠)をエミュレート
  • この結果、 純正キーフォブは同期ズレにより使用不能
  • 攻撃者は ローリングコードのシーケンスを逆解析
    • シーケンスのリークや既知コードリストからのブルートフォースも利用
  • 別記事によると、 "RollBack"攻撃 が基礎
    • 特定順序でキャプチャ済みコードを再生し、同期システムを「巻き戻す」手法
  • 動画では 1回のキャプチャで完全なキーフォブエミュレーション が実証

影響範囲と対策

  • 影響を受ける車種
    • Chrysler, Dodge, Fiat, Ford, Hyundai, Jeep, Kia, Mitsubishi, Subaru
  • 現時点で 簡単な修正や対策は存在せず
  • 実質的な対策は 大規模なリコール対応 のみ

技術的背景と参考文献

Hackerたちの意見

その結果、元のキーフォブが同期を外れて、もう機能しなくなっちゃうんだよね。これってどうなるんだろう?ユーザーがリセットできるの?それとも小売店とかでやらなきゃいけないの?

実装によるね。大抵は何回か連続でクリックすれば大丈夫。受信機がボタンの押し忘れに気づいて再同期するんだ。ただ、そのタイミングがどのくらいかは分からないけど、あまりにも同期が外れると受信機が無視しちゃって、間違ったフォブだと思われるかも。

いいね、予備の車の鍵を買うつもりだったけど、もうやめた!それに、禁止される前に手に入れられてよかった。全部一つにまとめられる便利なツールだし、4つのフォブやガレージのリモコン、たくさんのIRリモコンを持つ必要がないからね。しかも、失くしたフォブを交換するための手数料も払わなくて済むし。

残念ながら、追加の鍵としては使えないんだ。元の鍵が使えなくなっちゃうから。

たまに考えるんだけど、もし通信信号が(a)放送されてなかったり(b)人間には感知できないものだったら、どれだけこれを避けられたかって。ドアハンドルに電気接点があれば、誰かが信号を監視したり、他の信号を注入するのはすごく難しいだろうし。信号が音として聞こえれば、誰かが妨害してるのが分かるしね。実際、遠くからフォブを使う一番の目的はロックで、アンロックじゃないから、その2つの操作には同じセキュリティリスクはないんだよね。

実際、リモート距離からのフォブの一番の使い方はロックで、アンロックではないんだよね。この2つの操作には同じセキュリティリスクがないと思うんだけど、同じローリングコードキーをロックとアンロックの両方に使ったらリスクは同じじゃない?自動車メーカーがロックとアンロックで別々のローリングコードキーを使ってるとは思えないな。

この攻撃はキーロックプロトコルに対するものだと思う。チップに実装されている暗号化に対して、これまでに完全に破られたことはないはず。ここで何をやっているのかを理解するのは面白そうだね。

理にかなったプロトコルはmTLSだろうね。でも、これらのフォブがやってないことは何だと思う?

もし攻撃によって元の鍵が使えなくなったら、個人的には大きな脅威は駐車場に座っている誰かがキーの押しをキャッチして攻撃を仕掛け、ユーザーに面倒をかけて牽引+再プログラムさせることだと思う。車を盗むよりもね。

車の中に保管されているものを盗むために侵入することもできるし。

店に入るときにロックをキャッチして、その間に車を持っていくって感じかな。

キーレスの「スタートボタン」機能が車にとって悪いアイデアな理由はこれだね。昔のように、車を開けるためのキーフォブと、点火用の本物のキーを使う方が安全だと思う。複数のセキュリティレベルがあるのはいいことだよね。でも、昔車のセキュリティ業界で働いてた時に気づいたんだけど、実は車メーカーは顧客の車が盗まれるのを好んでるんだよね。保険金の支払いが新たな販売につながることが多いから。

DIYオプションとしては、ほとんどの点火システムにシンプルなスイッチやリレー(その認証要素に接続されたもの)を追加することで、MFAのようなセキュリティを加える方法は確かにあるよ。ただ、それはこの攻撃の「デシンク」やアンロックの側面には役立たないけどね。

知る限り、プッシュボタンスタートにこの種のローリングコードアルゴリズムを使っている車両はないよ。キーフォブ機能だけだね。特にヨーロッパでは(イモビライザーの規制のために)そうだし、他の場所でもそうだと思う。一般的に、長距離のキーフォブボタン機能と短距離のスタート解除機能は分かれていて、これはセキュリティ上の理由と、それぞれが占める異なる問題空間のために意図的にそうされてるんだ。ヨーロッパのメーカーは、一般的に暗号鍵のセキュリティがかなり良いことも注目に値するね。これは規制や保険会社と自動車メーカーの関係、セキュリティ基準の必要性、そして高い盗難率が対立的な環境を生んでいるからだと思う。

特定のメーカーの保険料がどれだけ上がっているかを考えると、かなり短絡的だよね。人々は特定のヒュンダイのモデルに対して高い保険料を支払うことを知っているし、そんなブランドのダメージは安くないと思うよ。

今、レンタカーを運転してるんだけど、この機能があって本当にイライラする。全然価値がないし、この機能は「クール」だと思う人たちにアピールするためだけに存在してるんだろうね。(そんな人たち、いるよね?)慣れるとは思うけど、ちょっと外に出るために鍵を車に投げ戻さなきゃいけないことが多くて、エアコンをつけっぱなしにするのも面倒だし。鍵と子供を車の中に置いたままロックされるのが心配だから、窓を下げることも忘れないようにしないと。

市場に出ているローリングキーシステムの多くはKeyLoqに基づいていて、KeyLoqはかなりよく設計されたシステムなんだ。大事なピンがあって、「メーカーキー」って呼ばれるものが必要なんだよね。このメーカーキーは、リモコンのフィールドペアリングを許可するデバイスには必ず必要。もしそのメーカーキーが知られてしまったら、認証器から2つのサンプルを取るだけでシーケンスキーを特定できちゃう。メーカーキーがない場合は、ジャミングやリプレイ攻撃が有効だけど、シーケンスキーをブルートフォースするのは一般的にコストがかかりすぎる。でも、フィールドプログラミングをサポートする受信機には「メーカーキー」が必要だから、そういうユニットを購入すれば、そのキーを抽出できるかもしれないね。

固定の秘密マスターキーを必要としないシステムを設計できたはずなのに、代わりに各受信機のためにユニークなランダムキーを生成して、フォブと受信機(車のロックされた部分の中にある)との間に物理的な接続を必要とするようにすればよかったのに。もちろん、そんな一般的なシステムは、修理やアフターマーケット業界をコントロールしたいメーカーの利益に反するだろうけど。

アマゾンでフォードのフリートキーを注文して、15ドルくらいでほとんどのフォードのトラックやバンにアクセスできるって考えると、これは難しいよね。

じゃあ、ドアを閉める前に手動で鍵をかけるのに戻るしかないな。車の中に鍵を置きっぱなしにしないように、絶対気をつけないと。

この新しい攻撃が成立するためには、キーフォブからのボタン一回押しのキャプチャだけが必要で、ジャミングは不要なんだ。その一回のキャプチャで、ロックやアンロック、トランクのアンロックなど、キーフォブの全機能をエミュレートできるんだ。キーフォブのボタンを押さなければ、これからは安全なのかな?普段使うキーフォブの機能は、車の外でドアハンドルから約1メートル以内にいるときに、ドアハンドルのボタンを押すことでドアをロックしたりアンロックしたりすることだけなんだけど。

面白い質問だね。その機能がNFCとか他のプロトコルを使ってない限り、まだ脆弱だと思うよ。