前言
商業邏輯漏洞主要由「開發者」在撰寫程式碼的時候,不太熟悉安全的程式碼開發原則,因此寫出 Bug 而該 Bug 引起重大影響,如個資外洩、商業邏輯任意修改。
何謂商業邏輯
首先我們可以看以下的流程
- 使用者看到商品列表
- 使用者看到喜歡的商品,後點選「加入購物車」的按鈕
- 系統將商品加入到購物車
- 使用者點選結帳
- 系統結算應該結帳的金額
其中加入購物車跟結帳都是需要系統後端撰寫程式碼去實作「邏輯」的部分,但如果這些內容沒有撰寫好,可能就會有邏輯缺陷。
為什麼會有商業邏輯漏洞
主要有幾個原因
- 無條件信任使用者輸入的內容
- 過濾使用者輸入,但是沒有過濾完全,導致被繞過
商業邏輯漏洞影響
- 任意修改系統邏輯
- 影響到使用系統的使用者,如個資外洩
商業邏輯漏洞範例
- 前端進行過濾,但後端沒有過濾,導致只需要攔截封包,修改封包內容就可以被繞過。
- 訂購商品沒有限制為正整數,被駭客修改成 負數或是 0 可能會造成金額上的算數問題。
Hackerone 真實案例
- Business logic Failure – Browser cache management and logout vulnerability. (2014-04-18)
- 2FA Session not expires after the password reset (2019-01-27)
- Payment method token being sent to 3rd party analytics service (2019-07-08)
- Grammarly Previously created sessions continue being valid after MFA activation (2019-08-05)
- Business Logic Flaw – A non premium user can change/update retailers to get cashback on all the retailers associated with Curve (2019-08-13)
- An attacker can buy marketplace articles for lower prices as it allows for negative quantity values leading to business loss (2020-01-10)
- 2FA bypass by sending blank code (2020-06-13)
- Availing Zomato gold by using a random third-party
wallet_id
(2020-07-23) - Imgur Bypass subscription (2020-11-07)
- Get information about the users emails without authentication (2021-01-28)
- Twitter Bypass t.co link shortener in Twitter direct messages (2021-04-04)
如何防禦商業邏輯漏洞
- 完全不要信任使用者的輸入
- 程式碼邏輯應該要撰寫清晰
CWE
- CW-840 Business Logic Errors