Web ATM已經成為大家日常生活繳費轉帳、網購常用的付款方式。然而日前被竹科工程師Jim踢爆晶片金融卡交易機制出現瑕疵。晶片卡有漏洞早已不是新聞,但是這次他卻透過另一種方式發現了交易流程上的漏洞。只要受害者電腦已被駭,有心人士即可在遠端模擬受害者的晶片金融卡/讀卡機交易環境,取得驗證。讓銀行Web ATM系統誤以為是合法持卡人,而允許交易。經由他的測試,已有20家Web ATM系統成功被騙。
銀行投機取巧 未落實晶片安全開發規範
Jim表示由於在2004年底就開始作晶片卡應用於校園網路登入認證研究,當初在經過一連串的測試與實驗中就發現晶片卡在傳輸時,是傳送明碼的APDU COMMAND,以進行與晶片卡驗證。因此如果這次銀行端的Active X元件跟讀卡機之間傳輸過程有加密的話,就不會被側錄成功了。
一般正常的網路ATM交易認證程序有兩段,使用者插入晶片金融卡登入Web ATM系統需要先輸入PIN碼,通過後接著銀行會對晶片卡發出請求,要求交易驗證碼(TAC, Transaction Authentication Code)。TAC值主要由卡號、銀行代碼、交易類型等資料所產生,因此不同交易有不同TAC,轉帳或餘額查詢所使用的TAC值均有固定格式。
此次Jim所做的概念性驗證主要是,能偽造銀行對晶片卡TAC的請求,因此晶片卡便不斷對偽造者輸出TAC值。在實作中,當他把這些預先側錄下來的TAC值提交給銀行驗證時,這些銀行伺服器端並沒有要求持卡人再次驗證,便直接允許交易。因此有了這些TAC值,等於已經繞過前面第一段的認證,於是他示範隨意輸入Pin碼,銀行端都允許其交易。
第二代讀卡機也無用武之地
儘管TAC的產生也是利用所謂的動態密碼技術,了解TAC格式的數位鑑識專家指出,由於格式其中的幾個欄位有些銀行設計成固定的,有些則是變動的,如果是後者就比較安全,無法自己構造請求,而設計成固定的銀行,才會有這次這樣的風險出現。Jim表示,所謂TAC的一次動態密碼技術(OTP, one time password)可分為離線式與在線式,採取在線式OTP就可以做成亂數輸入,如果是離線式OTP都是以固定資料格式傳送給晶片卡本身,就會有被攻擊的可能。
儘管這次他是用自己的卡,且僅做餘額查詢,但瞭解其實作原理的資安專家認為,此種模式在遠端也可模擬成功。由於這種手法不是在用戶端執行,不需要等使用者插入晶片金融卡,才能進行。因此不受插拔卡一次交易的限制。至於目前市面上所謂有數字按鍵的二代確認型讀卡機,Jim認為也是只保護前段PIN碼的安全,在這次攻擊手法上並無異於其他普通讀卡機環境。
一個也不能少
在蘋果日報揭發之後,銀行公會已發函要求所有銀行要落實「晶片金融卡網路應用系統開發注意事項」,也就是要求TAC的某些欄位不能是固定。截稿前,據悉已經有某家號稱Web ATM使用人數最多的系統已經改善,其他銀行也應盡速修改。否則只要有一家不修改的銀行,所有跨行的Web ATM使用者仍然存在被攻擊風險,再度證明了資訊安全的木桶理論,只要有一個洞,就會讓木桶漏水。