摘要:零時科技安全團隊對某交易所進行測試時發現,其默認小數點精度爲4位小數點,大於4位小數的會往前四捨五入,比如0.9999系統會默認爲1,由於此精度問題,導致可被攻擊者薅羊毛。零時科技安全團隊在對某交易所進行安全測試時發現,可不停購買數量爲負數的代幣,然後確認付款,在商家後臺無法進行確認收款,可以批量生產垃圾訂單,而且會導致短信炸彈。

君子生非異也,善假於物也。

誠然,善於調用各種接口會大幅提高開發效率,但在使用前應充分了解接口的運作機制,進行合理的調用限制。

免得猛虎下山,反噬其主。

一 、接口安全概述

API,英文全稱Application Programming Interface,翻譯爲“應用程序編程接口”。是一些預先定義的函數,目的是提供應用程序與開發人員基於某軟件或硬件得以訪問一組例程的能力,而又無需訪問源碼,或理解內部工作機制的細節。 由於其快速、有效和安全、可靠 的特性,被開發人員廣泛的使用。但如果接口本身沒有做好安全防護或者調用時沒有做好頻率限制,都會導致問題的出現。

二、測試列表

接口安全

  • RPC安全測試
    • RMI遠程命令執行
    • CORS
  • Web Service安全測試
    • SQL注入
    • 信息泄露
  • GraphQL安全測試
    • 未授權訪問
    • 信息泄露
    • GraPhQL SQL注入
    • 嵌套查詢DOS
  • RESTful API安全測試
  • 數值精度測試
  • 接口頻率限制測試
    • 郵箱驗證接口
    • 短信驗證接口
    • 批量刷單
  • 超時檢測

三、案例分析

數值精度測試

零時科技安全團隊對某交易所進行測試時發現,其默認小數點精度爲4位小數點,大於4位小數的會往前四捨五入,比如0.9999系統會默認爲1,由於此精度問題,導致可被攻擊者薅羊毛。

攻擊者可以開兩個賬號,一個掛單(無需認證即可掛單),一個出售,配合無限薅羊毛。

雖然單次獲取收益很小,但是無限制的話,收益還是不錯的。

通過大量無限制刷單,可以套取系統中心賬號代幣,攻擊者可以出售代幣套現跑路。

如下圖所示,批量下單0.9999個代幣,當15分鐘後,系統默認取消交易,然後錢包中心錢包將返回1個代幣給賣家,獲取額爲代幣:

建議嚴格按照4位小數精度進行算術運算,並對下單頻率以及數量進行限制。

接口頻率限制測試

郵箱驗證接口

在進行身份甄別時,郵箱驗證碼因其免費的緣故被廣泛使用。但是在開發過程中沒有正確的限制接口頻率,就可能被利用進行電子郵箱炸彈攻擊。電子郵件炸彈是最古老的匿名攻擊之一,通過設置一臺機器不斷的大量的向同一地址發送電子郵件,攻擊者能夠耗盡接受者網絡的寬帶。

短信驗證接口

與上述所說的郵箱驗證相同,因爲短信驗證的方便快捷以及安全性較高也被廣泛的用於身份驗證中。與郵箱驗證不同的是,短信驗證碼的條數是需要按照數量付費的。如果未進行合理頻率限制會導致:

  • 持續給手機號發送垃圾短信,造成極差的用戶體驗。

  • 對於公司來說,發送短信一般藉助第三方運營商,每條短信需要支付費用,如果一天被刷幾十萬條,一天造成上萬的虧損。

批量刷單

零時科技安全團隊在對某交易所進行安全測試時發現,可不停購買數量爲負數的代幣,然後確認付款,在商家後臺無法進行確認收款,可以批量生產垃圾訂單,而且會導致短信炸彈。請求如下:

此漏洞是由於可以接受非法參數以及未作頻率限制共同造成。不僅影響到業務流程的正常運轉,而且耗費了大量的短信資源。這種類似於薅羊毛的技術單次看來危害較小,所以經常會被忽略,但如果被無限制的利用,羊毛出在羊身上,終有禿嚕皮的一天。

君子生非異也,善假於物也。

誠然,善於調用各種接口會大幅提高開發效率,但在使用前應充分了解接口的運作機制,進行合理的調用限制。

免得猛虎下山,反噬其主。

注:以上所有測試均已經過相關交易所授權,請勿自行非法測試。

本文由深入淺出區塊鏈社區合作伙伴 - 零時科技安全團隊 提供。

深入淺出區塊鏈 - 打造高質量區塊鏈技術博客,學習區塊鏈技術都來這裏,關注 知乎 、微博 掌握區塊鏈技術動態。

相關文章