クレジットカード端末でRootシェル取得に成功
引用元:https://news.ycombinator.com/item?id=44150803
安いUSBカードリーダーでも偽のデビット/クレジットカード決済はできるよ。仕様は全部公開されてるし、プロトコルも文書化されてる(IIRC、PDFで5000ページとかあって読むのは大変)。
でも、その決済を認証させるにはインターネット経由で銀行に送る必要があって、そうすると連邦警察とかFBIとかの訪問を受けることになるよ。
カードリーダーには本当の保護はない(大半はLinuxでしょぼいパスワード)。保護は店と銀行の間の契約や規制から来てるんだ。
現場のカードリーダーがハッキングされて、キャッシュされたり保存されたりしてる本物のクレカ詳細を読み取られたり、マルウェアを仕掛けられたりする方がもっと心配だな。(今回の特定ケースでは難しそうだけど、この分野の研究が関係あるってことだね。)
今どきのクレジットカードって、基本的に物理的な秘密鍵みたいなもんじゃないの? IIRCだと、決済は一回きりのペイロードで、その操作専用に署名されるから、傍受しても役に立たないはずだけど、僕のカードの仕組みについての理解が間違ってたらゴメン。
> カードリーダーには本当の保護はない(大半はLinuxでしょぼいパスワード)。
そんなことないよ。署名済みバイナリしか動かせない、実行可能なファイルシステムは読み取り専用、データ用ファイルシステムはnoexecビットがセットされてる、rootログインは無効、機能が削られたbusybox、鍵は起動時にセキュア領域から読み込む、マスターキーの注入は工場出荷時だけ、起動自体も多かれ少なかれ安全、不正開封検出でチップは初期化される、とかね。
まあ、EMV認定されてないアジアから輸入された安いAndroid端末なら、多分標準的なLinuxで、rootファイルシステムは書き込み可能、rootログイン有効だし、アプリ実行ユーザー向けにsudoも有効、不正開封検出なし、画面キャストもロックされてない、ポートは全部開けられるし、busyboxも結構使えるやつだろうね。
ソース:俺。カード取得用のEMVアプリを何年か開発してた(今も時々やる)。開発モード(ベンダーが開発者のIDを要求)でさえ、これらはすごくしっかりロックダウンされてるんだ。
最近変わってなければ、それはNFC決済とチップ決済にしか当てはまらないよ(スキミングを避けるためにも常にそっちを選ぶべき)。昔ながらの磁気ストライプ決済には関係ないんじゃないかな。
まあ、そうだけど、もしカードリーダーを制御できたら、金額を表示せずに決済金額を増やしたり、例えば違うアカウントに送金したりできるかも。
今どき磁気ストライプなんてまだ誰か使う?チップなしのクレジットカードなんて10年以上見てない気がするし、端末はずいぶん前からチップを読めるようになってるよ。この前、磁気不良で店が磁気ストライプを使おうとした時も、チップを使わないってだけで決済拒否されたよ。
端末リーダーから勝手に全然違うアカウントに送金なんて絶対無理だよ。
銀行は誰でもクレジットカード決済を送信して、勝手なアカウントに送れるようなガバガバなプロトコルは使ってない。
不正請求の費用はクレジットカード会社が負担するんだから、そんな簡単に起こせるようにはしないさ。
ほとんどのPOS端末って、「オフライン」決済を受け付けなくなったと思ってたけど。
今はそうかもだけど、特にアメリカ以外では、クレジットカードとデビットカードの境界線がかなり曖昧になった今、ね。
10年くらい前、イギリスのレストランでAMEXカードでオフライン決済したのをハッキリ覚えてるよ。
あと、機内で決済を受け付ける航空会社のほとんども、端末をオフラインモードで動かしてる。
きっとBINコードなんかで、オフライン決済を許可するかどうかのマッピングがあるんだろうね。
契約とか規制で守られてるって話は的を射てるね。非接触カードリーダーで街中歩いて金盗むってトンデモ説がウソなのはこれが理由。たしかに取引自体はできちゃうけど、その後の処理や、それに必要な準備が大変なんだ。それに、取引通知で即バレする人が多いから、捕まる前に金を引き出すのはまず無理だろうね。
ほんと、ちょうど今週だけで2回も「チップリーダーに問題が」って言われてスワイプさせられたよ(CVSとWegmansで)。
「2ドルのUSBカードリーダーで偽のデビット/クレジットカード取引ができる」って話、やり方じゃなくて、もうちょっと詳しく解説してくれないかな?
デバイス買ったらRoot権限は当然欲しいでしょ。支払システムがこんなテキトーなデバイスのローカル権限に依存してるなんて、どんなゴミみたいなリクエスト受けても文句言えないわ。
「署名付きバイナリだけ実行、ファイルシステムは読み取り専用、rootログインなし、機能制限付きbusybox、鍵はセキュアエリアから、マスターキーは工場でのみ、起動もセキュア、改ざん検知でチップ消去」とか、色々対策してるのは分かった。じゃあ、その対策破るために誰か雇って攻撃テストとかしたの?脆弱性とか見つかった?
オフライン決済をサポートするか、いくらまで許すかは加盟店次第だよ。端末は確かに対応してる。取引データは暗号化とかされて安全に保存されるんだけど、端末がネットに再接続するまで。ルール上、オフライン取引の失敗リスクはほぼ全部加盟店が負うことになってるんだ。だから、ほとんどの店はそのリスクを取りたくなくて、オフライン決済機能を無効にしてる。
セキュリティ攻撃テスト専門の人はウチの会社にはいるよ。業界全体がどうかは分からないけど、EMVアプリケーション開発者でさえ敵扱いするくらいセキュリティは厳しい。認証プロセス自体でも、PIN入力中とかに変なことさせようとする悪意あるテストは少しやるみたい。
「取引を検証するために銀行にインターネット経由で送る必要がある」っていうのは全然違うよ。銀行はカード取引処理用のオープンAPIなんてネットに公開してないから。
たぶんGPさんは勘違いしてるね。安いリーダーでカードの磁気ストライプは読める。暗号化されてないからカード番号(PAN)とか有効期限とか名前は取れるけど、CVVは無理。EMVは暗号化されてるけど鍵が漏れることも。でも、カード読んだだけじゃ取引をネットワークに送る能力は手に入らないよ。それには加盟店の決済ゲートウェイの認証情報とか、店のネットワークに入る必要がある。これは不可能じゃないけど、たとえできても資金は店の銀行口座に入金されるだけで、自分のものにはならない。お金を盗むのは無理なんだ。クレジットカード端末のRoot権限取得が興味深いのは、その後その端末で使われた全カードの詳細を盗めるから。それらの情報を使って、よくあるクレジットカード詐欺ができるようになる、ってことだね。
それも考えたよ。触ったことないから、root取れたら何ができるか想像つかないんだよね。
レストランならオフライン決済を受け付けるのが普通だよね。注文した時、カード決済できなくなる可能性なんて知らなかったよ。普段現金持ち歩かないし、もし端末がダウンしたら店の責任だもんね。
> If I buy a device it sure as shit better give me root<br>実際どうなの?洗濯機とか乾燥機、電子レンジの着信音もう変えまくってるわけ?
2ヶ月前にAmexとVisaの2枚同時に不正利用された体験談。スキマーかと思ったら、両方使ったサイトはないし。Visaはホテルで使われた通知きて、アプリ見たら別の取引も保留になってた。ホテルに電話したら「客追い出して返金」だって。警察呼ばないのが謎だけど、全部返金されたから損失ゼロで報告することなし…損失はホテル側なのにね。同じ日にAmexも不正利用されたけど、こっちはベンダーが自動返金してくれたみたい(たぶん不正防止で)。変なのは、Visa使われたホテルが「カード現物かデジタルウォレットでの取引」って言ってたこと。でもデジタルウォレットに登録した覚えないしカードは常に持ってた。間違いか嘘か、デジタルウォレット偽装か…。結局、俺がすぐ気づいてカード止めたから犯人は失敗したんだけど。
USAはchip/tap端末の導入がCanadaに比べて遅かったよね。Apple Payが出てきてからやっとtap対応端末が普及した気がする。
10年前、飛行機でオフラインのデビットカード決済やったの覚えてる。あの古いエンボス加工のやつでカード通してたんだよ笑
> Yeah, I did think of that. I’ve never played with one of those so I don’t really have much of an imagination about what they could do with a cracked one.<br>デスクにいくつかあるけど、dev-modeでも金盗むことなんてできないよ。
前のコメントで、加盟店情報を丸ごと変えて、もっとアクセスしやすい口座に金を吸い上げられるって言ってる人がいたよ。
> unless it’s changed recently<br>Europeでは15~20年前に変わったよ。EMV対応端末が必須になって、すぐ磁気ストライプカードの受付はやめたからね。10年前にApple Payが出てからは、カードをスワイプできなくて困るUSの観光客も見なくなったし。
USでは利用可能な技術がAppleが流行らせるまで普及しないのを何度も見るのはいつだってすごいね。
最近乗った飛行機、機内決済がオンラインになってたっぽいよ。Starlinkとかで常に通信できるようになってるからね。昔から飛行機は通信機能持ってたし、Wi-Fiもあるんだって。飛行機がオフラインな時代はもう終わったみたいだね。
もっとコメントを表示(1)
StripeのM2 reader、買って3年で9日しか使ってないのに36台中7台も壊れたんだ。充電できない、NFC使えない、”tampered”って出る。ハードケースで保管してるのに、故障率ヤバいよ。でも他の端末よりマシだから使うしかないんだよね。
バッテリーは充電少ない状態で長く置いとくとダメになりやすいよ。tamperになるのもバッテリー関係してるんじゃない?次使う前にちゃんと充電しといた方がいいよ。
使う前に充電してるし、イベント前には起動してチェックしてるよ。予備持ってるから助かってる。tamperになったのは同じケースに入ってたから、もしかしたら衝撃かも。でもNFCとか充電の問題は納得いかないんだよね。
Stripeの端末、バッテリーじゃない有線のだとどう?POS選んでるんだけど、Stripeも候補なんだよね。有線のヤツは使ったことある?
もしかして、tamperの状態になった時にRootシェルが開くようになってるんじゃない?セキュアな状態からデバッグ用の状態に切り替わる時に、重要な鍵は消えちゃうとか。
俺も同じこと考えた!tamper状態になった時に新しい鍵入れたらまた使えるかな?とか。もう使われなくなるなら、中古で探してみようかな。
それ試してみたけど、tamperになってない別の端末でもシェル取れたんだよ。だからtamper状態は関係ないみたい。
えっ、tamper検知されないでRootシェル取れるってマジ?それはヤバすぎる…。
記事でドリルなしでポートにアクセスできるって書いてあったと思うよ!
俺もそう思ったんだ、新しいキーをフラッシュしてまた使えるかもって?
でもどんなキー使うんだよ?新しいキーで暗号化しても相手は復号できないし、意味なくない?
すぐ興奮しちゃう人向けに、記事で書いてたのはね、Rootシェルがあっても思ったよりヤバくないってこと。
カード情報みたいな大事なデータがこれで盗まれた証拠はないんだって。
セキュリティ設計者には勉強になる記事だね。
物理的に端末に触れてRoot権限があるのに、クレジットカード番号が読めないなんて絶対ありえないと思う。
セキュリティの世界では、物理アクセスはRootアクセスと同じくらい、ハック確実ってことだから。
だから最新のチップカードとかタップ決済は、敏感な番号を全く公開しないんだよね。
カードリーダーは存在しない番号を盗めない。
磁気ストライプカードだけがそんなに安全じゃないけど、ここで悪用されたカードリーダーには磁気ストライプリーダーすらないんだ。
とはいえ、完璧なセキュリティじゃないよ。
チップ/タップカードがリーダーと接触中は、不正な目的で使われる可能性はある。
物理アクセスは、カード自体のセキュリティを破ったり、カードを撮るカメラを設置したり、他の悪用につながる扉を開けることもあるんだ。
このカードリーダーには磁気ストライプリーダーがないって?いや、あるよ。
端末の右側だよ。
https://worldline.com/content/dam/worldline/local/sl-si/docu…
ここで確認できるよ。
よく見つけたね、記事の写真見ても(普通のシンボルも)気づかなかった。
理想的には、こういうストライプの使用は完全に排除されるべきだね、安全にはできないから。
磁気ストライプは2027年に消え始めて、2029年にはなくなる予定だよ。
チップに磁気ストライプ情報が含まれてた印象だけど、展開が進むときにはなくなったと期待してる。
もうすでに、磁気ストライプ取引のリスクは店側が負うことになってるんだ。
EMV接触標準では、SDA(Static Application Data)へのフォールバックを許可してるみたいだね。
SDAは全然変わらない静的なデータで、偽造カードにかなり簡単にクローンできる。
それが磁気ストライプにエンコードされてるデータと同じかは分からないけど、大して良くない。
ハッキングされたカードリーダーは、SDAだけをサポートするフリをしてこれを悪用できるかもね。
でも、カード側がSDAをサポートしないことでこれを軽減できるんだ。
銀行はSDA取引のリスクを加盟店に押し付けて影響を減らせるんだって。
データがスキミングされてカードが悪用されても、発行者はチャージバック手数料で儲かるからね…
UKでチップアンドピンが始まったのは2006年。
まさかまだこんな古いのが使われてるなんてびっくりだね。
導入は2004年で、2006年に義務化されたんだ。
フランスはもっと早くて、1992年からチップカードを使ってたらしいよ(前の規格だけどね)。
お店でまだ磁気リーダーを見ることはあるけど、支払いにじゃなくてバウチャーとかポイントカード、返金スキャン用に使われてるな。
支払いではもう使わないね。
オランダではバウチャーやポイントカードを決済端末で見たことないな。
いつもバーコードを店員か自分でスキャンするんだ。
返金はチップか非接触でやるよ。
”チップカードや非接触決済のような最新技術は、機密性の高い番号を一切公開しない。”って言うけど、
番号なしでどうやって取引内容を確認するんだろうね?
銀行はカードの公開鍵、カードは秘密鍵を持ってるHSMなんだ。
銀行は公開鍵でカードの署名を検証できるよ。
端末は入力値でカードに署名させて、カードはパスワード間違いなら署名しないんだ。
銀行はさらに妥当かチェックするよ。
”端末は入力値でカードに署名させる。”って言うけど、
ハッキングされた端末だと表示は1ドルなのに、実際には500ドルの取引署名をカードに要求できるのが問題だね。
もっと安全なら、カード本体に画面とPIN入力があればいいのにね。
端末が信用できるか分からないから。
悪意ある加盟店やMitMが画面表示をごまかしたり、完全に操作してる可能性もあるもんね。
大事なのは、クレジットシステムは暗号技術だけじゃないってこと。
認証情報が取れなくなると、詐欺師はそこで取引するしかなくなるから、どこで問題が起きたか特定できるんだ。
悪質なお店は追放したり、端末を調べたりできるし、ブロックチェーンと違って不正な取引は取り消せるよ。
この端末が僕が扱ったのに似てるならね、rootシェル取れたデバイスは、カード情報を扱うのと”同じデバイス”なのは、筐体とか同じ基板にあるって意味だけだよ。それ以外は別のコンピューターなんだ。
僕の場合、”外側”のシステムはAndroidだったから、ADBで好きに操作できたんだ—セキュリティはゆるめだったよ。”セキュアボード”は決済の詳細を扱う部分だけ担当してた。
決済フローをテストするために、結局3Dプリンターを改造してスタイラスを持たせることにしたんだ。Androidの組み込みツールだと、セキュアボードがやってることは”Xドルで決済開始”、”ユーザーがキャンセル”、”Xドル決済完了”みたいな限定されたアクション以外、何も見えなかったし触れなかったからね。
セキュアファームウェアを起動するか、改ざん画面に行くか決めるバイナリを見てみたら?おそらく、パッチすればセキュアファームウェアを動かして、もっと調べられるのが簡単だと思うよ。
Linuxシステムの目的がネットワーキングとアップデートなら、セキュア部分のファームウェアをアップデートする方法があるってことだよね。それは理想的じゃないな。
改ざんチェックがLinuxのユーザーランドにあるなら、そのファームウェアアップデートはすごく怪しいと思うよ。
起動するか改ざんモードに行くか決めるバイナリは”loadercode”だよ。これは完全性が保護されてる(多分Boot ROMか何かで)。
セキュアファームウェアはアップデートできるけど、それも署名されてるんだ。
もっとコメントを表示(2)
もし完全性保護がTPMの実装みたいなら、メモリにロードされた後は適用されないことが多いんだ。最初にロードされた時だけ、それ以前のものも含めて証明されたってだけ。
これはユーザーランドに入るとすごく重要になるよ。特に古いシステムなら、適当な既製のExploitを連鎖させて、loadercodeとか何かのbinfmtローダーを修正するつもりでカーネルメモリを変更できるんだ。
もちろん、loadercodeがセキュアファームウェアを呼び出す薄いシムで、改ざんモードがディスプレイを制御する別のファームウェアじゃなくてセキュアファームウェア側にあるなら、あまり先に進めないだろうね。
要するにね、すごく古いLinuxディストリビューションのrootファイルシステムを制御できるなら、Linuxバイナリ自体の他のセキュリティ対策はあまり意味ないんじゃないかって懐疑的なんだ。
Linuxはどんなセキュアなバイナリも扱わないよ。署名されて暗号化されたセキュアイメージが置かれてるファイルシステムを共有してるだけなんだ。
loadercodeの検証はLinuxではやらないよ。むしろ、非セキュアなブートローダーがファイルシステムからそれを読み込んで、どこかのメモリアドレスにロードするだけ。そこから、完全性がチェック(?)されて、第2のセキュアコアで実行されるんだ。これがセキュアイメージを検証してチェーンロードするんだよ。
それは設定次第だよ。マスターカードとVisaのデビットとクレジットに、実際のプロトコルの違いはあまりないんだ。
ベルギーのDelhaizeもこれを使ってるけど、間違いなくあらゆる種類のクレジットカード(少なくともVisa、MasterCard、さらにはAmExも)で使えるよ。
記事を読んでよ。実際の作業は、署名されたイメージだけを実行する別のプロセッサがやってるんだ。
(侵害された)Linuxが”侵害モード”のコードをロードするか、mp1セキュアシステムをロードするか決める?それは探るべき道筋のように聞こえるね。
ブートローダー自体はセキュアだって書いてあるけど、侵害された環境にロードされて実行される場所次第では、それはあまり意味ないかもしれないね。
コプロセッサはSecure Enclaveみたいなものと見なせるかもしれないけど、Linuxが別のブートローダーを(どうにかして)ロードして実行できるっていうのは懸念材料だよ。
いや、別のブートローダーは読み込めないよ。
セキュアブートローダー(loadercode)をいじろうとしたけど、起動しなかったんだ。
だから、ブートROMみたいなサードパーティが検証してるんだと思う。
あと、Linuxはタンパー状態に関係なくloadercodeとmp1.imgを常に読み込むと思う。
タンパー状態による異なるコードパスは、保護されたloadercode内で実行されるんだよ。
外部デバッグインターフェースを使ったら、タンパーモードは設定されないってことを覚えておいてね。
もしLinuxがネットワーキングに使われているなら、決済をMITMできるかもしれない。
カードの詳細と支払いは暗号化されてから、セキュア/トラステッドゾーンで実行されているファームウェアによって、アクワイアラーから提供された公開鍵を使って署名されるんだよ。
イージーモードで試したいなら、ああいう新顔のAndroidベースのクレジットカード端末をチェックしてみて。
画面にPINをタップするから、はるかに「美味しい」と思うよ。ジューシーだね。
タッチコントローラーは普通、セキュリティプロセッサで制御されるMUXに接続されてる。
PIN/PANsのような機密データを入力する時は、タッチコントローラーの出力はセキュリティプロセッサに直結されて、GUIを担当するAndroid由来のOSは迂回されるんだ。
そしてユーザーとして、これと、全てのセキュア機能が取り除かれてランダムなAndroidが動いてて、NFCやChipのデータを本物のリーダーにプロキシしつつ、私のPINは人間がリアルタイムで本物のリーダーに手入力してるようなデバイスとを区別する方法は全くない。
私が気づくのは、1秒かそこらの遅延だけだね。
物理ボタンの端末が安全だってどうやって確認するの?タッチスクリーンだからって本質的に安全じゃなくなるわけじゃないと思う。
俺の理解では、システム全体はリプレイ攻撃を無効にするよう設計されてるよ。
PIN単体じゃ取引できないし、リーダーとカードの記録されたやり取りと組み合わせてもダメ。
カードのChipにある秘密鍵を使った非対称暗号が関係してて、署名にはランダムなnonceが含まれてるんだ。
PINと磁気ストライプデータだけでも(Chipからの1回読み取りで複製できると思う)、一部のケースでは支払いするのに十分なんだ。
もし合法的な端末タイプが十分に少なくてユーザーがそれを知っていれば、違う端末を提示されたら怪しまれるだろうね。
現状では、カード所有者である俺としては、誰かの自家製スキマーに見えたとしても、提示されたものがおそらく合法だと仮定せざるを得ない。
ただし、これはまだ加盟店を残してる。彼ら(端末を渡してくる人)が詐欺に関与してないなら、どんな改ざんも彼らに非自明である必要がある。
AFAIK、デバイスの重さを量ったり、シールやシリアル番号を定期的にチェックしたりするところもあるらしい。VISAは1日2回のチェックを推奨してるよ: https://busfin.colostate.edu/Forms/Merchant_Svcs/Visa_Securi…
物理ボタンの端末を改ざんしようとすると、物理的に配線を変える必要があって、タンパー検知が作動して端末が使えなくなるだろうね。
だから、改ざんされたけど見た目は全く同じで、怪しまれない程度には機能するユニットと交換する必要があるだろう。
攻撃者はケースをくり抜いて完全にカスタムの電子機器を入れることも、理論的には可能だけど、それはかなり高いハードルだね(特にシリアル化されたシールの偽造が必要なら)。
安全じゃないAndroidを搭載したタッチスクリーン端末の場合、安全じゃない側でのソフトウェア変更だけで(PIN入力モードを実際には開始しないとか、最初の試行と「PINが間違ってる」メッセージの後だけ開始するとか)、PINを取得するのに十分であるべきだし、他の電子機器に接続されてないNFCスキマーを追加すれば残りはできるだろうね。
そのデバイスも安っぽく見えて、少量しか流通してないし、最も一般的な端末ほど多くの耐タンパー機能があるか疑わしいけど、俺が間違ってるかもしれない。
もし強力な物理的な耐タンパー対策があって、ソフトウェアがソフトウェアベースの改ざんに対して強化されてるなら、理論的には同程度に安全になりうると思う。
磁気ストライプは米国でしか人気がないみたいだね。
あそこのカード決済がいかに安全じゃないかにはいつもびっくりする。
数ドルの少額決済だと、POSシステムについたリーダーにカードをスワイプするだけで終わり。
PINコードも何もなしで、数秒後にカードに請求があったっていうSMSが来るだけ。
より高額な決済だと、「レシートにサイン」とか「ID見せて」みたいな完全に人間頼みの確認方法を使う。
米国に行くまでこんなことになってるとは知らなかったよ。
俺の出身のロシアでは、もう10年以上カードをスワイプしてない。
最近は多くの場所で、磁気ストライプリリーダーすらない、NFCとChipだけの四角いAndroidベースのSberbank端末が出てきた。
まあ、俺たちの銀行システムは2022年から世界のほとんどから事実上切り離されてるけど、これらがMasterCardやVisaが戻ってきた時の要求に応じられるように設計されてないとしたら驚きだね。
そしてスキマーは、ここじゃもはや存在しない。
代わりにソーシャルエンジニアリングを通じて詐欺に遭うんだ。
磁気ストライプの取引は、静的で簡単にコピーできるデータしか必要としないためにリスクが高いから、加盟店の手数料がもっとかかる、みたいな記事も読んだ気がするな。
とにかく、俺が言いたいのは、静的データで取引ができなくなると、脅威モデルが変わって、ずっとシンプルになるってことだよ。
詐欺師が何を捕まえようと、たとえPINとNFCやChipリーダー経由のカードとの完全なデータ交換だったとしても、それを使って取引することはできないからね。
番号、有効期限、CVCだけを手に入れても、オンライン取引ができる可能性も低い。
今は2段階認証が必要だからね。Amazon以外はね。
Amazonはなぜか番号と日付だけでカードに請求できるんだ。CVCもいらないし、2faコードも必要ない。
もう少し考えたけど、いや、タッチスクリーンに関する君の議論は意味をなさないね。
OPが見た端末は「安全じゃない」側でLinuxが動いてるけど、物理キーパッドもメニューや金額入力に使われるから、Android SoCにタッチスクリーンが渡されるのと同じようにそっちに渡されるはずだよ。
Linux側は「セキュア」OSを動かすCPUコアにPIN入力開始のコマンドを送る必要があって、それは君が説明したとおりにできる可能性がまだあるんだ。
PINデータはタッチパッドに表示されても、信頼できるゾーンのファームウェアで制御されるユーザーインターフェースを使って暗号化されてるから、Rootシェルでアクセスできるような中間アプリからはPINは見れないんだよ。
それでPINはかなり簡単に手に入るだろうけど、もし同じように設計されてて(重要な部分は全部セキュアな二次プロセッサに渡されてる場合)、モダンなカードがこういうのを防ぐためにすごい暗号化をカード上でやってるなら、カードでできることはあんまりないだろうね。
磁気カードリーダー以外の支払い方法が全部壊れてる端末でしか攻撃は効かないだろうけど、そういうのはPIN入力を求められる前にスキマー警告アラームを出すはずだよ。
お宅の地域でどんなAndroid端末使ってるか知らないけど、インドではAndroid Oreo(2021年1月サポート終了)が動いてるみたいだよ。やばいね!
あと、他のアプリを開けたり通知センターも開けたりするらしい。そして、当然だけどデバイス全体がひどく重いとさ。
デバイスの改ざん検知(tamper detection)について読んでて、一番簡単な改ざんモードをトリガーする方法ってなんだろ?数台でそれをやれれば、支払いの大半―時には全部―がこれらを通る小売店にとっては効率的なサービス妨害(denial of service attack)になるよね。
床に落とすか水をぶっかけるとかね。
ブラボー!改ざん防止(tamper protection)みたいなハードウェア制限を悪用したり回避したりする方法を考えるの好きだよ。でも、トリガーされたらゲームオーバーだと思ってた。そうじゃないみたいで、まだ色々弄れる面白い部分が残ってるんだね。セキュアな部分がちゃんと無効になるのは理にかなってるけどね、じゃないと設計者を信用できなくなる。
それはおそらく強化されたプロセッサについてはまだ言えることだろうね。TFA(記事)が指摘してるように、ここで侵害されたのはそこじゃないんだ。
テキスト文字列だけがバイナリ(display_tool)に渡されて、プロセッサ間のメッセージをいくつか発行するだけみたいだね。キーパッドやカードリーダー自体も同じ。
Linuxからこれらの周辺機器に直接アクセスできる証拠は見つけられなかったと。
代わりに、mp1と呼ばれる全く別のプロセッサがあって、カード処理、PIN取得、画面表示といった“secure”な処理全部を扱ってるみたい。
二番目のプロセッサmp2で動く“insecure”なLinuxは、ネットワーキング、アップデート、そしてビジネスロジックだけを扱ってるんだね。
説明によると、Linux側が改ざんイベントのハンドリングに何らかの役割を果たすかもしれないみたいだけど、それが起きたことを認識するだけだといいな。もしRootシェルを先に取得できれば、改ざんイベントによってセキュリティキーが消去されるのを防ぐ機会につながる可能性があるからね。
こういうのを調べるのはいいね…でも、なんでいきなり開けて改ざん状態をトリガーしたんだ?ほとんどのリーダーにそれがあるの知らなかったのかな?改ざん状態で行われる実際のテストは無意味かもしれない。Rootシェルはリセット目的で改ざん状態がトリガーされた後も使えるのかもしれないけど。とにかく、開けるのは最後に試すことのように思えるけどね。