Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Arm TrustZoneを利用したTEEシステムのアーキテクチャと脆弱性の紹介

FFRI Security, Inc.
December 25, 2023
850

Arm TrustZoneを利用したTEEシステムのアーキテクチャと脆弱性の紹介

新ローレイヤー勉強会#1 "Arm TrustZoneを利用したTEEシステムのアーキテクチャと脆弱性の紹介"
(https://ffri-security.connpass.com/event/304019/)

FFRI Security, Inc.

December 25, 2023
Tweet

Transcript

  1. 2 目次 1. TEEシステムの概要 • TEEの種類 • Arm TrustZone •

    OP-TEE 2. 報告されている脆弱性 • TEEシステムのセキュリティ機構 • TAにおけるROP • BOOMERANG脆弱性 • QSEEの権限昇格の脆弱性 3. 対策 • Rustを用いたTAの実装 • 仮想化による攻撃範囲の制限 2
  2. 3 Trusted Execution Environment(TEE)とは <TEEの目的> • もしOSやアプリケーションが侵害されたとしても機密情報(指紋、暗 号鍵…)の漏洩や処理の改ざんを防止すること <TEEの実装手段> •

    通常のOS(Linux、Android…)が動作する実行環境(Normal World) と、セキュア情報を扱う実行環境(Secure World)の2つの実行環境 に分離 • ハードウェア(CPU)の支援の元、保護領域(Secure World)を作成 [1] Trusted Execution Environmentの実装とそれを支える技術, available for https://www.jstage.jst.go.jp/article/essfr/14/2/14_107/_pdf/-char/en (2020). 文献[1]から引用
  3. 4 TEEの種類 • Arm TrustZone • Android端末、iOS端末、Nintendo Switch、IoT機器… • コンテンツ管理(DRM)、指紋認証…

    • Intel SGX • 主にサーバ用途(機械学習など) • Intelの第11世代CoreプロセッサからIntel SGXが廃止 • Intel SGXに処理を依存していたPowerDVDが利用不可能に • チート対策 • FPSのウォールハック対策[2] • RISC-V keystone • 主に研究用途 • AMD SEV • Playstation4、Xbox One • Intel TDX • 2023年1月発売の第5世代Xeonケーラブル・プロセッサから搭載 4 完 全 隔 離 型 部 分 隔 離 型 [2] BlackMirror: Preventing Wallhacks in 3D Online FPS Games, available for https://dl.acm.org/doi/abs/10.1145/3372297.3417890 (2020).
  4. 5 TEEシステム (Arm TrustZone) • LinuxやAndroidが動作するNormal Worldと、Trusted OS (TOS) やTrusted

    Application (TA) が動作するSecure Worldに分離 • Normal WorldからSecure Worldのメモリ領域へアクセス不可(逆は 可能) 5 Normal World Secure World
  5. 7 報告されている脆弱性の例 • Google Nexus 6/Moto X (第二世代) [3] •

    Secure Worldへの権限昇格 • Samsung Galaxy S7 Edge[4] • OTP TAのスタックバッファオーバフロー • Huawei P9[5] • secure storage TAのヒープオーバフロー • Type Confusionバグ (BOOMERANG) • Nintendo Switch[6][7] • Secure Wolrd内で任意のコード実行 • SoCの脆弱性によりSecure Bootを無効化 7 [3] http://bits-please.blogspot.com/2016/05/qsee-privilege-escalation-vulnerability.html [4] https://googleprojectzero.blogspot.com/2017/07/trust-issues-exploiting-trustzone-tees.html [5] https://www.slideshare.net/GeekPwnKeen/nick-stephenshow-does-someone-unlock-your-phone-with-nose [6] https://www.reddit.com/r/SwitchHacks/comments/7rq0cu/jamais_vu_a_100_trustzone_code_execution_exploit [7] https://misc.ktemkin.com/fusee_gelee_nvidia.pdf
  6. 8 TEEシステムにおけるセキュリティ機構 • 文献[8]により、TEEシステムのセキュリティ機構の有無が調査 • 黒が実装、半分黒が実装に問題有、白が未実装 • Huawei以外のTEEシステムではXP(NX bit)により書き込み権限と実 行権限が同時に付与されない

    • シェルコードの実行が不可 • 全てのTEEシステムにおいてASLRが未実装および実装に問題有 • Qualcomm以外のTEEシステムではSC (Stack Canary)が未実装 • OP-TEEでは3.22.0からcanaryを実装済[9] 8 [8] SoK: Understanding the Prevailing Security Vulnerabilities in TrustZone-assisted TEE Systems, available for https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9152801 (2020). [9] https://www.trustedfirmware.org/blog/tf-optee-release-3-22-0/ Qualcomm : QSEE Trustnic : Kinibi Huawei : Trusted Core Linaro : OP-TEE
  7. 9 OP-TEE • 文献[10]では、OP-TEEを用いてSecure World内のBuffer Overflow およびType Confusion Bugを持つTAを実装し、攻撃可能なことを 検証

    • ASLRは32bitのみ実装、64bitは未実装 (3.6.0以降は未調査) • XNが有効なため、書き込み可能なメモリ領域は実行不可 (シェルコードの実 行不可) 9 [10] Memory corruption attacks within Android TEEs: a case study based on OP-TEE, available for https://dl.acm.org/doi/10.1145/3407023.3407072 (2020). • OP-TEEはOSSであり、ソースコードの確認・アプリケ ーションの作成が容易 • Trusted OSとしてOP-TEE OSが動作
  8. 13 Type Confusion Bug • BOOMERANG[11]として知られている脆弱性 • Normal WorldからSecure Worldに渡すポインタの型を偽装しポイ

    ンタのチェックを回避し、Secure World内の別の共有メモリにアク セス可能 13 [11] BOOMERANG: Exploiting the Semantic Gap in Trusted Execution Environments, available for https://www.ndss- symposium.org/ndss2017/ndss-2017-programme/boomerang-exploiting-semantic-gap-trusted-execution- environments/ (2017).
  9. 14 Type Confusion Bug • Normal WorldからSecure Worldへ受け渡される値は union型で valueかmemref型を選択可能

    • memref型は文字列のポインタと文字列のサイズを指定 • sizeは初期化が行われないため、memref使用後にvalueを使用した 場合、上位8バイトには前のsizeの値が格納 14 value.aとvalue.bに任意のアド レスを指定し、sizeに書き込み/ 読み取りしたいsizeを設定する ことにより、Normal World内 のkernelを含むAAW/AARが可 能
  10. 15 Google Nexus 6/Moto X(第二世代)の脆弱性 • Qualcomm's Secure Execution Environment

    (QSEE) • qseecomというLinuxドライバを通してSecure Worldと通信 • qseecomにアクセスできるプロセス • surfacefinger • drmserver • mediaserver • keystore 15 • mediaserverで任意コード実行可能 な脆弱性 • mediaserverがアクセスする Trustlet (TA)であるWidevineに脆 弱性
  11. 17 Widevineの脆弱性 • Widevineのセッション情報へのポインタが 0x10FC 以降に保存され ており、改ざんが可能 • QSEEでは、secapp領域と呼ばれるNormal Worldからアクセスでき

    ないメモリ領域を確保し、その中からTrustletに割り当てるメモリを 切り出し • Trustletはsecapp領域に自由にアクセス可能なため、セッション情 報のポインタをこのTrustletのアドレスとすることにより、セッショ ン情報のポインタを辿りメモリの改ざんが可能 17
  12. 20 Nintendo Switch • CPUのDeep Sleepによるバグ • Deep Sleep状態に入ると、TZRAMのメモリはクリアされるため、 Secure

    Worldのメモリの内容がNormal WorldのDRAMに暗号化した状 態で保存 • 保存された内容の復号キーは暗号化されNormal World内に保存 • 復号キーの復号処理に問題があり、これを任意の復号キーに変更可能 20 全て0の鍵で改ざんしたTZRAMの内容を復号することにより、任 意のコードを実行可能 [12] ARM TrustZone エクスプロイト入門, https://speakerdeck.com/rkx1209/arm-trustzone-ekusupuroitoru- men?slide=43
  13. 21 Arm TrustZone rootkit[13] • Secure World内にrootkitを配置し、Normal Worldのメモリレイア ウトの推測・およびNormal Worldのセキュリティ機構を突破するた

    めの有用なrootkit機能を提供 • OP-TEEの Pseudo TAと呼ばれるEL1で動作するTAを利用 • Normal WorldからこのTAを呼び出すことにより、Normal World内 のkernelのメモリマップを取得 • Secure World内のrootkitを利用し 権限昇格も可能 21 [13] Abusing Trust: Mobile Kernel Subversion via TrustZone Rootkits, available for https://ieeexplore.ieee.org/document/9833891 (2022). Linuxの各versionへの実験 C/I: 成功 F : 失敗
  14. 22 対策 <TA自体のメモリ安全性を確保する> • RustによるTAの実装 • OP-TEEではTeaclave TrustZone SDK[14]を利用することによりRustでTA を実装可能

    <脆弱なTAから他のシステムが侵害されないようにする> • Trusted OSをZoneと呼ばれる領域で管理し、他のTrusted OSやNormal Worldへの攻撃を防御 [14] https://optee.readthedocs.io/en/latest/building/optee_with_rust.html [15] ReZone: Disarming TrustZone with TEE Privilege Reduction, available for https://www.usenix.org/conference/usenixsecurity22/presentation/cerdeira (2022)