[Daily Questions Challenge 34]
OWASP Top 10 簡介(2025 版)
2026-06-28
![[Daily Questions Challenge 34] OWASP Top 10 簡介(2025 版)](/daily-questions-challenge.png)
⬆
OWASP 是什麼?
OWASP(Open Web Application Security Project)是一個致力於改善軟體安全的非營利基金會。自 2001 年成立以來,OWASP 發表了大量免費且開放的資安研究報告、工具與指引。
其中最廣為人知的是 OWASP Top 10,這是一份針對 Web 應用程式最常見安全風險的標準清單,每隔數年更新一次。最新版本於 2025 年 11 月在 OWASP Global AppSec DC 正式發布,是 2021 年以來的首次重大更新,基於超過 175,000 筆 CVE 記錄與 589 個 CWE 分析而來。
2025 版清單一覽
| # | 類別 | 與 2021 比較 |
|---|---|---|
| A01 | Broken Access Control(失控的存取控制) | 維持 #1 |
| A02 | Security Misconfiguration(安全設定錯誤) | #5 → #2 ↑ |
| A03 | Software Supply Chain Failures(軟體供應鏈失敗) | 新增 |
| A04 | Cryptographic Failures(加密失敗) | #2 → #4 ↓ |
| A05 | Injection(注入攻擊) | #3 → #5 ↓ |
| A06 | Insecure Design(不安全的設計) | #4 → #6 ↓ |
| A07 | Authentication Failures(身份驗證失敗) | 維持 #7 |
| A08 | Software or Data Integrity Failures(完整性失敗) | 維持 #8 |
| A09 | Security Logging and Alerting Failures(日誌與警報失敗) | 維持 #9 |
| A10 | Mishandling of Exceptional Conditions(例外處理不當) | 新增 |
各項目說明
A01 — Broken Access Control(失控的存取控制)
連續蟬聯第一名。當系統未正確限制使用者的操作範圍,讓他們能存取超出授權的資源或執行超出許可的行為,即屬此類。2025 版將原本獨立的 SSRF(Server-Side Request Forgery,伺服器端請求偽造)併入此分類。
後端場景:API 端點 GET /api/orders/{orderId} 若未驗證該訂單是否屬於當前登入使用者,任何人只要猜到 ID 就能存取他人的訂單,這是典型的 IDOR(Insecure Direct Object Reference)。
A02 — Security Misconfiguration(安全設定錯誤)
從第 5 名大幅上升至第 2 名,反映雲端服務與容器化部署普及後設定疏漏的普遍性。常見情況包括:保留預設帳密、開啟不必要的功能、缺少安全標頭(Security Headers)、雲端儲存桶設為公開存取。
後端場景:Spring Boot 應用在生產環境未關閉 /actuator/env,導致攻擊者可讀取所有環境變數,包含資料庫密碼與第三方 API 金鑰。
A03 — Software Supply Chain Failures(軟體供應鏈失敗)
2025 版新增分類,從 2021 版的「Vulnerable and Outdated Components」擴展而來,範圍涵蓋相依套件、CI/CD Pipeline、套件發布基礎設施的整體安全問題。儘管發生頻率相對較低,但因其 CVE 的平均漏洞利用與影響分數最高,因此排名第 3。
後端場景:npm 套件遭惡意注入後門(如 2018 年的 event-stream 事件),或 CI/CD pipeline 從不受信任的映像檔拉取並執行腳本,都可能在開發者毫無察覺的情況下讓惡意程式碼進入生產環境。
A04 — Cryptographic Failures(加密失敗)
弱加密或缺乏加密導致敏感資料外洩。常見問題包括使用過時演算法、金鑰管理不當、未強制使用 TLS,以及可預測的隨機數。
後端場景:使用者密碼以 MD5 hash 儲存且未加鹽(salt),一旦資料庫洩漏,攻擊者可透過彩虹表(rainbow table)快速反查出明文密碼。正確做法是使用 bcrypt、Argon2 等自適應 hash 演算法。
A05 — Injection(注入攻擊)
從第 3 名降至第 5 名,但仍是測試中 100% 應用程式都存在的風險。涵蓋 SQL Injection、XSS(Cross-Site Scripting)、Command Injection 等。XSS 發生頻率高但影響相對較低;SQL Injection 發生頻率較低,但危害可能極大。
後端場景:SQL 查詢直接拼接使用者輸入:
sql
SELECT * FROM users WHERE username = '{input}'若 input 為 ' OR '1'='1,即可繞過身份驗證取得所有使用者資料。應使用 Prepared Statements 或 ORM 的參數化查詢防範。
A06 — Insecure Design(不安全的設計)
安全漏洞來自架構或業務邏輯設計缺失,而非單純程式碼錯誤。即使程式碼本身毫無 bug,設計層面的缺失也無法靠修補程式碼解決。根本原因是缺少威脅建模(Threat Modeling)與早期安全需求分析。
後端場景:電商平台先建立訂單再驗證付款,攻擊者可利用競態條件(Race Condition)讓訂單在付款驗證前即被系統處理完成,達到免費下單的效果。
A07 — Authentication Failures(身份驗證失敗)
維持第 7 名,名稱從 2021 版的「Identification and Authentication Failures」精簡。常見問題:未限制登入嘗試次數、Session Token 不過期、密碼重設流程設計不當、缺乏多因素驗證(MFA)。
後端場景:API 登入端點沒有速率限制,攻擊者可對同一帳號進行無限次暴力破解(Brute Force)。或者 Session Token 在使用者登出後仍有效,一旦被竊取即可永久冒用身份。
A08 — Software or Data Integrity Failures(完整性失敗)
系統未驗證執行的程式碼或儲存的資料是否遭篡改。與 A03 不同的是,A03 關注上游供應鏈的問題,A08 關注的是你自己環境內的完整性:未簽署的二進位檔、未驗證的資料、被竄改的 artifact。
後端場景:應用程式自動更新機制從某 URL 下載腳本後直接執行,未驗證 checksum 或數位簽章。或者反序列化端點直接處理不受信任的序列化物件,可能導致 RCE(Remote Code Execution,遠端程式碼執行)。
A09 — Security Logging and Alerting Failures(日誌與警報失敗)
缺乏完整的安全日誌與即時警報,使得攻擊發生時無法及時偵測與回應。2025 版將「Monitoring」改為「Alerting」,強調主動警報才是關鍵,被動記錄日誌還不夠。
後端場景:API 對同一帳號的連續 1,000 次失敗登入嘗試毫無警報,安全團隊在幾天後的例行稽核才發現異常,但帳號早已遭暴力破解。
A10 — Mishandling of Exceptional Conditions(例外處理不當)
2025 版新增分類,取代原本獨立的 SSRF。核心問題是:程式在正常路徑下運作正確,但在異常條件(error、edge case、timeout)下卻以不安全的方式失敗(fail open),共對應 24 個 CWE。
後端場景:授權檢查函式發生例外(Exception),catch 區塊預設回傳「允許存取」;或付款驗證請求超時,系統將其視為「付款成功」繼續處理訂單。
與 2021 版的主要差異
| 變動 | 說明 |
|---|---|
| A02 大升 | Security Misconfiguration 從第 5 升至第 2,雲端誤配置越來越普遍 |
| A03 新增 | Software Supply Chain Failures,從 A06:2021 擴展,範圍延伸至整個供應鏈 |
| A10 新增 | Mishandling of Exceptional Conditions,錯誤處理安全首次獨立列出 |
| SSRF 合併 | 不再獨立列出,併入 A01 Broken Access Control |
| A05 下降 | Injection 從第 3 降至第 5,反映開發工具與資安意識的進步 |
總結
OWASP Top 10 2025 對後端工程師有幾個重要訊號:
- 存取控制仍是首要問題:IDOR、SSRF、權限邊界設計是後端 API 最常見的漏洞來源。
- 供應鏈安全進入前三:相依套件與 CI/CD pipeline 本身都是攻擊面,不能只靠掃描工具被動應對。
- 設定錯誤超越加密失敗:雲端與容器化帶來的設定複雜度,使誤配置風險大幅提升。
- 錯誤處理是新的安全邊界:fail open 的 catch 區塊,可能比 SQL Injection 更容易被利用且更難發現。
理解 OWASP Top 10 不是要把後端工程師培訓成滲透測試人員,而是幫助你在設計 API、處理輸入、管理 Session、選擇加密方案時,能夠主動辨識哪些決策會引入安全風險。