課程簡介
A01:2025 – 存取控制失效(Broken Access Control)
存取控制旨在強制執行策略,確保用戶無法在授權範圍外進行操作。若此機制失效,通常會導致未經授權的資訊洩漏、所有資料的修改或破壞,或在用戶權限之外執行商業功能。
實務面向
-
存取控制失效的實務範例
-
安全的存取控制機制與最佳實務
A02:2025 – 安全設定錯誤(Security Misconfiguration)
安全設定錯誤是指系統、應用程式或雲端服務在安全性層面上配置不當,進而產生弱點。
實務面向
-
現實世界中設定錯誤的案例
-
預防設定錯誤的步驟,包括設定管理與自動化工具的使用
A03:2025 – 軟體供應鏈故障(Software Supply Chain Failures)
軟體供應鏈故障是指在構建、分發或更新軟體過程中發生的中斷或其他安全妥協。這通常是由系統所依賴的第三方程式碼、工具或其他相依項中的弱點或惡意變更所引起。
A04:2025 – 加密機制失效(Cryptographic Failures)
一般而言,所有傳輸中的數據都應在傳輸層(OSI 第 4 層)進行加密。過去由 CPU 效能以及金鑰/憑證管理帶來的挑戰,如今已透過具備加密加速指令的 CPU(例如 AES 支援)得到緩解,同時憑證管理也因 Let's Encrypt.org 等服務以及主要雲端供應商提供的高度整合式憑證管理服務而變得更加簡化。
除了保護傳輸層外,確定哪些數據需要靜態加密(at rest),以及哪些數據需要在傳輸過程中進行額外加密(應用程式層,OSI 第 7 層)也至關重要。
例如,密碼、信用卡號、健康記錄、個人資訊及商業機密需要額外保護,特別是當這些數據受隱私法律(如歐盟的《通用數據保護條例》(GDPR))或法規(如 PCI 數據安全標準(PCI DSS))約束時。
實務面向
-
詳細分析加密機制失效,例如弱加密演算法或金鑰管理不當
-
強效加密機制、安全協議(SSL/TLS)的重要性,以及 Web 安全性中現代加密技術的範例
A05:2025 – 注入攻擊(Injection)
注入弱點是系統設計上的缺陷,允許攻擊者將惡意程式碼或命令(如 SQL 或 Shell 程式碼)插入到程序的輸入欄位中,誘騙系統執行這些程式碼或命令,彷彿它們是系統的一部分。這可能導致災難性的後果。
實務面向
-
SQL、NoSQL、OS 及 LDAP 注入的詳細解析
-
使用預備陳述式(prepared statements)、參數化查詢及輸入轉義(escaping inputs)的緩解技術
A06:2025 – 不安全設計(Insecure Design)
不安全設計是一個廣泛的類別,代表不同的弱點,表現為「缺失或無效的控制設計」。
不安全設計並非其他十大風險類別的根源。請注意不安全設計與不安全實作(insecure implementation)之間的差異。我們區分設計缺陷與實作瑕疵是有原因的,因為它們的根本原因不同、在開發過程中發生的階段不同,且修復方式也不同。
即使設計安全,仍可能因實作瑕疵而導致可被利用的弱點。反之,不安全設計無法透過完美的實作來修復,因為防禦特定攻擊所需的安全控制措施從未被創建。
導致不安全設計的因素之一是缺乏對正在開發的軟體或系統固有的商業風險評估,從而無法確定所需的安全設計層級。
實務面向
-
探索可能導致弱點的設計缺陷,例如輸入驗證不當
-
學習安全架構策略及安全設計原則
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 – 靜態應用程式安全性測試(Static Application Security Testing)
-
什麼是靜態分析,以及在 SDLC 中何時執行它(左移策略,Shift Left)
-
SAST 可偵測的弱點類型,以及易受攻擊的程式碼與安全程式碼的對比
-
SAST 工具概覽(例如 Semgrep、SonarQube、Checkmarx,視客戶技術棧而定)
-
實作演練:在刻意引入弱點的儲存庫上執行 SAST 掃描,解讀結果,並區分假陽性與真實弱點
DAST – 動態應用程式安全性測試(Dynamic Application Security Testing)
-
SAST 與 DAST 的差異,以及在運行中的應用程式上進行黑箱測試
-
DAST 掃描流程,包括爬蟲(crawling)、模糊測試(fuzzing)及回應分析
-
DAST 工具概覽(例如 OWASP ZAP、Burp Suite)
-
實作演練:在易受攻擊的測試應用程式(例如 OWASP Juice Shop)上執行 DAST 掃描,識別並驗證發現結果
SCA – 軟體組件分析(Software Composition Analysis)
-
第三方相依項及函式庫的風險,以及繼承弱點(inherited vulnerabilities)
-
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
機器翻譯