Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
日本シノプシス合同会社
Software Integrity Group
Androidスマホの生体認証の脆弱性
調べてみたらよくある話だった
© 2019 Synopsys, Inc. 2
• Synopsysのご紹介
• サイバーインシデントの変化
• CyRCについて
• 生体認証ソフトウェアの脆弱性を探索する
• まとめ
アジェンダ
© 2019 Synopsys, Inc. 3
Synopsysのご紹介
© 2019 Synopsys, Inc. 4
シノプシス:市場と技術のリーダー
シリコン設計
および検証
シリコン
IP
ソフトウェア
インテグリティ 新興市場のリーダー
広範なポートフォリオ
15〜20%の成長率
世界 2位のIPベンダー
...
© 2019 Synopsys, Inc. 5
FY19 売上高:
~$3.4B
従業員数:
~14,200
保有特許数:
~3,250
“Silicon to Software™”
半導体設計からソフトウェア開発に至る領域をカバー
Canad...
© 2019 Synopsys, Inc. 6
• 2015年
• Heartbleedを発見した
技術とチーム
• 2014年
• セキュリティと品質、
静的解析のリーダー
• 2016年
• 400人以上の
セキュリティ専門家
• マネージ...
© 2019 Synopsys, Inc. 7
ソフトウェア開発・セキュリティ市場でのポジション
ソフトウェア静的解析、コンポジション解析、総合セキュリティテストでリーダーの評価
Forrester Wave
Static Applicatio...
© 2019 Synopsys, Inc. 8
多彩な業界でソフトウェアのセキュリティと品質を牽引
モバイルおよび
コンシューマ機器
エンタープライズ
ソフトウェアおよび
ネットワーク
高信頼性システム 金融サービス
© 2019 Synopsys, Inc. 9
サイバーインシデントの変化
© 2019 Synopsys, Inc. 10
デジタル化によるシームレスな世界
新しい技術が産業に変革を促す時代
自動車
製造業
ロボット
家電
農業
健康
銀行
© 2019 Synopsys, Inc. 11
デジタル化の負の側面、自然災害や規制以上の脅威に
サイバーインシデントは最大のリスクに
https://www.agcs.allianz.com/content/dam/onemarketing...
© 2019 Synopsys, Inc. 12
GDPR規制とIoT(ネットワーク化された機器)
• GDPRは機器に対するセキュリティ対策を規定
していないが、個人情報取扱規程に準ずる必要
がある
• Global Privacy Enfo...
© 2019 Synopsys, Inc. 13
プリンターのハッキング
• 記事では、可能な攻撃について解説
• Shodanでインターネットからアクセス可能
なプリンターは「30,532ノード」;
– 318@オーストラリア
– 8910@...
© 2019 Synopsys, Inc. 14
URGENT/11、組み込みOSの致命的な脆弱性
医療機器にも大きな影響、FDA(米国食品医薬品局)が警告
https://www.fda.gov/news-events/press-annou...
© 2019 Synopsys, Inc. 15
Ripple20、TCP/IPライブラリの重大な脆弱性
数億台の組み込み機器に影響
https://blog.kaspersky.co.jp/ripple20-vulnerabilities/2...
© 2019 Synopsys, Inc. 16
CyRCについて
© 2019 Synopsys, Inc. 17
CyRC: Cyber Security Research Center
• 「脆弱性」における「重症度、エクスプロイ
ト、緩和策、防御方法」などを調査報告
• シノプシスの保有する技術「静的解...
© 2019 Synopsys, Inc. 18
CyRCの発行したレポート
• 金融サービス業界におけるソフトウェア・セ
キュリティの現状
– https://www.synopsys.com/ja-jp/software-
integrit...
© 2019 Synopsys, Inc. 19
CyRCの発行したレポート
• CyRC Vulnerability Advisory: CVE-2018-
18907 authentication bypass vulnerability ...
© 2019 Synopsys, Inc. 20
生体認証ソフトウェアの脆弱性を探索する
© 2019 Synopsys, Inc. 21
脆弱性はどこに潜んでいるか?
OS、自社のコード、オープンソース、サードパーティのライブラリやドライバー??
OS
アプリケーション
フレームワーク
プログラム・コード
OSS OSS OSS ...
© 2019 Synopsys, Inc. 22
CVE-2020-7958: biometric data extraction in Android devices
• rootユーザーが指紋センサーから指紋のビッ
トマップデータを取得可能...
© 2019 Synopsys, Inc. 23
CWE-200: 情報漏洩
• ” CWE/SANS TOP 25 Most Dangerous
Software Errors”で4番目にランクイン
– https://www.sans.or...
© 2019 Synopsys, Inc. 24
ARM社のTrust Zoneによるセキュアな実行環境
• Trust ZoneはARMコア上に保護されたセキュ
アな実行環境「Secure World」と保護されな
い実行環境「Normal ...
© 2019 Synopsys, Inc. 25
ARM社のTrust Zoneによるセキュアな実行環境
• Trust ZoneはARMコア上に保護されたセキュ
アな実行環境「Secure World」と保護されな
い実行環境「Normal ...
© 2019 Synopsys, Inc. 26
OnePlus 7 Proのアーキテクチャ
• Qualcomm Secure Execution Environment
(QSEE)
– Qualcomm社のTEE OS
• 指紋センサーな...
© 2019 Synopsys, Inc. 27
root化によるアクセス範囲の違い
Android カーネル内(REE)にアクセス可能になるが「TEEにはアクセスできない」
https://www.synopsys.com/blogs/sof...
© 2019 Synopsys, Inc. 28
リバースエンジニアリングで脆弱性を探す
苦労したおかげで、以下のことがわかった
https://www.synopsys.com/blogs/software-security/cve-2020...
© 2019 Synopsys, Inc. 29
AndroidOSの開発者向け文書から
指紋認証 HIDL
https://source.android.com/security/authentication/fingerprint-hal
...
© 2019 Synopsys, Inc. 30
CVE-2020-7958
OnePlus 7 Proにはデバッグ用のコードが残されていた
https://www.synopsys.com/blogs/software-security/cv...
© 2019 Synopsys, Inc. 31
リバースエンジニアリングの成果
擬似コードの生成
https://www.synopsys.com/blogs/software-security/cve-2020-7958-trustlet-...
© 2019 Synopsys, Inc. 32
TEEの中を探索してみる
Qualcommの TEE 通信ライブラリ(QSEE)
https://www.synopsys.com/blogs/software-security/cve-202...
© 2019 Synopsys, Inc. 33
ライブラリにある実際の呼び出し方に則ってみる
goodix::SZCustomizedProductTest::factoryCaptureImage()
https://www.synopsy...
© 2019 Synopsys, Inc. 34
OnePlus 7 Proの指紋認証のTrustletの仕組み
app_main.tz_app_cmd_handler -> gf_modules.gf_modules_cmd_entry_po...
© 2019 Synopsys, Inc. 35
OnePlus 7 Proの指紋認証のTrustletの仕組み
テストモジュールの発見
https://www.synopsys.com/blogs/software-security/cve-...
© 2019 Synopsys, Inc. 36
OnePlus 7 Proの指紋認証のTrustletの仕組み
関数テーブルの構造を解析
https://www.synopsys.com/blogs/software-security/cve...
© 2019 Synopsys, Inc. 37
OnePlus 7 Proの指紋認証のTrustletの仕組み
地道な作業で関数ポインターの一覧を再現
https://www.synopsys.com/blogs/software-secur...
© 2019 Synopsys, Inc. 38
OnePlus 7 Proの指紋認証のTrustletの仕組み
REE側に指紋画像データをコピー
https://www.synopsys.com/blogs/software-security...
© 2019 Synopsys, Inc. 39
まとめ
© 2019 Synopsys, Inc. 40
指紋認証の試験用のコードはREE内で動作する
セキュリティの実装のセオリー
https://www.synopsys.com/blogs/software-security/cve-2020-7...
© 2019 Synopsys, Inc. 41
• Trust Zoneによるアクセス制御を実装したことで100%安全なわけでは無い
• コーディング規約を守っていても防ぐことはできない
• アーキテクチャレベルのレビューでは見つからない可能...
Nächste SlideShare
Wird geladen in …5
×

【B-6】Androidスマホの生体認証の脆弱性、調べてみたらよくある話だった。

Developers Summit 2020 Summer【B-6】松岡様のセッション資料です。

  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

【B-6】Androidスマホの生体認証の脆弱性、調べてみたらよくある話だった。

  1. 1. 日本シノプシス合同会社 Software Integrity Group Androidスマホの生体認証の脆弱性 調べてみたらよくある話だった
  2. 2. © 2019 Synopsys, Inc. 2 • Synopsysのご紹介 • サイバーインシデントの変化 • CyRCについて • 生体認証ソフトウェアの脆弱性を探索する • まとめ アジェンダ
  3. 3. © 2019 Synopsys, Inc. 3 Synopsysのご紹介
  4. 4. © 2019 Synopsys, Inc. 4 シノプシス:市場と技術のリーダー シリコン設計 および検証 シリコン IP ソフトウェア インテグリティ 新興市場のリーダー 広範なポートフォリオ 15〜20%の成長率 世界 2位のIPベンダー 2桁の成長率 業界のリーダー 1桁後半の成長率 6年 約10%の売り上げ 16年 約20%の売り上げ 31年 約65%の売り上げ
  5. 5. © 2019 Synopsys, Inc. 5 FY19 売上高: ~$3.4B 従業員数: ~14,200 保有特許数: ~3,250 “Silicon to Software™” 半導体設計からソフトウェア開発に至る領域をカバー Canada Chile Japan 303 S. Korea Russia China 1,212 India 2,847 Armenia Israel Europe 2,576 Southeast Asia 854 Taiwan USA 4,671 電子設計自動化(EDA)ツール およびサービスで業界1位 広範な半導体設計資産(IP) ポートフォリオ インタフェース、アナログ、組 み込みメモリーおよび物理IPで 業界1位 Gartner’s Magic Quadrant for application security testingにお けるリーダー 事業所数: ~130 $ 0 500 1,000 1,500 2,000 2,500 3,000 3,500 4,000 $Millions
  6. 6. © 2019 Synopsys, Inc. 6 • 2015年 • Heartbleedを発見した 技術とチーム • 2014年 • セキュリティと品質、 静的解析のリーダー • 2016年 • 400人以上の セキュリティ専門家 • マネージドサービスと プロフェッショナルサー ビス • 2017年 • OSSセキュリティと リスク管理ツールと 専門家 セキュリティと品質はシノプシスのDNA • 2020年 • 先進的なDAST技術 • Web API のセキュリティ
  7. 7. © 2019 Synopsys, Inc. 7 ソフトウェア開発・セキュリティ市場でのポジション ソフトウェア静的解析、コンポジション解析、総合セキュリティテストでリーダーの評価 Forrester Wave Static Application Security Testing Forrester Wave Software Composition Analysis Gartner Magic Quadrant Application Security Testing https://www.synopsys.com/software-integrity/resources/analyst- reports/2020-gartner-magic-quadrant.html https://www.synopsys.com/software-integrity/resources/analyst- reports/forrester-software-composition-analysis-2019.html?cmp=pr- sig
  8. 8. © 2019 Synopsys, Inc. 8 多彩な業界でソフトウェアのセキュリティと品質を牽引 モバイルおよび コンシューマ機器 エンタープライズ ソフトウェアおよび ネットワーク 高信頼性システム 金融サービス
  9. 9. © 2019 Synopsys, Inc. 9 サイバーインシデントの変化
  10. 10. © 2019 Synopsys, Inc. 10 デジタル化によるシームレスな世界 新しい技術が産業に変革を促す時代 自動車 製造業 ロボット 家電 農業 健康 銀行
  11. 11. © 2019 Synopsys, Inc. 11 デジタル化の負の側面、自然災害や規制以上の脅威に サイバーインシデントは最大のリスクに https://www.agcs.allianz.com/content/dam/onemarketing/agcs/agcs/reports/Allianz-Risk-Barometer-2019.pdf
  12. 12. © 2019 Synopsys, Inc. 12 GDPR規制とIoT(ネットワーク化された機器) • GDPRは機器に対するセキュリティ対策を規定 していないが、個人情報取扱規程に準ずる必要 がある • Global Privacy Enforcement Networkの調査で は300台以上の機器から以下の課題が見つかっ た(2016年) – 59% は個人情報の取得、使用、開示の説明が不適 当 – 68% はデータ格納の説明が不適当 – 72% はデータの消去方法の説明が不適当 – 38% はプライバシーの懸念についての問い合わせ 先が示されていない • 違反した場合の制裁金 – 1000 万ユーロ以下、または、 直前の会計年度の 全世界の売上総額の2%以下の金額のいずれか高 額の方 – https://www.ppc.go.jp/enforcement/infoprovision/laws/GDPR/ IoT化された機器が増えることで個人情報やデータ漏洩のリスクは増大している https://eugdprcompliant.com/internet-of-things-era-of-gdpr/
  13. 13. © 2019 Synopsys, Inc. 13 プリンターのハッキング • 記事では、可能な攻撃について解説 • Shodanでインターネットからアクセス可能 なプリンターは「30,532ノード」; – 318@オーストラリア – 8910@米国 • 「PRET」を使えば、プリンターに保存され た文書にアクセスできる – https://www.youtube.com/watch?v=DwKzSO4yA_s • DoS攻撃含めたプリンターへの攻撃だけでな く、プリンターを介しての攻撃に悪用される ことが大きなリスク オフィスプリンターもホームプリンターもネットワークにつながっている https://www.csoonline.com/article/3502543/could-you-be-hacked-by-your-printer.html
  14. 14. © 2019 Synopsys, Inc. 14 URGENT/11、組み込みOSの致命的な脆弱性 医療機器にも大きな影響、FDA(米国食品医薬品局)が警告 https://www.fda.gov/news-events/press-announcements/fda-informs-patients-providers-and-manufacturers-about-potential-cybersecurity-vulnerabilities • 影響のあった組み込みOS – VxWorks (by Wind River) – Operating System Embedded (OSE) (by ENEA) – INTEGRITY (by GreenHills) – ThreadX (by Microsoft) – ITRON (by TRON) – ZebOS (by IP Infusion) • CVE一覧 – CVE-2019-12256、CVE-2019-12255、CVE- 2019-12260、CVE-2019-12261、CVE-2019- 12263、CVE-2019-12257 – CVE-2019-12258、CVE-2019-12262、CVE- 2019-12264、 CVE-2019-12259、CVE-2019- 12265
  15. 15. © 2019 Synopsys, Inc. 15 Ripple20、TCP/IPライブラリの重大な脆弱性 数億台の組み込み機器に影響 https://blog.kaspersky.co.jp/ripple20-vulnerabilities/28699/ • イスラエルのJSOF社が発見 – Black Hat USA, August 2020にて公開予定 • CVE一覧 – CVE-2020-11896〜11914(19個) • 影響のあるメーカーの一覧 – https://www.jsof-tech.com/ripple20/#ripple- whitepaper • 日本では図研エルミック社の「KASAGO」が 対象 – https://www.elwsc.co.jp/news/4136/
  16. 16. © 2019 Synopsys, Inc. 16 CyRCについて
  17. 17. © 2019 Synopsys, Inc. 17 CyRC: Cyber Security Research Center • 「脆弱性」における「重症度、エクスプロイ ト、緩和策、防御方法」などを調査報告 • シノプシスの保有する技術「静的解析、動的 解析、ソフトウェア構成解析、ファジング、 OSS開発」などの知見とノウハウを利用して 調査 • ボストン、ベルファスト、カルガリー、オウ ルなどの拠点を中心に活動 – Heartbleedのレポートなど ソフトウェアの脆弱性についての調査を行う、シノプシスの組織 https://www.synopsys.com/software-integrity/cybersecurity-research- center.html
  18. 18. © 2019 Synopsys, Inc. 18 CyRCの発行したレポート • 金融サービス業界におけるソフトウェア・セ キュリティの現状 – https://www.synopsys.com/ja-jp/software- integrity/resources/reports/software-security-financial- services.html • 2020 Open Source Security and Risk Analysis(OSSRA)レポート – https://www.synopsys.com/software-integrity/resources/analyst- reports/2020-open-source-security-risk-analysis.html
  19. 19. © 2019 Synopsys, Inc. 19 CyRCの発行したレポート • CyRC Vulnerability Advisory: CVE-2018- 18907 authentication bypass vulnerability in D-Link DIR-850L wireless router – https://www.synopsys.com/blogs/software-security/cve-2018- 18907/ • 最先端の自動車セキュリティ: 自動車業界の サイバーセキュリティ・プラクティスに関す る調査 – https://www.synopsys.com/ja-jp/software- integrity/resources/reports/automotive-cyber-security.html
  20. 20. © 2019 Synopsys, Inc. 20 生体認証ソフトウェアの脆弱性を探索する
  21. 21. © 2019 Synopsys, Inc. 21 脆弱性はどこに潜んでいるか? OS、自社のコード、オープンソース、サードパーティのライブラリやドライバー?? OS アプリケーション フレームワーク プログラム・コード OSS OSS OSS OSS OSS OSS OSS CPU HAL ドライバー 物理インターフェース コードやフレームワーク の脆弱性 OSSの脆弱性 デバイスドライバーの脆 弱性 OSの脆弱性 CPUやハードウェアの脆 弱性
  22. 22. © 2019 Synopsys, Inc. 22 CVE-2020-7958: biometric data extraction in Android devices • rootユーザーが指紋センサーから指紋のビッ トマップデータを取得可能 • 本来はREE(Rich Extention Envinronment) によって保護され、取得されることはない • 残念なことに「デバッグ・コード」が残って いたため指紋データの取得が可能になってい た • 共通脆弱性ではCWE-200に分類 • もちろん修正パッチは配布済み OnePlus 7 Pro に生体認証情報窃取可能な脆弱性 https://www.synopsys.com/blogs/software-security/cve-2020-7958-trustlet-tee-attack/
  23. 23. © 2019 Synopsys, Inc. 23 CWE-200: 情報漏洩 • ” CWE/SANS TOP 25 Most Dangerous Software Errors”で4番目にランクイン – https://www.sans.org/top25-software-errors 共通脆弱性の分類 https://jvndb.jvn.jp/ja/cwe/CWE-200.html
  24. 24. © 2019 Synopsys, Inc. 24 ARM社のTrust Zoneによるセキュアな実行環境 • Trust ZoneはARMコア上に保護されたセキュ アな実行環境「Secure World」と保護されな い実行環境「Normal World」とに分けて管理 • Secure Worldへのアクセスを厳密に制御 • MMUによってマルチコア環境でのメモリー 管理・保護を行う • 切り替え時にキャッシュも消去 論理的に実行環境を分離する http://infocenter.arm.com/help/topic/com.arm.doc.prd29-genc-009492c/PRD29-GENC- 009492C_trustzone_security_whitepaper.pdf
  25. 25. © 2019 Synopsys, Inc. 25 ARM社のTrust Zoneによるセキュアな実行環境 • Trust ZoneはARMコア上に保護されたセキュ アな実行環境「Secure World」と保護されな い実行環境「Normal World」とに分けて管理 • Android OSはBL3でロード、起動される • OnePlus 7 Proでは、Secure Worldの実行環 境はTEE OS(Qualcom社)を採用 OSの起動前にセキュアな環境を準備 https://www.synopsys.com/blogs/software-security/cve-2020-7958-trustlet-tee-attack/
  26. 26. © 2019 Synopsys, Inc. 26 OnePlus 7 Proのアーキテクチャ • Qualcomm Secure Execution Environment (QSEE) – Qualcomm社のTEE OS • 指紋センサーなどの生体認証の処理は Trusted Execution Environment(TEE)で行う – 指紋センサーへのアクセスはSecure modeで動 作するCPUのみ可能 – つまり、root化された端末であってもAndroid OS (Rich Execution Environment/REE)からの アクセスはできない • root権限の有無にかかわらず保護対象となる 「指紋センサー」のデータは保護される(は ずだった) Trust Zone + QSEEによる先端的でセキュアなプラットフォーム https://www.synopsys.com/blogs/software-security/cve-2020-7958-trustlet-tee-attack/
  27. 27. © 2019 Synopsys, Inc. 27 root化によるアクセス範囲の違い Android カーネル内(REE)にアクセス可能になるが「TEEにはアクセスできない」 https://www.synopsys.com/blogs/software-security/cve-2020-7958-trustlet-tee-attack/
  28. 28. © 2019 Synopsys, Inc. 28 リバースエンジニアリングで脆弱性を探す 苦労したおかげで、以下のことがわかった https://www.synopsys.com/blogs/software-security/cve-2020-7958-trustlet-tee-attack/ • Andorind OSの「USBデバッグモード」をON • 試行錯誤の結果、REE内のFingerprint LibraryがAndroid OSのAPI Frameworkをサ ポートするために、多くの機能があることを 突き止めた • TEE内のQSEEは「libQSEEComAPI」を使っ て指紋データをやりとりするバッファを用意 している • そして、「libgf_ud_hal」はバッファに指紋 データを格納し、Fingerprint Trustletがこれ を解釈 • この時、バッファの最初の数バイトのコード によってTrustletが起動すべき機能が決定さ れる
  29. 29. © 2019 Synopsys, Inc. 29 AndroidOSの開発者向け文書から 指紋認証 HIDL https://source.android.com/security/authentication/fingerprint-hal • 文書によれば – ベンダー固有の HAL 実装では、TEE で必要な 通信プロトコルを使用する必要があり、未処理 の画像と処理済みの指紋の特徴は、信頼できな いメモリに渡さないこと – このような生体認証データはすべて、TEE な どのセキュア ハードウェアに保存する必要が ある – 従って、ルート権限取得によって生体認証デー タが侵害されないようにする必要がある – FingerprintService と fingerprintd は指紋認証 HAL を使用してベンダー固有のライブラリを 呼び出し、指紋の登録などの操作を実行する
  30. 30. © 2019 Synopsys, Inc. 30 CVE-2020-7958 OnePlus 7 Proにはデバッグ用のコードが残されていた https://www.synopsys.com/blogs/software-security/cve-2020-7958-trustlet-tee-attack/ • ベンダーのサイトからアップデータをダウン ロードしてパーティションイメージをマウン ト • /vendor/lib64/ という階層に注目すると、左 図の階層と合致 • libgf_ud_hal.so(共有オブジェクト)は goodix::SZCustomizedProductTest::factor yCaptureImage()メソッドを呼び出している
  31. 31. © 2019 Synopsys, Inc. 31 リバースエンジニアリングの成果 擬似コードの生成 https://www.synopsys.com/blogs/software-security/cve-2020-7958-trustlet-tee-attack/ • 繰り返しリバースエンジニアリングを行うこ とで、擬似コード(pseudocode)の生成に 成功 – 時間と根気と折れない心が必要 • この擬似コードによって分かったこと – 指紋センサーから画像を受け取るバッファー (raw_data_out)を受け入れ – 出力イメージ(GF_SZ_TEST_RAWDATA構造 のサイズ)に対応するために少なくとも86024 バイトのサイズである必要がある – 引数 ”ae_expo_start_time”も渡される – Target ID (target)を1003をセット – Command ID (cmd_id)は17をセット • 上記は、OnePlus向けの指紋センサーSDKに よるもの(他のモデルやベンダーでは異なる 可能性がある)
  32. 32. © 2019 Synopsys, Inc. 32 TEEの中を探索してみる Qualcommの TEE 通信ライブラリ(QSEE) https://www.synopsys.com/blogs/software-security/cve-2020-7958-trustlet-tee-attack/ • コマンドの引数が準備できると goodix::HalBase::invokeCommand() 関数 が利用可能に • QSEEのlibQSEEComAPI.soを通して呼び出 す • 引数が呼び出し結果にどのような影響がある のかわからないので、単純なことから始めて みることに
  33. 33. © 2019 Synopsys, Inc. 33 ライブラリにある実際の呼び出し方に則ってみる goodix::SZCustomizedProductTest::factoryCaptureImage() https://www.synopsys.com/blogs/software-security/cve-2020-7958-trustlet-tee-attack/ • これらの結果に基づいて組み立てたExploitの 手順は次の通り – goodix::HalBase::invokeCommand をフック し、HalContextへのポインターを見つけ出す – goodix::createProductTest を HalContextへ のポインターと共に呼び出す – 有効な引数を用いて製品のテストの初期化ルー チン goodix::SZCustomizedProductTest::getSen sorInfo を呼び出す – 適切なパラメータと共に goodix::factoryCaptureImage を呼び出し、 試験用に出力バッファのダンプをディスクに書 き出す • SZCustomizedProductTest のインスタンス の生成にはHalContextの参照が必須 • goodix::HalBase からHalContext の正しい 参照を得ることができた。これは、 goodix::HalBase::invokeCommand() が繰 り返し呼び出されたおかげでもある。 • Trustletのリバースエンジニアリングについ てはFridaを参照しました https://frida.re/
  34. 34. © 2019 Synopsys, Inc. 34 OnePlus 7 Proの指紋認証のTrustletの仕組み app_main.tz_app_cmd_handler -> gf_modules.gf_modules_cmd_entry_point https://www.synopsys.com/blogs/software-security/cve-2020-7958-trustlet-tee-attack/ • g_dump_moduleは指紋センサーからのイ メージの出力をREE内に書き出すために使用 されている • しかしgf_modules_cmd_entry_pointが使用 するテーブルには存在しません • ↑エラー・ハンドラーから探ってみた • target_idが合致すれば呼び出しが継続 • さらにTrustlet内で呼び出される g_dump_moduleというシンボルを特定
  35. 35. © 2019 Synopsys, Inc. 35 OnePlus 7 Proの指紋認証のTrustletの仕組み テストモジュールの発見 https://www.synopsys.com/blogs/software-security/cve-2020-7958-trustlet-tee-attack/ • テストモジュールの関連を図示化するとこん な感じ(読めないと思うのでウェブサイトで 確認してください) • g_product_test_moduleをバイナリー内で検 索するとsz_factory_test_capture_imageが 見つかった
  36. 36. © 2019 Synopsys, Inc. 36 OnePlus 7 Proの指紋認証のTrustletの仕組み 関数テーブルの構造を解析 https://www.synopsys.com/blogs/software-security/cve-2020-7958-trustlet-tee-attack/ • そして、解決された関数テーブルを使用して 正しい関数を呼び出す実際のコマンドを呼び 出す ※理想的なのは、startルーチンでの初期化の 際に、構造体のメンバーの目的を理解するため のエラーメッセージが出力されること • startとstopはbootstrap、entryがコマンド処 理 • g_product_test_moduleをよく見ると、 g_product_test_ctxというシンボルを使って 関数テーブルを解決しているのがわかる
  37. 37. © 2019 Synopsys, Inc. 37 OnePlus 7 Proの指紋認証のTrustletの仕組み 地道な作業で関数ポインターの一覧を再現 https://www.synopsys.com/blogs/software-security/cve-2020-7958-trustlet-tee-attack/ • 最終的にはこれが出来上がった• startルーチンはgf_product_test_createを 呼び出し、関数テーブルに必要なデータを保 存するメモリーを確保する • 最初のentryを書き込んで gf_sz_product_test_ctorを呼び出す • そしてエラーメッセージから必要な関数のポ インターの名称を拾い続ける(繰り返す)
  38. 38. © 2019 Synopsys, Inc. 38 OnePlus 7 Proの指紋認証のTrustletの仕組み REE側に指紋画像データをコピー https://www.synopsys.com/blogs/software-security/cve-2020-7958-trustlet-tee-attack/ • 解析の最初の段階で、Target IDは1003、 Command IDは17だとわかっている • sz_factory_test_capture_imageを使って結果 がどのように構成されているのかを確認でき る REE側で指紋の画像を受け取ることができる! • どう改修したか? – 出荷版のTrustletから IDが17のコマンドハンド ラーを削除 – REEからの呼び出しは使えなくなった goodix::SZCustomizedProductTest::factory CaptureImage
  39. 39. © 2019 Synopsys, Inc. 39 まとめ
  40. 40. © 2019 Synopsys, Inc. 40 指紋認証の試験用のコードはREE内で動作する セキュリティの実装のセオリー https://www.synopsys.com/blogs/software-security/cve-2020-7958-trustlet-tee-attack/ • 指紋認証を行うために、REE内で動作するア プリケーションはTEE内のTrustletと通信し なければならない • Trustletにはデバッグ・コールが用意されて いるのが一般的、でないと正常に動作してい るのか検証ができない • そして、製品版のTrustletではAPIエンドポイ ントにアクセスできないようにする • 例えば#ifdefでデバッグコードと製品版の コードを切り替えて、機能しなくする
  41. 41. © 2019 Synopsys, Inc. 41 • Trust Zoneによるアクセス制御を実装したことで100%安全なわけでは無い • コーディング規約を守っていても防ぐことはできない • アーキテクチャレベルのレビューでは見つからない可能性が高い • 生体認証の「認証用データ」を処理するSDKを理解することが必須だがそれだけでもダメ • ニッチな脆弱性の発見は時間とコストがかかる デバッグコードが残されていたということで片付けていいのか? まとめ

×