Hunting in the Near Field: An Investigation of NFC-related bugs of Android / Qi Zhao (Joachim Hyrathon) === ### Speaker - Speaker: JHyrathon (360 Alpha Team) - Pwn Contest冠軍 ### Content - NFC 肥大,從 RFID 開始演進有很多歷史問題 -> 較好找洞 - 攻擊面和目標 1.Binder進程間通訊 2.應用到NFC協定疊(stack) 3.卡片/讀卡器到NFC協定疊 4.HwBinder近程間通訊 5.System on Chip 6.手機到卡片/讀卡器 7.讀寫功能模組 8.卡模擬(HCE)模組 9.點到點通訊模組(PTP) -> 即將被 Google 廢棄 (Android Beam) 10.通用基礎模組 - AOSP 的 `system/nfc` folder 1.協定疊實現在此 2.大量直接操作raw buffer 3.用戶可控資料 - 基礎概念 1.gki - 緩衝區記憶體分配器,based on ring buffer,難以破壞heap,較少出現"double heap" 訊息傳遞,不同Task傳遞訊息 - 計時器 2.nfa "管家程序" - 系統管理器 - 設備管理器 - 狀態機管理器 - 初始化和釋放資源 - 在協定碟中切換 - 消息收發 - 與上層間進行溝通 管家程序 大部分資源皆為全域變數 3.type of tags - 隨興命名 - Reader/Writer支援:t1t,t2t,t3t,t4t,t5t,i93(ISO-15693),??? - 卡片模擬支援: t3t(with limited functionality), t4t - 模糊測試還是代碼審計 - 大量線程,大量狀態機,大量狀態 這些狀態機若有大量的狀態進去,效果不是很好 - 多階段輸入,順序不定 拼包及代碼合併效果不好 - 代碼耦合度高,難以分辯 模塊想拆出來只能拆出子模塊,產生第四條問題 - 約數條件較多,從程序中間觸發模子crash不意味著能夠依賴用戶輸入實現同樣效果 - **結論**: 審計優於模糊測試 - 使用到的工具: Proxmark3 - 如何寫PoC - 買張卡片惡意修改 - 使用Android模擬設備攻擊卡片 - 雖然支援很多,但功能有限 - android支援卡片模擬協定有限 - Proxmark 3 - Proxmark 3 介紹 - (官網敘述)'the proxmark3 is a powerful general purpose blablabla - 文檔豐富->好上手 - 晶片 高頻天線 低頻天線(非必要) USB - 請遵守法律w - 不要做snoop之類的動作 - 官方支援的指令有限,可是可以自己改寫 compile 並燒進去 ### 實例分析 #### CVE-2019-9358 不能觸發的原因更有趣(但我沒聽懂) 1.前導結構(buffer) 2.從 p pointer讀到前面的參數,並p移位 3.??? 4.  因auto bound產生的問題 Android系統限制Felica模擬能力 https://www.sony.net/Products/felica/NFC/index.html #### CVE-2019-2034 具有代表性 "高危" 高危漏洞常見形式 - gki緩衝區運行特點 - NFC協定疊包含多個層次,每一層都會在資料外多加一層 - 引入offset字段 - 當需要玻璃某層header時,警需要增加offset並減少len - 降低反沖拷貝區的頻率 buffer沒有做"--"(減減)的檢查 >buffer length=0 >整數型下溢 >成為非常大的值(第一個下溢還未有影響) >符合後面code: if的條件 >進入PIESP函數 >第二個length向下溢出(進一步繞過) >以參數傳遞出去 call back????(聽不懂QQ) 講者得到了下溢漏洞不可控的結論 一樣沒聽懂過程... **還記得gki是基於ring buffer嗎?其記憶體佈局上可達成一定的預測及控制 #### CVE-2019-2099 - 在2019-06-01修復 - `nfa_rw_store_ndef_rx_buf` 這個函數有問題 **拼接須考慮數組可接納多大數值 ### Summary - 難以模糊測試 - 難以利用 - 物理接觸 - 跨設備 - 處理代碼位於沙箱化的,開啟多種保護的進程中(我怎麼看不懂打了啥XD誰註解下 - 潛在研究方向 \OvO/ - Hal - SoC - Kernel Q: trust zone是否都是用模糊測試? A: 看廠商 (〒︿〒) 四樓有車輪餅,吃一吃開心點(? 吃都吃 吃起來!!! 我好懵阿QQ ###### tags: `HITCONCMT2019`,`HITCONCMT`,`HITCON`
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up