Skip to content

[Daily Questions Challenge 34]
OWASP Top 10 簡介(2025 版)

[Daily Questions Challenge 34] OWASP Top 10 簡介(2025 版)

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 比較
A01Broken Access Control(失控的存取控制)維持 #1
A02Security Misconfiguration(安全設定錯誤)#5 → #2 ↑
A03Software Supply Chain Failures(軟體供應鏈失敗)新增
A04Cryptographic Failures(加密失敗)#2 → #4 ↓
A05Injection(注入攻擊)#3 → #5 ↓
A06Insecure Design(不安全的設計)#4 → #6 ↓
A07Authentication Failures(身份驗證失敗)維持 #7
A08Software or Data Integrity Failures(完整性失敗)維持 #8
A09Security Logging and Alerting Failures(日誌與警報失敗)維持 #9
A10Mishandling 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、選擇加密方案時,能夠主動辨識哪些決策會引入安全風險。

參考