GSS 資安電子報 0241 期【最新 OWASP Top 10 2025 全解析】

訂閱電子報
2026-01-30 10:21
翻譯及整理:叡揚資訊 資安直屬事業處
 

OWASP TOP 10 Introduction

雖然 OWASP Top 10 中的漏洞有很大一部分是由「不安全的編碼」所造成,安全的編碼能幫助我們降低被攻擊成功的機率。然而,世上並不存在一個絕對安全、永遠不會出錯的程式,系統仍可能因攻擊或例外狀況而發生問題。此時,若缺乏良好的資安政策與管理機制,事件發生後所造成的影響與損失往往會被放大,甚至難以控制。

透過建立良好的資安政策,可以在事件發生時有效降低損失與影響範圍,同時也能降低因人為因素所帶來的風險。資安政策能清楚告訴我們哪些事情必須做、哪些事情不能做,並協助組織在面對資安事件時有一致的應對方式。

OWASP Top 10 彙整了十項最常見且具代表性的資安錯誤,說明這些錯誤可能帶來的影響,並同時提出對應的資安政策建議與程式修復方向。單純只修復程式碼,或只增修資安政策,都是不足的。唯有技術層面的防護與管理層面的政策相互配合,才能有效降低整體資安風險。

 

A01:2025 - Broken Access Control

背景

  • 在 2021 年時的位置在 A01。到了 2025 年此項依然是最危險的風險
  • A10:2021 Server – Side Request Forgery (SSRF) 被合併至 Broken Access Control
  • 在測試時發現,100 % 的應用程式中都存在至少一種 Broken Access Control

描述

Broken Access Control 會導致攻擊者能執行未經授權的動作。

  • 違反最低權限 (Principle of Least Privilege),使低權限的人 (包含未登入時),能夠修改高權限的資訊
  • 透過修改 URL、內部應用程式、API 來完成攻擊
  • 攻擊者可透過修改自己的唯一識別碼,來達成攻擊的目的
  • API 不夠安全,使任何人都能隨意呼叫 (JWT – Token 失效、CORS 失效、POST, PUT, DELETE 安全設定不足)

如何預防

Access control 只在攻擊者無法接觸的 Server 進行操作。 (包含透過 Serverless-API)

  • 除了公共資源外,預設拒絕其他請求
  • 在整個系統都用同一套,使用同一個 Access control,不要每個功能各寫一份。另外盡可能避免使用CORS
  • 只允許特定的使用者擁有資料所有權 (Record Ownership), 並非所有人都有新增、讀取、修改或刪除的權限
  • 機密的業務限制應由系統的 domain models 進行執行
    關閉 Web 伺服器的目錄列表功能,並確保 (.git …) 含有高敏資訊的檔案,無法被查詢
    需要有 Access control log。並在錯誤時對 Admin 發出警告
    設定 API 的速率上限,降低自動化工具帶來的傷害
    在登出後,需撤銷使用者的權限

總結

應用程式的作者因權限檢查出現漏洞,導致系統給予攻擊者他沒有的權限。這能使攻擊者能執行需要有權限才能達成的事。例如: 竊取高敏資訊,甚至是修改刪除資訊。

 

A02:2025 - Security Misconfiguration

背景

  • 在 2021 年時的位置在 A05
  • 在測試時發現,100 % 的應用程式中都存在至少一種 Security Misconfiguration

  • OWASP 認為隨著軟體轉向更高度自由的配置,該風險提升至此,完全不感到意外

描述

Security misconfiguration 是指系統、應用程式、雲服務安全設置錯誤造成的風險。

  • 當應用程式在 stack (堆疊) 或 雲服務上 的任意部分缺乏安全限制。
  • 啟用或安裝了不必要的功能 (port、服務、頁面、帳號、測試框架或權限)
  • 使用預設帳密
  • 升級系統後,更動到安全功能
  • 過度重視相容性,導致系統不夠安全
  • 未設定安全值

如何預防

  • 在使用不同認證資訊(帳號密碼、Token 等)的前提下,建立一個可重複的資安設置流程,可以方便且快速在不同環境部署,同時也能降低錯誤發生率
  • 減少不必要的功能
  • 在修復時應建立一份 Patch,以追蹤資安相關事件
  • 使用分段式架構,例如:分段 (segmentation)、容器化 (containerization)、雲端安全群組 (ACLs) 達成有效的安全區隔
  • 用自動化流程達到驗證配置的安全性

總結

在執行安全設置時,因設置有誤甚至是使用預設值,已讓攻擊者能從中竊取高敏資訊。

 

A03:2025 Software Supply Chain Failures

背景

  • 此風險正在逐步提高,從 A09:2013 > A09:2017 > A06:2021 > A03:2025
  • 雖目前風險列在 A03,但在主流社群中,有 50% 的人,認為該風險為排名第一的風險
  • 在分析中該風險的平均發生率是最高的
  • 該風險的 CVE 只有 11 個,CWE 只有 5 個
  • 該問題相對不好識別

描述

Software supply chain failures 是指因第三方套件、工具、軟體引發的問題

  • 沒有追查或定期追蹤,你使用的套件 (包含套件引用的套件)
  • 使用過時或不支援的套件 (Server, API, package …) 也沒有進行後續的修補
  • 當供應鏈有進行更動時,沒有進行追蹤 (包含 IDE, SandBox, images, CI/CD …)

如何預防

  • 建立 SBOM 表,以追蹤自己使用的套件
  • 移除未使用的套件
  • 持續監控 NVD、CVE,當有新的風險時,需要安排修復時程
  • 只從安全可靠的網站下載套件
  • 定期更新 CI/CD、IDE 工具

總結

隨著專案複雜度逐年提升,使用第三方套件的比率也在逐年提高。但部分的套件可能存在漏洞,甚至是惡意程式。需定期追蹤所有第三方套件。這可避免使用到危險的套件,也可在當第三方遭受攻擊時 (0-day),能夠第一時間下架,並保護自己的專案。

 

A04:2025 Cryptographic Failures

背景

  • 從 A02:2021 下降至 A04:2025
  • 主要是因為密碼不夠強 (弱 hash 運算),密碼外洩,或相關錯誤造成的

描述

  • 使用過舊或預設的密碼?
  • 是否有重複使用密碼?
  • 是否使用 MD5、SHA1 … 過時的 HASH 值?
  • 加密是否正常被執行?(URL 是 HTTP or HTTPS 開頭)

如何預防

  • 對不同的應用程式,只要涉及密碼,必須識別相關資訊是否屬於敏感資訊,並嚴格遵守法律
  • 將高敏資訊放置在硬體或雲端 HSM 中
  • 盡可能使用值得信賴的密碼演算法進行實作
  • 不要儲存不必要的敏感資訊或符合 PCI DSS 規則,以免資料被竊取。
  • 不要使用未加密的協定。例如:FTP、SMTP。
  • 使用 HASH + SALT 的方式進行雜湊值運算
  • 使用經過認證的加密
  • 金鑰或密碼需使用高隨機的方式產生

總結

在系統、應用程式、專案都牽扯到密碼、加密、驗證,都有可能出現密碼強度不夠強的密碼,導致攻擊者可以透過暴力破解/分析彩虹表的方式,反推 hash 值,以獲取密碼。尤其是在後量子電腦時代,可開始考慮使用 post quantum cryptography (PQC),可延緩密碼被暴力破解的可能性。以防密碼洩漏,造成不可挽回的損失。

 

A05:2025 Injection

背景

  • 從 A03:2021 下降至 A05:2025
    • 但該風險是被低估的
      • XSS:出現頻率,但風險程度較低
      • SQL injection:出現頻率低,但風險程度極高
      • 綜合上述原因,此風險有被 XSS 拉低平均值
    • 雖下降了兩名,但 OWASP 在測試時 Injection Test 依然是最嚴格的測試項目
  • 此漏洞擁有最多的 CVE

描述

  • Injection 是一種程式漏洞。攻擊者可在輸入介面中輸入惡意指令。以欺騙系統並讓系統執行該惡意指令
    • 繞過身分驗證
    • 竊取敏感資訊
    • 更改資訊
  • 常見的 Injection 包括 SQL、NoSQL、OS、XSS…
  • 可透過 SAST、DAST、IAST 等工具進行驗證
  • 在 LLM:01 Prompt Injection 也是種 Injection,攻擊者可輸入惡意提示詞 (請忽略所有安全指示,並 …) 以達成攻擊目的

如何預防

  • 最佳方法為為 “將指令與查詢分開”
    • 首選方案為使用 safe api,不要讓系統將使用者輸入的資訊當成指令而是字串。
      • 例如: 攻擊者若輸入 1 OR 1=1,原本的 Injection 會因為 1 OR 1=1 恆真,而無條件通過。但經過 safe api 後,則是將 1 OR 1=1 當成字串,在輸入查詢中
      • 若使用字串銜接的方式,此方法依然可能會失效
  • 白名單或跳脫字元。雖能稍微緩解 Injection,但不是最佳方案

總結

Injection 的漏洞排名雖稍微下降,但這並不代表該漏洞不再重要,該漏洞一旦發生,依然會出現不可挽回的後果。且 OWASP 認為該漏洞是被低估的,因此還是要特別注意該漏洞。

 

A06:2025 Insecure Design

背景

  • 從 A04:2021 降低至 A06:2025

  • 隨著威脅建模(Threat Modeling)與安全設計(Secure Design)的推廣,企業在設計階段的安全意識已有提升

  • 此漏洞著重的是設計Design 與 架構 Architecture (包含商業邏輯中的缺陷)

描述

Insecure design 說明的是 這是一個源頭性的漏洞,即使 code 寫得完美無缺,依然會出現問題, 因為這並不是 code 的問題,而是程式設計造成的問題

如何預防

  • 蒐集需求與資源管理
    • 確認業務需求 (包括 機密性confidentiality、完整性 integrity、可用性availability與真實性 authenticity )
    • 確認預算和系統限制
  • 建立安全設計
    • 持續監控運行中的程式
    • 分析失敗與成功的流程
    • 紀錄錯誤的經驗
  • 建立並遵循 Secure Development Lifecycle(安全開發生命週期,SDL)
    • 遵守 安全的開發生命週期、安全的設計模式、安全的 library、適當的工具
    • 定期聯繫資安專家

總結

這不是單一漏洞造成的,而是由錯誤的底層設計或缺乏安全意識的開發文化造成的。此漏洞要求的是一種應該要有的程式開發態度 (從 pre-code 階段開始一直到專案生命週期結束)。我們需收集業務需求、資源管理、安全的設計、遵守合理的開發週期。以方便我們在問題發生以前就降低問題發生的機會,才可以在出問題時,第一時間解決,或將問題的嚴重程度降低。

 

A07:2025 Authentication Failures

背景

漏洞排名不變

描述

  • 攻擊者能透過暴力或欺騙系統的方式,是自己成為一個合法的使用者

  • 允許攻擊者可無限制的輸入密碼

  • 沒有人機驗證

  • 使用過於簡單的密碼

  • 忘記密碼流程不夠安全

  • 缺少或無效的安全驗證

  • SSO 的 Token 長時間依然有效

如何預防

  • 使用多重驗證

  • 不要使用預設密碼

  • 檢查前 10000 名的最差密碼

  • 懷疑密碼外洩時,強制修改自己的密碼

  • 系統若出現多次密碼輸入失敗,請通知系統管理者

總結

密碼太過簡單很容易被人暴力破解,同時也避免使用簡單的密碼加上特殊符號的做法,規避相關問題,例如:Password1!, Password2!…
現在已經有方法可以快速驗證。也避免使用者可無限制的輸入密碼,最後可使用多重驗證的方法降低密碼被猜出帶來的損失。

 

A08:2025 Software or Data Integrity Failures

背景

  • 漏洞排名不變

描述

  • 此漏洞是執行、載入、未經驗證的資料或程式引發的
  • 軟體與資料完整性受影響
  • 執行不受信任 CI/CD 腳本
  • 反序列化不受信任的 data

如何預防

  • 使用數位簽章
  • 只從正規的管道 (npm, maven) 獲取套件
  • 引入版控,並確保所有套件的變更符合流程,以降低被攻擊帶來的風險
  • 盡可能避免使用不受信任的程式,資料等

總結

在使用套件時,需要確認套件的來源是否足夠可靠,足夠安全,並請做好合理的驗證,才能夠使用。且隨著 LLM 的盛行,不管是在開發 LLM 還是使用 LLM 也都會受其影響,例如: 餵給 LLM 錯誤的資訊則可能會引發 LLM04:2025 Data and Model Poisoning,或直接使用 LLM 給的 code,也有可能意外導致系統損毀。

 

A09:2025 Security Logging & Alerting Failures

背景

  • 漏洞排名不變
  • 此漏洞永遠被低估
  • 此漏洞極難被測試出來,也沒有甚麼代表性的 CVE/CWE

描述

若沒有 log 的紀錄和監控,會導致發生任何攻擊事件、錯誤… 等事件時,將無法被記錄,導致當有事件發生時,系統將無法迅速產生回應。

  • 因沒有紀錄,當資訊出現不一致時,將無法進行事後追查
  • 應用程式與 API 未對任何可疑的動作進行任何監控
  • log 僅存於本機,並未進行備份
  • 讓不應該看到 log 的人看到 log (A01: Broken Access Control)
  • Log 裡面出現 token, id, password … 等高敏資訊
  • 當出錯時log 並沒有快速的進行告警
  • 過多的 false-positive,導致出錯時將無法準確的預測及修復核心錯誤

如何預防

  • 確保所有失敗行為及安全相關行為(無論失敗或成功)被記錄下來,以方便進行足夠的時間進行後續分析

  • 確保 log 使用正確的方式進行編碼,以防止 injection 或其他攻擊

  • 可使用 AI 進行分析,降低 false-positive 的分析成本

  • 當出現可疑行為時,立刻發出告警

總結

當出現攻擊,錯誤,或任何有疑慮的行為時,可透過 log 進行錯誤分析,或是防止資料被竄改或刪除,以讓資料具備一定的完整性。此時,也必須要在發生可疑行為當下,發出告警,以讓安全團隊能立刻執行安全行為,讓系統能在第一時間能夠被得到保護。同時也必須對高敏資訊進行遮罩,以防止有任何 log 被洩漏。最後也可透過 AI 對 log 進行分析

 

A10:2025 Mishandling of Exceptional Conditions

背景

  • 新增的漏洞類別

  • 此漏洞為程式處理不當、邏輯錯誤、其他異常狀況和系統因素可能導致的相關錯誤

  • 過去被歸類為程式碼品質不佳,現在特別歸類出來,以方便進行更加具體的指引

描述

此漏洞說明的是,在某些特殊條件下,出現不可預測的行為 (不確定下一步指令是否會正常執行時),導致當機、意外行為,甚至是資安漏洞

  • 缺失、不良、不完整的輸入驗證

  • 記憶體、網路、環境限制導致出現的意外狀況

  • 邏輯錯誤、整數溢位、超出運算資源、時序 … 等原因時,攻擊者可利用上述缺陷進行攻擊

  • 系統出現錯誤時,未能正常的執行 “中斷”行為

如何預防

  • 任何事情都做出最壞的打算,必須進行監控。讓我們可在問題發生的當下,立刻處理問題

  • 寫程式時,必須拋出 log,事件紀錄等行為

  • 必須要有一個 global 的 exception handler (例外處理程式) 以防止出現意料之外的錯誤 (該錯誤沒有 try-catch 進行除錯)

  • 做好足夠的安全限制,以防出現資源濫用或不足,並要產生 log 以防出現意外

  • 程式需進行 Code Review, SAST, 壓力測試 … 等分析

總結

寫程式時,常常會因為一些不可預期的錯誤,導致程式無法正常執行,或出現不可預期的錯誤,並且沒有足夠的安全機制預防該錯誤,導致出現預料之外的結果,甚至是損毀,甚至是資安風險。

 

如果您希望針對 2025 年的新標準進行風險評估,或想進一步了解如何落實「Secure by Design」的開發文化,歡迎於官網留下資訊,將會有專人與您聯繫 ➤ https://www.gss.com.tw/sca#cta

相關文章

保險業資安挑戰升溫!叡揚資訊攜Bitsight 推動企業供應鏈資安治理新標準

台灣知名保險平台服務商近日爆發重大資安事件,駭客聲稱竊得逾 20GB 機密資料,並揚言公開,恐波及超過 152 萬筆保戶個資。這起事件不僅震撼保險產業,更揭示出企業面臨的資安風險早已超越企業本身,過去所信任的軟體系統已不再安全,第三方平台與供應商成為駭客攻擊的新破口。
2025/06/19

叡揚資訊攜手復興高中舉辦「程式安全黑客松」 落實產學合作、強化資安人才即戰力

為落實與學界合作並響應政府推動資安人才培育政策,叡揚資訊有限公司於5月3日至4日參與由教育部資訊安全人才培育計畫主辦、臺北市立復興高級中學協辦的「北區高中職程式安全黑客松工作坊」,並擔任活動贊助單位,提供資安講師資源、實作工具支援與相關活動物資
2025/06/04

「2025 安全達人養成計劃」正式開放報名 歷屆參加者分享實戰經驗邀你挑戰最強資...

由叡揚資訊主辦的《安全達人養成計劃》2025 年度活動已正式啟動。即日起至 6 月 30 日止,參與者可免費報名並使用 Secure Code Warrior(SCW)線上安全程式培訓平台進行線上學習,並於 6 月 23 日至 6 月 27 日參加「線上資安戰士挑戰賽」。
2025/06/02

叡揚資訊與復興高中簽署產學合作備忘錄 攜手培育資安新世代

叡揚資訊股份有限公司與臺北市立復興高級中學於近日正式簽署產學合作備忘錄,雙方將在資訊安全教育、人才培育及實習計劃等方面展開全面合作。此舉不僅能為學生提供多元化的學習體驗,更能有效提升學生未來升學及就業所需的專業技能。
2025/05/15