📜 [專欄新文章] 技術解析台灣交易所BitoPro駭客攻擊
✍️ Jeff Hu
📥 歡迎投稿: https://medium.com/taipei-ethereum-meetup #徵技術分享文 #使用心得 #教學文 #medium
重演2014年的 Partial Payment 漏洞利用,罪咎誰當?
背景
台灣加密貨幣交易所 BitoPro 於台灣時間2019年4月28日上架 Ripple 瑞波幣(XRP)開放交易,並於台灣時間2019年5月1日遭到駭客利用 Partial Payment 特徵進行漏洞攻擊,可能損失達6300萬台幣 (根據 BlockTempo 報導)
漏洞在哪?
漏洞來自於 Ripple 支付的特別功能
Ripple 早期推出多種有別於傳統支付 (Payment) 的交易格式,包含非默認路徑支付 (NoDirectRipple)、部分支付 (PartialPayment)、限定匯率支付 (LimitQuality),並採用特定的支付標籤 (Transaction Flag) 作為標記:
https://developers.ripple.com/payment.html#payment-flags
部分支付:容易忽略的危險設計
部分支付的目的主要用於回彈所有目的未知的付款 (Boucing Payments),有點類似於以太坊智能合約常見的 fallback-revert 功能:
function () { revert();}
對 Ripple 而言,一般常見的支付交易 (Payment) 格式如下:
{ "TransactionType" : "Payment", "Account" : "rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn", "Destination" : "ra5nK24KXen9AHvsdFTKHSANinZseWnPcX", "Amount" : { "currency" : "USD", "value" : "100", "issuer" : "rf1BiGeXwwQoi3Z2ueFYTEXSwuJYfV2Jpn" }, "Fee": "12", "Flags": 2147483648, "Sequence": 2,}
上面的 Amount 欄位用來紀錄此筆紀錄總共涉及多少價值。
而特殊的部分交易 (Partial Payment) 格式則會多出一個欄位 delivered_amount,並取代原先 Amount 來紀錄真正涉及的價值。
"delivered_amount": { "currency": "USD", "value": "1", "issuer": "rf1BiGeXwwQoi3Z2ueFYTEXSwuJYfV2Jpn"}
也就是說,如果交易所或任何機構在接受 Partial Payment 時忘記使用新欄位 delivered_amount,而仍然使用舊的 Amount,就有機會受害…
攻擊發生了
駭客使用部分支付進行攻擊
根據 XRPSCAN 上這筆對 BitoPro 的存入支付,可以看出攻擊者將 Amount 設定在 330,000 XRP (約330萬元台幣),不過實際支付的金額只有右側 Delivered 欄位的 0.003255 XRP (約0.03元台幣),甚至低於此筆支付的手續費 0.005 XRP。
706E3FEC8F44CECB6E85FBE749AD5BC4C9C50BA75A280DCCD211696BE17F64B4
若 BitoPro 接受此轉帳並讀取 Amount 作為存入金額,則駭客將憑空製造330萬元台幣,而這筆錢由誰買單?…就將會是交易所自己。
漏洞無人知曉?
2014年Justcoin交易所遭駭
2014年10月8日挪威的 Justcoin 交易所遭到駭客利用部分支付漏洞攻擊。
Stellar 已改善此功能
源自於 Ripple 設計的恆星幣 Stellar 因具有與 Ripple 同樣的部分支付設計,但在觀察到其帶來的實作風險時,已在Justcoin遭駭後三天內改善此功能。
Ripple 持續使用此功能
部分支付是個特徵而不是個錯誤。
“It is not a bug. It’s a feature.”
只能由官網上看到幾篇提醒使用者的說明:[1] 與 [2]。
今後如何預防
每天詳讀 Ripple 的特徵公佈欄
加強 KYC 與 Sanity Checks
閱讀大量區塊鏈攻防新聞:XRP Chat, BlockTempo, ZyCrypto, SlowMist, 與 BlockThreat
來上課啦plz (作者為大家開課的廣告):https://hahow.in/cr/berkeley
作者為大家開設的 Hahow X UC Berkeley 線上區塊鏈課程:
來啦現在快半價誒:https://hahow.in/cr/berkeley
以上技術解析如有建議,歡迎大家主動指出。
作者對 BitoPro 是100%支持,也希望他們能夠安全平穩的度過這個難關,台灣的區塊鏈生態大家一起加油!:)
技術解析台灣交易所BitoPro駭客攻擊 was originally published in Taipei Ethereum Meetup on Medium, where people are continuing the conversation by highlighting and responding to this story.
👏 歡迎轉載分享鼓掌
Search