ゼファーネットのロゴ

Cobo VaultProの自己破壊メカニズムをどのように打ち負かしたか

日付:

著者プロフィール写真

@ニックジョンソンニックジョンソン

イーサリアムネームサービスの創設者兼リード開発者。 ソフトウェアエンジニアであり、コードと電子機器のハッカー。

コボ 最近、彼らが現在イーサリアムのサポートを追加している「署名したものを見る」セキュリティに焦点を当てたハードウェアウォレットであるVaultProを送ってくれると申し出ました。 彼らは見返りに何も要求しませんでした、そして私がそれを試してみて、多分それについてつぶやくと彼らが期待したと思います。

残念ながら、彼らはそれを愛好家の電子機器会社を経営していた誰かに送ったので、私はそれより少し多くのことをしました。

パッケージングと第一印象

Vault Proは適切にパッケージ化されており、Vault自体、充電式バッテリー(USB-C経由、使用中に充電できないため不便に配置されています)、別の4xAAAバッテリーコンパートメント(おそらく緊急用)、およびさまざまな指示カードが含まれていますとクイックスタートガイド。

パッケージには不正開封防止シールが付いていますが、そのうちのXNUMXつは、ボックスに「ボイド」マークを残さずにポストに貼り付いていなかったため、その効果については懐疑的です。 Coboは、これを調査しており、シールと将来のバッチへの適用を改善していると言っています。

デバイスはしっかりと作られているように見え、バッテリーは磁気クラスプで満足のいくようにクリップオンされ、取り外しも簡単です。 宣伝されているように、通信ポートはなく、背面に指紋リーダーとカメラがあります。 バッテリーコンパートメントの下に隠されたSDカードスロットもあり、彼らのサイトはファームウェアのアップグレード用であると言っています。

セットアップとUX

セットアッププロセスは、以前にハードウェアウォレットを所有したことがある人なら誰でも知っているでしょう。 新しいウォレットを作成するか、既存のウォレットをインポートするように求められます。 どちらの場合でも、書き留めたり入力したりするための24のニーモニックワードのよく知られたセットがあります。 タッチスクリーンを使用すると、元帳のXNUMXボタンインターフェイスよりもはるかに簡単になりますが、画面は少し小さいため、フルキーボードを完全に快適に使用できます。 これは、パスワードを入力する場合にも当てはまります—私はいつも隣接するキーを太く指で触れようとしているような気がしました。

VaultはAndroidのカットダウンバージョンを実行します。これは、ハードウェアの機能を考えると賢明な選択のようです。 ただし、ホーム画面はありません。一般的なUXパターンを使用するCoboの組み込みアプリケーションだけなので、非常に簡単に慣れることができます。

イーサリアムのサポート

Coboが現在取り組んでいる大きなこと、そしておそらく彼らがこれを私に送った理由は、Ethereumのサポートです。 彼らはしばらくの間Ether転送をサポートしてきましたが、MetaMaskのフォークを介したweb3統合と、スマートコントラクトのサポートを追加しています。

これを試すには、最新のファームウェアをダウンロードし、MicroSDカードを使用してデバイスにフラッシュする必要がありました。これはかなり簡単でした。 Coboは提供します 説明書 更新パッケージがAPK(Androidアプリ)およびセキュアエレメントファームウェア用にGitHubで公開されているソースと一致することを確認する方法については、まだ行っていませんが、これがサポートされていることは彼らの功績です。

MetaMaskのフォークを更新してブラウザーにインストールした後、デバイスに「読み取り専用ウォレット」を構成できます。これにより、MetaMaskでスキャンするQRコードが得られます。 そうすると、VaultアカウントがMetaMaskに表示され、それを使用してweb3アプリを操作できるようになります。

署名は、VaultでスキャンしたQRコード(または、より長いトランザクションの場合は、QRコードのアニメーションシーケンス)を表示するMetaMaskによって実行されます。 次に、トランザクションに署名すると、Vaultに署名付きのQRコードが表示され、MetaMaskでスキャンします。 私はこれをENSアプリでテストしましたが、問題なく動作しましたが、ほとんどのトランザクションは元帳の場合と同じように不透明であり、トランザクションのペイロードは表示されません。

一部のトランザクションでは、ペイロードをデコードしてユーザーに表示できます。 たとえば、このERC20転送:

Coboの人々は、より多くのABIのサポートと、ユーザーがSDカードを介して独自のABIのセットをロードするためのサポートに取り組んでいると言っています。 また、署名されたABIデータをトランザクションQRコードに含めるためのオプション、またはトランザクションの透過性のための他のオプションも検討しています。 彼らはまた、MetaMaskへの変更をメインの拡張機能に受け入れるように取り組んでいます。これは、この作業を長期的に行うために不可欠です。

Coboが宣伝していることのXNUMXつは、透過的な署名です。QRコードデータを調べてデコードし、自分が思っているとおりに動作していることを確認できるはずです。 試してみよう。 署名リクエストのXNUMXつに対してMetaMaskが生成したQRコードの内容は次のとおりです。

UR:BYTES/TR0HKGN50PYX27PZ8G3XVWP5XUURQWP5XAJR2VRZXVEXXWPJV9SNJVEEXSERSVMPVCCXYV3CVVMRYCES8YEXXWFHXGMKVVT9V5CRJCESXF3KZD3JXAJKYDMXX5URQCF5VCCNGENRVF3NSCMPXQMX2WF5X56RJDNYXPSKYVNYX5MNJWF3XESNVWRX8YEXZDFKXGMKYVTZV93XZEPEVGMX2D338QUNSCEKV5CK2DFHXQCXZEP3XUENQVECXQURQG3VYFUXVUPZ8G3RSWZPXQ6Y2VPJYGKZY6RY2PSHG6PZ8G3X6TE5XSNJ7D3SYUHNQFE0XQHNQG3VYFEKJEMWF9JZYW3ZXSENVCNPXUURYGNARYSURL

Coboは 'と呼ばれる独自のエンコーディングを使用していますURエンコーディング'、QRコードのテキストアルファベットを最大限に活用するように設計されています。 JSデコードライブラリを使用すると、次のようになります。

{ "txHex":"f8478084...", "xfp":"88A04E02", "hdPath":"m/44'/60'/0'/0/0", "signId":"436ba782"
}

「xfp」は、BIP-32のマスターキー指紋です。 残りは十分に明確です。 ether.jsでtxデータをデコードすると、次のようになります。

{ "nonce": 0, "gasPrice: "0x7d50b32c" "gasLimit": "0xaa93", "to": "0x283Af0B28c62C092C9727F1Ee09c02CA627EB7F5", "value": "0x00", "data": "0xf14fcbc8ca06e945496d0ab2d579916a68f92a5627b1babad9b6e61898c6e1e5700ad173", "chainId":3
}

予想どおり、これは上記の最初のトランザクションのデータです。

署名後、Vaultは以下を生成します。

UR:BYTES/TZN8KGNND9NKUCT5W4EX2G36YGEKYC3HX4NRSCE4X4JNZVP5XS6RJEFSXQMNYV34XESNJWP5XDJKVEPJXAJXYCEHV3JN2V3JXYCK2ETZVY6KXWRX8QCRJEPHXSEN2VF3XAJKXWPJV4JNJVNRVVCRXE33XP3XZC3C8PJRXEP3XE3NQEN9VVUNWDEKV43X2C3CVYUNYV34X3NRQWRXV5CRQVF4XQMXZEFNV33RGDEJVY3ZCGNND9NKUJTYYGAZYDPNXE3XZDECXG386TMVR2G

デコード先:

{ "signature":"3bb75f8c55e104449e0072256a9843efd27dbc7de52211eeba5c8f809d7435117ec82ee92cc03f10bab88d3d16c0fec9776ebeb8a92254f08fe001506ae3db472a", "signId":"436ba782"
}

かなり簡単で、缶に書かれていることをしているようです。

セキュリティと分解

これらすべては非常に興味深いものですが、おそらくこの記事を読んでいる理由ではありません。 それはどれくらい安全ですか、そしてそれは内部でどのように見えますか?

Vaultには、オンボードにロードされた認証キーがあります。つまり、セキュアコントローラには、工場でロードされたキーペアがあり、「実際の」Vaultであることを表明するメッセージに署名できます。 安全なコントローラーは、破壊的であっても、デバイスから認証キーを抽出することを困難にするように設計されています。 検出せずにデバイスを開くことが難しく、アテステーションキーによって類似品との交換が妨げられている場合は、デバイスを確実に受け取ることができ、認証チェックに合格し、安全です。

Coboは、サプライチェーンや悪意あるメイド攻撃に対する物理的なセキュリティを大いに活用しています。 彼らは持っている 物品 & ビデオ 誰かがデバイスを開こうとした場合に安全なマイクロコントローラをワイプするように設計された、その自己破壊メカニズムについて。 効果的な場合、これは、デバイスを受け取ったときにデバイスが無傷であることをかなり確信で​​きることを意味します。 このセキュリティはどれくらい良いですか?

まず、公開されている資料を見てみましょう。 彼らの記事によると、自己破壊に電力を供給するボタン電池があり、ディスプレイ付きの導通センサーを使用して、開いているかどうかを検出します。 幸いなことに、彼らは部分的な回路図とBoM(部品表)を公開するのに十分親切です。 それらから何を学べるか見てみましょう。

回路図の関連部分である検出回路は次のとおりです。

ここで「DET0」とラベル付けされた左側のピンは、画面の背面を横切って接続するパッドにつながっています。 通常の動作では、その接続はDET0を接地しますが、画面が取り外されたために開回路になると、R1101はボタン電池に接続されたプルアップであり、ピンをハイに引き上げてQ1101をオンにします。 Q1102、電力がバッテリーからD1102を通って、通常は充電式バッテリーから電力が供給される同じパワーレギュレーターに流れるようにします。

つまり、改ざんセンサーに干渉すると、デバイスがウェイクアップします。 「セキュアエレメント」も回路図に示されていますが、その本当の名前はなく、いくつかの接続が欠落しています。

ここで、VCC5Vは、バックアップバッテリ(または通常の動作では充電式バッテリ)から生成される電源です。 回路図の残りの部分では、セキュアエレメントが3.3Vロジックレベルを使用していることを示しているため、奇妙な選択です。なぜ5V電源が必要なのですか? この5V電源は、3.3Vレギュレータに電力を供給するために使用できますが、他の場所では使用されません。 その部分は、提供されている回路図には示されていません。

DET0への接続は示されていませんが、安全に想定できます( 公開されたファームウェアは確認します)汎用IO(GPIO)ピンのXNUMXつに接続されています。 ファームウェアには、「パッシブ」タンパーセンサーとして使用される他のXNUMXつのピンも表示されます。 これらはデバイスをスリープから復帰させることはできませんが、デバイスがアクティブな間に何らかの改ざんを検出することはできます。

これは、「実際の」敵が複数のVaultを購入し、XNUMXつを「犠牲」デバイスとして分解して、他のVaultを攻撃する方法を計画できるようにするポイントです。 私にはそんな贅沢がないので、代わりに、Vaultを地元の獣医に持って行き、X線撮影を依頼しました。 彼らは喜んで義務を負い、私にこれを与えました:

面白い! これは間違いなく、ビデオや記事の写真にあるデバイスではありません。 これらの写真では、PCBがデバイス全体を占めていますが、これらでは、PCBは上部にのみあります。 おそらく、これは新しいバージョンですか?

これがクローズアップです。ここでは、解読できるコンポーネントにラベルを付けています。

「PMIC」は5Vパワーレギュレーターです。 また、RF干渉を削減したり、コンポーネントの改ざんをより困難にしたりするために使用されるシールドエンクロージャーである「缶」も多数見られます。 5vレギュレーターはXNUMXつ下にあるように見え、ボードの中央、つまりPCBの反対側にXNUMXつのオーバーラップしているレギュレーターがあることは間違いありません。

X線はすべてを透視するため、バッテリーがどちら側にあるかを知る方法はありません。画面に面している側ではなく、外側にあることを期待できます。 そこからのワイヤーが左下隅に降りてきて、そこで一対のパッドに接続されているのがはっきりとわかります。これで、必要なものがすべて揃います。

Dremelで少し作業すると、背面に穴があり、そこからワイヤーがどこにあるべきかを確認できます。

(画質が悪いのでごめんなさい。家を引っ越して以来、顕微鏡用のカメラアダプターを見つけることができませんでした。)

マルチメータで確認すると、これがバックアップバッテリの配線であることが確認されます。 赤いワイヤーを切り取った後、画面を外して、いかなる種類の改ざん検出もトリガーできないことをかなり確認できます。 ヒートガン、いくつかのこじ開けツール、いくつかのIPA、およびプレストを使ったちょっとした作業:

電子機器を保護するある種のカバーがあります。 これを削除すると、このバージョンのデバイスでタンパーセンサーがどのように動作するかがわかります。

PCBの端にあるXNUMXつのパッドはそれぞれ半分に分割されており、カバー上のXNUMX枚の導電性ファブリックがそれらに接触してブリッジします。 カバーを外すと回路が壊れます。

タンパーセンサーを無効にするためにそれぞれにはんだの塊を置き、バッテリーを再接続した後、再び起動して、私たちが思っているほど賢かったかどうかを確認できます。 その内臓がその前に吐き出されていることに気付くのでしょうか、それともすべてがまだ大丈夫だと思いますか?

成功! 改ざんを検出せず、警告やエラーなしで起動し、トランザクションに署名する準備ができています。

さて、もし私が悪意あるメイド、またはサプライチェーン攻撃を行っている誰かだったら、これは私が次にすることです:

  1. メインプロセッサのブートモード選択ピンを見つけて、外部デバイスから起動するように変更します。 それができない場合は、EMMCチップを自分のものと交換してください。
  2. Vaultアプリの変更されたコピーを使用して代替Androidファームウェアをロードします。 このアプリは、私が選択した特定のトランザクションに署名する場合を除いて、通常どおりに動作できます。その場合、ユーザーが期待するものと一致する無実の説明が表示されますが、実際には悪意のあるトランザクションに署名します。 または、サプライチェーン攻撃の場合は、制御するいくつかのキーペアのXNUMXつを常に生成するように変更します。つまり、ターゲットがデバイスを受信する前に、ターゲットが「生成する」アカウントをすでに知っています。
  3. XNUMXつ目のVaultを取り、そこからすべてのコンポーネントを削除します。ここで改ざんセンサーについて心配する必要はありません。 変更したVaultを犠牲Vaultの手付かずのケースに入れて、被害者に送ります。

では、Coboは何を改善できるでしょうか? これは難しいです。 現実的には、十分なリソースと決意を持った攻撃者がハードウェアを手に入れていれば、常に勝ちます。

XNUMXつのオプションは、PCBの画面に面する側にバッテリーを配置することです。 これには大幅な再設計が必要になりますが、ワイヤーをクリップするのが非常に難しくなります。

より包括的な解決策は、バッテリーを安全なMCUに直接接続することです。 多くのMCUは、この目的のためにバックアップバッテリをサポートしており、一部のMCUは、電源が切断された場合に消去される揮発性メモリにキーを意図的に保存します。 これは、デバイスの寿命に厳しい制限を課す「ハードコア」オプションですが、攻撃者の寿命を たくさん もっと強く。 MCUは24時間年中無休で電力を供給されるため、他の改ざん防止を使用できます。たとえば、温度計はコンポーネントのはんだ除去の試みを検出できます。 攻撃者は、電源が入っている間、熱を使用せずにデバイスを危険にさらそうとすることを余儀なくされます。

充電式ボタン電池を使用した場合、使用可能になったときにメインバッテリーから充電できます。したがって、3年ほどで死ぬのではなく、それを維持するために頻繁に使用する必要があります。

Teardown

アイム サプライチェーン攻撃に従事していますが、中身に興味があるので、PCBを詳しく見てみましょう。 これは、このデバイスの再起動をあきらめて、物事を分解し始めるポイントです。

X線から予想されるように、PCBの大部分は缶で保護されています。 小さいものは5vレギュレーターを保護します—それが発するRF干渉を減らす可能性があります。 メイン缶のクリップを外して、下を見てみましょう。

ほとんどの場合、これは公開されている回路図から予想されるとおりです。 Mediatek MT6850システムオンチップ、eMMCとSDRAMを組み合わせたキングストン部品、およびさまざまなサポートコンポーネントがあります。 左上には安全なマイクロコントローラーがありますが、その識別マークはレーザーで除去されています。 彼らは私たちがこれが何であるかを知らないことを本当に決心しています。

正直なところ、これは少し奇妙に思えます。安全なMCUメーカーは通常、NDAがデータシートとツールにアクセスすることを要求しているため、それについて多くのことを教えてくれないのは当然ですが、メーカーは通常、何を明らかにすることを禁じていません。あなたが使用している部分。 もしそうなら、彼らがしなければならないのは、そもそも彼らにラベルを付けることだけではありません。 また、プラットフォームの残りの部分に対するCoboの一般的なオープンソースアプローチとは対照的です。

それが何であるかを理解できるか見てみましょう。 私たちはそれについてかなり理解することができます:

  • 5x5mmのQFN40です。
  • それはある種の「安全なマイクロコントローラー」です。
  • 12MHzのメインクリスタルを使用しています。
  • IOには3.3vロジックを使用しますが、電源ピンのように見えるもので5Vを受け入れます(または少なくとも許容します)。
  • ビルドファイルから、それがArm CortexM0であることがわかります。
  • ファームウェアから、ハードウェアレベルのECDSA、RSA、およびRNGがサポートされていることがわかります。

一般的なサプライヤデータベースを検索すると、この基準に対するヒットは多くありません。 私たちのベストマッチは MAX36010-BNS-T、マキシムの「セキュリティスーパーバイザー」。 それは私たちの基準のほとんどを満たしていますが、プログラム可能なMCU(ましてやArm Cortex M0)が含まれているかどうか、または5v電源をサポートする回路があるかどうかは不明です。 一方、ファームウェアが使用することがわかっているすべてのアルゴリズムの改ざん検出とサポートが組み込まれており、適切なフォームファクタであるため、最適な候補になります。

ボードの裏側はかなり簡単です。 予想されるバッテリーとポケットベルモーター、SDカードスロット、さらに別の缶があります。

缶の下には特にエキサイティングなものはありません。メインCPUの電源回路です。

次のステップ

このデバイスの深刻なセキュリティ分析の次のステップは、回路の関連部分を分解し、それらを測定し、PCB上のネットをトレースして、公開されているものと比較しての未知の部分を特定できる回路図を作成することです。それ—特に未発表の改ざん検出回路。 それらが何であるかについて推測することはできますが、私と同様のリソースを持つ決心した敵がそれらを識別してバイパスすることはそれほど難しいことではないと思います-特にこの状態ではデバイスが非アクティブであり、セキュアのピンが必要に応じて、MCUを露出させ、トレースを切断したり、ピンをVCCまたはGNDにストラップで固定したりできます。

まとめ

改ざん検出回路を簡単にバイパスできたにもかかわらず、Cobo VaultProはハードウェアとソフトウェアの両方でうまく設計されているようです。 サプライチェーンや悪意のある攻撃に対する保護機能を備えているという事実は、競合他社の大部分を一歩上回り、そのような攻撃の水準を引き上げています。しかし、その分野では、目標とするセキュリティのレベルに到達するための改善の余地が確かにあります。に。 最高レベルの保護を必要とし、それがもたらす不便に対処する準備ができている頻繁なユーザーをより明確にターゲットにすることで、現在の競合他社よりも優れたデバイスを製造できます。

データの送信にQRコードを使用することのセキュリティ上の価値には少し懐疑的です。 それでも、UXは優れており、USBデバイスを機能させることに煩わされることはありません。また、MetaMaskへの変更をマージすることに成功した場合、またはWalletConnectなどのソリューションを介してweb3アプリのサポートを追加した場合、このデバイスは、 LedgerとTrezor、さらに改善される可能性が高い、はるかに優れたUIを備えています。

私が持っているものは機能せず、バラバラに見えるので、これは残念です。

でも公開 https://weka.medium.com/defeating-the-cobo-vault-pros-self-destruct-mechanism-abf321e2f5b5

著者プロフィール写真

私の話を読む

イーサリアムネームサービスの創設者兼リード開発者。 ソフトウェアエンジニアであり、コードと電子機器のハッカー。

タグ

ハッカー正午に参加

無料のアカウントを作成して、カスタムの読書体験のロックを解除します。

PrimeXBTをチェックアウト
ACミランの公式CFDパートナーとの取引
暗号を取引する最も簡単な方法。
ソース:https://hackernoon.com/how-i-defeated-the-cobo-vault-pros-self-destruct-mechanism-4k4b35iu?source = rss

スポット画像

最新のインテリジェンス

スポット画像

私たちとチャット

やあ! どんな御用でしょうか?