[CODE BLUE 2018] スマートガンの安全装置をリモートでクラッキングする:セキュアなBLE実装を確認する [レポート] #codeblue_jp

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、芳賀です。

『世界トップクラスのセキュリティ専門家による日本発の情報セキュリティ国際会議』でありますCODE BLUE 2018に参加していますのでレポートします。

このブログは下記セッションについてのレポートです。

スマートガンの安全装置をリモートでクラッキングする:セキュアなBLE実装を確認する Presented by オースチン・フレッチャー ダニエル・スー

本講演ではVaultek VT20i Smart Gun Safeの複数のセキュリティ脆弱性の発見とその悪用について話す。これらの脆弱性を悪用することにより、我々はPINコードを入手し、VT20iを遠隔から開くことができるアプリケーションを作成することができた。VT20iは銃器を安全に保管するために設計された人気製品であり、Amazonの複数カテゴリにおいて最も売れている製品の一つでもある。発見された脆弱性はVT20iと対応したAndroidアプリケーションとの間で使われているBluetooth SMART機能に存在していた。 今回は実際にこの脆弱性を例に、製品メーカーや流通業者が自社のデバイスやアプリケーションのセキュリティを検証および保護する方法について説明し、製品製造プロセスの早期におけるセキュリティ監査の必要性について示す。

レポート

  • VT20iは、銃をしまうケースである
    • クラウドファンディングで成功した製品である
  • VT20iの仕様として
    • 物理鍵
    • キー番号
    • BLEアクセス
  • 一般的に金庫を物理的に破壊する困難である
  • いまは物理アクセス以外の認証が増えると脆弱性が増える
    • 指紋認証やBLEなど
  • BLEについての説明
    • 安価であり、シンプルな構造
    • バッテリを長持ちさせたいため複雑な処理を実装させない
    • BLE V4.2ではよりsecureにするため楕円曲線を導入した
      • しかしレガシーモードでも動作することができる
  • Legacy モードの認証挙動
    • Pre-Connection
    • AssociationModeでは一時keyは128bitである
    • Out-of-Band(OOB)でも一時keyは128bitである
    • Passkeyは数文字のキーをスクリーンに表示されて、それを入力する
    • 一時keyのやり取りが終わると、永続化キーのやり取りされ、永続的にペアリングされる
  • Vaultek の暗号化は、AES-256を使っていると謳っている

  • 脆弱性を探す最初の一歩

    • 使われているOSSなどの確認
    • 使われている技術がブラックボックス化されているかを確認
  • 次にアプリの挙動を確認
    • ペアリングする際に失敗回数があるか?を見る
      • 失敗回数制限が無かった
      • ブルートフォース攻撃が有効ではないか?
        • 成功した
    • Bluetooth Capture
      • Uvertooth OneでBLE通信をモニタリング(Wireshark)
      • 結果として通信は暗号化されてなかった
        • 暗号化されていたとしても CRACKLEでブルートフォース攻撃し解除する事もできる
    • Android Application
      • リバースエンジニアリングでアプリを解析した
      • その結果、OrderUtilsVT20クラスがみつかった
    • コードから見つかった定数からBLE通信を深堀りして挙動を追った
    • Unlock Sequence
      • BLE通信ではなく鍵を開けるためのシーケンス
      • 通信の中で最後に興味深いコマンドがあった
        • getAuthor Command
        • Authorization Responseでは 4byteの特権を持つトークンが返ってくる
      • 実は、Authorizationトークンが発行されると、”鍵”を開ける事が出来てしまった
  • まとめ
    • 誰しもがアクセスできるIoTである
    • BLEでアクセスできてしまえばAuthorizationトークンを投げる事でロックを解除できてしまう
    • もちろん暗証番号を知らなくても開けられる
    • updateの仕組みもあるので、今後のupdateで改善されることを望む
  • 対策としては
    • ソースコードの難読化
    • BLE Versionとassociation modeをしっかり指定する
    • 機微なデータはもちろん、すべてのデータは暗号化すべきである
    • 強いクレデンシャルポリシー
      • 例えば、ピンコード入力回数の制限でブルートフォース攻撃に備える
    • 防止するために
      • Firmwareのupdate
      • Bug Bounty Program
      • Professional Security Audits
      • オープンなコミュニケーション

感想

銃のケースもIoT化されている事にカルチャーショックを受けつつ、開けるための”鍵”が増える事で脆弱性の数も増えていくので、その都度、検証が必要なことを理解した。