🧠 前言
商業邏輯漏洞是資安世界中非常「隱蔽但致命」的一類漏洞。
這類漏洞不是因為程式語法錯誤或缺乏加密,而是來自於 開發者設計流程或判斷邏輯不夠嚴謹,被駭客利用後,可能導致金流錯誤、個資外洩、權限繞過等重大風險。
❓ 何謂商業邏輯?
讓我們先來看一個購物網站的基本流程:
- 使用者看到商品列表
- 使用者點選喜歡的商品,按下「加入購物車」
- 系統將商品加入購物車
- 使用者點選「結帳」
- 系統計算應付金額,完成交易
這些「流程」和「條件判斷」就是商業邏輯的一部分。
如果後端邏輯設計不良,就可能被有心人士操弄,例如:
- 修改價格
- 改變數量
- 避開付款流程
- 繞過會員等級限制
🔍 為什麼會產生商業邏輯漏洞?
這類問題通常不是單純的技術錯誤,而是來自開發流程中幾個常見的疏忽:
- 無條件信任使用者輸入
- 前端驗證有做,但後端沒驗證
- 驗證規則寫得不完整或不嚴謹
- 沒有針對邊界情況進行處理(如:0 元、負數、重複點擊)
💥 商業邏輯漏洞的影響
- 修改或繞過原本預期的系統邏輯
- 導致資金損失、業務流程被濫用
- 使用者資料外洩或不當使用
- 影響品牌信任與法規合規性
📌 常見的商業邏輯漏洞範例
範例 1:前端過濾,後端沒檢查
購物車頁面雖然前端限制了最大購買數量,但使用者若用工具(如 Burp Suite)改封包,送出 quantity=-100
,後端沒有檢查,結果可能導致:
- 交易金額為負數
- 系統誤發現金券或退款
- 被用來大量盜刷優惠
範例 2:訂單驗證不完整
某些 API 只檢查是否有「登入」,卻沒確認使用者是否為該筆訂單的擁有者,導致攻擊者只要猜中訂單編號,就能查詢或取消他人的訂單。
🧪 實作練習建議
工具:Burp Suite(社群版即可)
- 攔截購物網站的
POST
請求 - 修改關鍵欄位如
price
、quantity
、user_id
- 嘗試送出不合理的值(負數、0、極大值)
靶場環境推薦:
- OWASP Juice Shop
- PortSwigger Labs
- DVWA(需自行搭建)
🧩 HackerOne 真實案例
🔐 如何防禦商業邏輯漏洞
設計階段
- 不信任使用者輸入,後端獨立查驗價格與邏輯
- 針對每個功能流程進行濫用風險評估
開發階段
- 後端再次驗證所有業務邏輯相關參數
- 給重要操作加上簽章驗證、使用者驗證碼、一次性 Token
測試階段
- 實施 Security QA 測試,設計濫用流程模擬
- 撰寫自動化測試覆蓋商業邏輯分支
📚 CWE 參考
🧠 互動問題 & 小測驗
問題 1
在一個購物車系統中,使用者將商品價格改為 1 元並送出訂單成功,這屬於哪類漏洞?
- A. SQL Injection
- B. XSS
- C. 商業邏輯漏洞 ✅
- D. CSRF
問題 2
下列哪一項不是預防商業邏輯漏洞的方法?
- A. 在後端進行驗證
- B. 前端寫嚴格的 JavaScript 驗證
- C. 加入權限控管
- D. 為操作流程設計驗證機制
答案:B(因為前端容易被繞過)
問題 3
你發現某網站的購物車可以送出 quantity=-10
,結果獲得退費,這代表哪個設計出現問題?
- A. 密碼加密演算法
- B. 訂單處理邏輯 ✅
- C. 資料庫備份機制
- D. API 金鑰保護
📌 延伸練習題(小專案)
設計一個小網站購物流程(用 HTML 表單 + Flask / PHP)
- 功能:選商品、加入購物車、結帳
- 練習:用 Burp Suite 攔截請求,試著讓商品變成負數、價格變成 1 元
- 任務:改進後端程式碼,加入正確的驗證邏輯,讓漏洞無法被利用
🧭 結語
學資安,不只是學會攻擊工具,更要學會「看懂流程、找出邏輯盲點」。
當你能用駭客思維審視一段商業邏輯,你就已經具備了高價值的資安能力。
讓我們從今天開始,訓練「邏輯漏洞偵測力」!