Samsung Pay漏洞深度剖析
2016年7月14號,來自美國加利福尼亞州莫德斯托社區學院的Salvador Mendoza發表了一篇題為《Samsung Pay:Tokenized Numbers, Flaws andIssues》的文章,稱發現了Samsung Pay Token的安全問題。
同年8月4號,其在Black Hat USA大會上對此項攻擊進行了宣講和演示(針對VISA卡片進行)。對此,國內各大媒體紛紛予以跟蹤報道,那麼Samsung Pay是不是真的這麼不堪一擊呢?
一、還原Samsung Pay破解事件完整情況
Salvador Mendoza使用android系統的adb命令對Samsung Pay進行調試,獲取了應用資料庫,同時反編譯了Samsung Pay的相關應用程序,從而實現了對MST磁軌信息的分析。
(註:Salvador錯誤的將磁軌中的所有數據統稱為Token,本文在描述時為不產生混亂,將以卡組織的名詞定義為準進行闡述)。
通過分析,發現了一些弱點:
1. MST磁軌信息可以被獲取;
2. 客戶端應用混淆不夠且包含注釋,其用於存儲信用卡數據的本地資料庫加密並不可靠(密鑰是靜態的,且可通過反編譯客戶端後獲取);
3. 生成的MST磁軌信息只要未被使用,則一直有效。
基於以上弱點,Salvador推導出了四個可能的攻擊場景:
1. 通過社會工程學方式騙取用戶生成MST磁軌信息,並竊取用於盜刷;
2. 利用側錄設備阻斷正常的支付過程,並竊取MST磁軌信息用於盜刷;
3. 反編譯出加解密代碼;
4. 猜測下一個MST磁軌信息。
二、攻擊的實質和分析
本次攻擊實質上是:
①通過對Samsung Pay手機應用的分析和MST磁軌信息的反覆測試,了解到MST磁軌信息中每個位的含義,進而公布出來造成一種秘密曝光的輿論效果;
②將傳統磁條卡盜刷的攻擊方式移植到Samsung Pay上,實現了攻擊效果的演示;
③國內媒體宣傳時大肆渲染的「Token化程度有限,可以被預測」,只是Salvador假定的可能攻擊場景之一,Salvador並
沒有證實
該場景可以實現,也沒有做出演示,僅僅是根據現象(動態的MST驗證碼長度僅有3位和可進行多次交易而大量收集歷史數據這兩點)進行了猜測
。具體來說:
針對實質一
,由於Andorid是一個開放的系統,且基於Java編寫的代碼易於反編譯,因此容易對其應用進行分析,部分反編譯得到的代碼示例如下:而MST磁軌信息的傳輸方式與傳統的磁條卡一樣,因此可以較容易的通過通用讀卡器讀取磁信息,結合反編譯得到的代碼和多次採集得到的多條磁信息,可分析出磁軌中每個部分的含義。
如針對二磁信息為;4012300001234567^21041010647020079616?的數據,其關鍵部分含義如下:
401230 | Token中的卡bin |
---|---|
0001234567 | Token中的剩餘部分 |
2104 | 有效期 |
101 | 服務碼 |
0647 | 賬戶參數索引時間戳 |
02 | 賬戶參數索引計數器 |
0079 | 交易計數器 |
616 | MST驗證碼 |
針對實質二
,由於MST本質上是一張用一次變一次磁軌信息的磁條卡,因此傳統針對磁條卡盜刷的側錄、製作偽卡等技術手段依然有效,所以Salvador可以方便的進行盜刷演示。而針對實質三
, Salvador只是提出了一種直覺上的認識:一個位數極為有限又可以大量採集前序數字的序列,應該可以一定程度上預測後續數字。但是針對這個從直覺得出的結論,他並未進行驗證和證實。三、攻擊的影響性分析
針對上述提到的實質一,由於Samsung Pay的安全並不是建立在演算法保密的基礎上,而是依賴於核心密鑰的保密性以及運行環境的可信,所以對應用程序的分析和對MST磁軌信息的解析並不會直接降低Samsung的安全性。
但是,考慮到程序在編寫時可能存在bug,而程序易於被分析意味著有更大的可能被攻擊者找到程序中的存在的漏洞,因此對安全性還是存在著一定的影響。
針對上述提到的實質二,結合Black Hat大會的實際演示可知,此類攻擊如要實施成功,需具備以下前提條件:
①物理接觸三星手機,並將Samsung Pay功能打開;
②保持該三星手機在攻擊成功前不會進行支付操作;
③製作出的偽卡並不能繞過PIN,除非利用該偽卡執行的交易免密,否則還需要提前盜取卡片對應的PIN;
④ 製作出的偽卡僅可使用一次,下次需重新獲取和注入新的磁軌信息。
因此,其實際攻擊利用難度大於傳統磁條卡的盜刷,一次磁信息泄露後造成的損失也較傳統磁條卡更為有限。換句話說,Samsung Pay的MST由於其本質是磁條卡的變種,因此存在與磁條卡類似的風險,並不是新的安全問題,且其風險較傳統磁條卡已有改善。
針對上述提到的實質三,雖在國內媒體上被大肆宣傳,但Salvador並未真正實現。我們通過研究發現,VISA的MST驗證碼生成是依靠一個專用密鑰對交易相關的動靜態數據加密處理後得到的,在不攻破TEE運行環境拿到密鑰的情況下難以實現預測。
但是,由於MST驗證碼僅有3位,在不進行有效交易的情況下其有效期可達一個小時或更長,因此存在暴力破解的可能。
總之,MST驗證碼並沒有向媒體報道的那樣不堪一擊,其破解方式只能是暴力破解而非所謂的預測。
且,即使被攻破,雖從總體上將Samsung Pay的安全風險拉低到與普通磁條卡類似,但實際利用時仍比普通磁條卡複雜(因所製作的偽卡需在MST驗證碼等動態信息未變時及時刷卡消費,且每刷一次就需重新獲取和寫入新的磁軌信息)。
四、對比國內Samsung Pay的安全性分析
經調查對比研究,國內的Samsung Pay與本次攻擊事件中涉及到的VISA Samsung Pay方案並不完全一致,其主要區別在於:
①磁軌中的MST驗證碼等動態數據的長度、生成演算法不一樣。國內的演算法使用了更短的時間窗口,同時生成了更長的MST驗證碼,這就極大的避免了被暴力破解的可能。
②Samsung Pay的運行環境不一樣。國外的方案運行在TEE環境中,而國內方案運行於更安全的基於獨立安全晶元的eSE環境中。
③MST磁軌信息的生命周期不一樣。國內的方案中MST磁軌信息在需要時由eSE實時生成,然後直接通過硬體設備傳輸給外部的POS機等終端接收設備,並沒有在手機內的資料庫中存儲這一過程的存在。
綜上,國內版的Samsung Pay大家還是可以放心愉快的買買買。
*投稿:狴犴安全團隊(企業賬號),未經許可禁止轉載
TAG: |
※IE SetAttributeStringAndPointer釋放後重用漏洞分析
※ShadowBroker釋放的NSA工具中Esteemaudit漏洞復現過程
※metasploit之Windows Services漏洞提權實戰
※iOS 11 beta iCloud Activation Lock曝漏洞
※Optionsbleed 漏洞泄露 Apache Server 的內存信息
※iPhone 3GS現新bootrom漏洞
※Stack Clash漏洞:可提權Unix/Linux系統
※Shadow Brokers 泄漏 NSA 的 Windows 和 SWIFT 漏洞利用代碼
※使用 Burp Infiltrator 進行漏洞挖掘
※Shadow Brokers自曝漏洞細節並論證Windows 10安全性,結果……
※Windows Server中的 WINS 伺服器遠程內存損壞漏洞分析
※安全專家指出macOS High Sierra存在漏洞
※PostgreSQL管理工具pgAdmin 4中XSS漏洞的發現和利用
※【漏洞預警】GitLab曝高危漏洞,可致private token等敏感信息泄露
※rubygems.org遠程命令執行漏洞分析
※Spring WebFlow 遠程代碼執行漏洞分析
※Docker鏡像漏洞調查:SSL Death Alert排名「榜首」
※iOS10.3中Safari scareware漏洞已被徹底修復
※McAfee VirusScan Linux企業版存在多個高危漏洞,請儘快升級