課程簡介
A01:2025 – 存取控制損毀 (Broken Access Control)
存取控制旨在強制執行政策,確保用戶無法在其預定許可範圍外進行操作。此類故障通常會導致未經授權的信息洩露、數據的修改或破壞,或執行超出用戶限制範圍的業務功能。
實務要點
-
存取控制損毀的實際範例
-
安全的存取控制及最佳實踐
A02:2025 – 安全設定錯誤 (Security Misconfiguration)
安全設定錯誤是指系統、應用程式或雲端服務在安全層面上配置不當,從而產生漏洞的情況。
實務要點
-
設定錯誤的真實世界範例
-
防止設定錯誤的步驟,包括配置管理及自動化工具的使用
A03:2025 – 軟體供應鏈故障 (Software Supply Chain Failures)
軟體供應鏈故障是指在構建、分發或更新軟體過程中發生的中斷或其他妥協情況。這通常是由於系統依賴的第三方代碼、工具或其他相依項中存在漏洞或惡意變更所致。
A04:2025 – 加密失敗 (Cryptographic Failures)
一般而言,所有傳輸中的數據都應在傳輸層(OSI 第 4 層)進行加密。過去如 CPU 效能及私鑰/證書管理等障礙,現在已透過擁有加密加速指令(例如 AES 支持)的 CPU 來處理,且由 LetsEncrypt.org 等服務簡化了私鑰和證書管理,主要雲供應商也為其特定平台提供了整合度更高的證書管理服務。
除了保護傳輸層之外,確定哪些數據需要在靜態時加密(at rest),以及哪些數據需要在傳輸中進行額外加密(應用程式層,OSI 第 7 層),也至關重要。
例如,密碼、信用卡號、健康記錄、個人資訊及商業機密需要額外保護,特別是當這些數據受隱私法律(如歐盟《通用數據保護條例》(GDPR))或法規(如 PCI 數據安全標準 (PCI DSS))管轄時。
實務要點
-
詳細分析加密失敗情況,如弱加密演算法或不當的鑰匙管理
-
強大加密機制、安全協議 (SSL/TLS) 的重要性,以及 Web 安全中現代加密的範例
A05:2025 – 注入攻擊 (Injection)
注入漏洞是一種系統缺陷,允許攻擊者將惡意代碼或指令(如 SQL 或 Shell 代碼)插入程序的輸入字段中,欺騙系統執行該代碼或指令,彷彿它們是系統的一部分。這可能導致極其嚴重的後果。
實務要點
-
SQL、NoSQL、OS 及 LDAP 注入的詳細解析
-
使用預製語句、參數化查詢及輸入轉義的緩解技術
A06:2025 – 不安全設計 (Insecure Design)
不安全設計是一個廣泛的類別,代表各種弱點,表現為「缺少或無效的控制設計」。
不安全設計並非十大風險類別中所有其他類型的根源。請注意不安全設計與不安全實現之間的差異。我們區分設計缺陷和實現缺陷是有原因的,因為它們有不同的根本原因,發生在開發過程的不同階段,且修復方式也不同。
即使設計安全,實現缺陷仍可能導致可被利用的漏洞。反之,不安全設計無法透過完美實現來修復,因為從未創建必要的安全控制來防禦特定攻擊。
導致不安全設計的因素之一是,開發的軟體或系統缺乏固有的業務風險概況,因此無法確定所需的安全設計級別。
實務要點
-
探討可能導致漏洞的設計缺陷,如不當的輸入驗證
-
學習安全架構策略及安全設計原則
A07:2025 – 驗證失敗 (Authentication Failures)
當攻擊者能夠欺騙系統將無效或錯誤的用戶識別為合法用戶時,即存在此漏洞。
實務要點
-
常見的驗證問題
-
安全的驗證策略,如多因素驗證及適當的會話處理
A08:2025 – 軟體或數據完整性失敗 (Software or Data Integrity Failures)
軟體和數據完整性失敗涉及那些未保護免受無效或不可信代碼或數據被當作可信和有效代碼處理的代碼和基礎設施。
一個例子是應用程式依賴於來自不可信來源、存儲庫或內容分發網絡 (CDN) 的插件、庫或模組。
不安全的 CI/CD 管道若未消費和提供軟體完整性檢查,可能引入未經授權的訪問、不安全或惡意代碼或系統妥協的風險。
另一個例子是 CI/CD 從不可信的位置拉取代碼或工件,和/或在使用前未對其進行驗證(例如檢查簽名或類似機制)。
實務要點
-
關注不可信軟體更新及數據篡改等問題
-
安全的更新機制及數據完整性檢查
A09:2025 – 安全記錄與警報失敗 (Security Logging and Alerting Failures)
沒有記錄和監控,攻擊和洩露便無法被檢測到;沒有警報,在安全事件中迅速有效地做出響應則非常困難。
記錄不足、持續監控、檢測以及啟動主動響應的警報缺失隨時都可能發生。
實務要點
-
記錄與安全相關的信息並監控可疑活動的重要性
-
用於適當記錄和實時監控以早期檢測洩露的工具和實踐
A10:2025 – 異常狀況處理不當 (Mishandling of Exceptional Conditions)
軟體中異常狀況處理不當發生在程序未能防止、檢測和回應異常且不可預測的情況時,這會導致崩潰、意外行為,有時還會導致漏洞。
這可能涉及以下三類失敗之一或多類:
-
應用程式未能阻止異常情況的發生
-
它在情況發生時未能識別該情況
-
事後對該情況回應不佳或完全沒有回應
SAST – 靜態應用程式安全測試
-
什麼是靜態分析,以及在 SDLC 中何時運行它(左移策略)
-
SAST 可檢測的漏洞類型,脆弱代碼與安全代碼的對比
-
SAST 工具概覽(例如 Semgrep、SonarQube、Checkmarx,具體取決於客戶技術棧)
-
實戰練習:在故意引入漏洞的存儲庫上運行 SAST 掃描,解讀結果,並對誤報與真實漏洞進行分級處理
DAST – 動態應用程式安全測試
-
SAST 與 DAST 的區別,對運行中的應用程式進行黑盒測試
-
DAST 掃描流程:爬蟲、模糊測試、響應分析
-
DAST 工具概覽(例如 OWASP ZAP、Burp Suite)
-
實戰練習:在脆弱的測試應用程式(例如 OWASP Juice Shop)上運行 DAST 掃描,識別並驗證發現結果
SCA – 軟體成分分析
-
第三方相依項和庫的風險,繼承的漏洞
-
SBOM(軟體物料清單):什麼是 SBOM 以及它為何重要
-
SCA 工具概覽(例如 Dependency Check、Snyk、GitHub Dependabot)
-
實戰練習:在真實項目上運行 SCA 掃描,識別存在漏洞的相依項並制定修復計劃(更新、修補、緩解)
最低要求
學員應具備:
- 基本的軟體開發概念知識
- 對 Web 應用程式及常見 Web 技術的基本理解
- 熟悉軟體開發生命週期 (SDLC)
- 對原始碼及軟體相依項的基本理解
- 具備基本的安全概念知識為佳,但並非強制要求
目標受眾
- 軟體開發人員
- 軟體工程師
- QA 及軟體測試工程師
- DevOps 及 DevSecOps 工程師
- 應用程式安全專業人員
- 安全工程師
- 軟體架構師
- 技術領導者
- 參與安全軟體開發及應用程式安全測試的專業人員
客戶評論 (3)
經驗分享,這是教師的訣竅和寶貴之處。
Carey Fan - Logitech
課程 - C/C++ Secure Coding
機器翻譯
深入瞭解產品以及RHDS與開源OpenLDAP之間的一些關鍵區別。
Jackie Xie - Westpac Banking Corporation
課程 - 389 Directory Server for Administrators
機器翻譯
培訓師的知識非常豐富,他清楚地知道自己在說什麼,並且能夠回答我們的問題
Adam - Fireup.PRO
課程 - Advanced Java Security
機器翻譯