# OWASP Top 10: 2025 (Web Applications) iPAS 考前重點精華版 > **資料來源**:OWASP Top 10:2025 (2025/12/31公布) > **適用對象**:iPAS 資安工程師考前複習 > **整理者**:林志祥 > **修改時間**:2025/12/31 --- ## 🔥 考前超熱門:2021 vs 2025 排名變動全解析 **2021 到 2025 的排名升降是 iPAS 選擇題的熱門考點,請務必記住以下關鍵變動(如 SSRF 的去向或 A03和A10的新增):** ![2025年OWASP Top10從2021年到2025年的變化](https://hackmd.io/_uploads/rygBhJREQ-x.png) <center>圖1:2025年OWASP Top10從2021年到2025年的變化。資料來源:<a href="https://owasp.org/Top10/2025/">OWASP Top10</a></center> ### 📝 變動重點筆記 1. **A10 SSRF (伺服器端請求偽造) 去哪了?** * **考試必考**:SSRF 在 2025 版已被移除獨立排名,主要被 **併入 A01 (存取控制失效)**。因為 SSRF 本質上就是利用 Server 的權限去存取不該存取的內部資源(越權)。 2. **誰是新面孔 / 改頭換面?** * **A03 軟體供應鏈失效 (前身 A06)**: * **變動**:從單純檢查「元件過期 (Vulnerable Components)」擴大為「供應鏈安全」。 * **重點**:不再只看 CVE,更看重 **CI/CD 流程安全**、**惡意程式植入** 與 **SBOM** 管理。 * **A10 異常狀態處理不當 (全新類別)**: * **變動**:這是一個**全新的分類標題**,填補了舊版 A10 (SSRF) 移走後的空缺。 * **重點**:聚焦在程式出錯時的行為,如 **Fail Open (失效開放)** 安全機制崩潰,或 **Stack Trace 洩漏** 敏感資訊。 3. **誰升官了? (威脅變大)** * **A02 安全配置錯誤** (原 A05):因為雲端 (Cloud) 與微服務架構太複雜,人為設定錯誤的風險大幅提升。 4. **誰降級了? (但還是很重要)** * **A05 注入攻擊** (原 A03):受惠於現代框架 (ORM) 預設防護,發生率下降,但破壞力依然很高。 --- ## 📊 考前必背 1:Top 10 是怎麼產生的?(8+2 原則) OWASP Top 10 結合了「數據」與「經驗」: 1. **數據驅動 (Data Driven) ⮕ 8 項**: 依照資安廠商提供的漏洞「發生率」選出。代表 **「現在最常發生的問題」**。 2. **社群調查 (Community Survey) ⮕ 2 項**: 由資安專家投票選出 **「工具掃不到」** 或 **「未來潛在高風險」** 的項目。 * **在本清單中是哪兩項?** (考試口訣:**3 跟 9 是選出來的**) 1. **A03 軟體供應鏈失效 (第 3 名)**:上游廠商被駭或開源風險,很難單靠掃描器量化,專家認為是未來最大威脅。 2. **A09 安全日誌與告警失效 (第 9 名)**:日誌紀錄是否足夠、告警是否有效,極度依賴人工判斷,工具難以檢測。 ## 🧪 考前必背 2:標準與成熟度模型 (Top 10 vs ASVS vs SAMM) :::danger **🚫 觀念導正:Top 10 不是驗收標準!** **OWASP Top 10 是「十大死因(意識文件)」,不是「健康檢查表」。** 若合約寫「本系統符合 OWASP Top 10」,代表只檢查了這 10 項,其他 100 項漏洞都沒測,系統依然不安全。 ::: ### 📝 考試必考:OWASP 三大支柱比較 這三個常常混在一起考,請務必分清楚用途: | 專案名稱 | 全名 (中文) | 用途與定位 | 譬喻 | | :--- | :--- | :--- | :--- | | **Top 10** | Top 10 Risks | **【意識 Awareness】**<br>列出最嚴重的 10 個風險,提醒大眾注意。 | **「十大死因」**<br>(知道要注意心臟病和癌症) | | **ASVS** | Application Security Verification Standard<br>(應用程式安全驗證標準) | **【檢測標準 Standard】**<br>用來驗收 **「產品」**。滲透測試或驗收時的 Checklist。 | **「健康檢查表」**<br>(檢查血壓、血糖是否達標) | | **SAMM** | Software Assurance Maturity Model<br>(軟體保證成熟度模型) | **【流程成熟度 Maturity】**<br>用來評估 **「公司/團隊」** 的開發制度是否健全。 | **「醫院評鑑」**<br>(這家醫院的SOP好不好?) | ### 🛠️ 1. 如果要驗收產品 ⮕ 用 ASVS 依據系統重要性,選擇驗證等級: * **Level 1 (Basic)**:基本掃描 (自動化工具可達),適用於低風險系統。 * **Level 2 (Standard)**:**業界標準**。包含大多數的控制項,適用於處理個資的系統 (B2B/B2C)。 * **Level 3 (Advanced)**:高強度驗證。適用於國防、金融、醫療等高敏感系統。 ### 📈 2. 如果要改善開發流程 ⮕ 用 SAMM 評估企業在軟體開發生命週期 (SDLC) 中的成熟度,分為五大構面: 1. **治理 (Governance)**:有沒有制定策略與指標? 2. **設計 (Design)**:有沒有做威脅建模? 3. **實作 (Implementation)**:有沒有安全編碼規範? 4. **驗證 (Verification)**:有沒有做 Code Review 和測試? 5. **維運 (Operations)**:有沒有漏洞管理與事件應變? --- ## A01 存取控制失效(Broken Access Control) :::info **💡 定義** 系統未能正確實施權限管制,導致使用者可以執行超出其權限的操作。 **2025 重點變動**:**SSRF (伺服器端請求偽造)** 在本版不再獨立排名,其核心概念「伺服器被濫用權限去存取內部資源」常被視為廣義的存取控制問題。 ::: ### 🚨 常見失效型態 (必考概念) 1. **垂直越權 (Vertical Escalation)**: * **概念**:地位低 ⮕ 地位高。 * **情境**:一般會員 (User) 成功存取或操作管理員 (Admin) 的後台功能。 2. **水平越權 (Horizontal Escalation / IDOR)**: * **概念**:此人 ⮕ 他人 (同級別)。 * **情境**:會員 A 修改網址參數 (`id=100` 改 `id=101`),偷看會員 B 的訂單資料。 3. **情境/流程越權 (Context-Dependent Escalation)**: * **概念**:**時間點**或**狀態**錯誤。 * **情境**:離職員工帳號忘記刪除或使用者跳過「付款頁面」直接存取「下載頁面」;或是在訂單「已出貨」狀態下,仍能呼叫 API 修改收件地址。這是屬於**業務邏輯 (Business Logic)** 的漏洞。 4. **路徑遍歷 (Path Traversal)**: * **情境**:利用 `../` 跳脫網頁目錄,存取系統敏感檔案 (如 `/etc/passwd`)。 ### 🚨 實戰案例 **麥當勞徵才機器人 IDOR** 研究人員發現只要修改網址 URL 參數 (如 `applicant_id`),後端未檢查該 ID 是否屬於當前登入者,導致可越權存取其他應徵者的個資。 > [新聞來源:iThome](https://www.ithome.com.tw/news/170050) ### 🛡️ 核心防禦:伺服器端驗證 + 間接參考 1. **伺服器端驗證 (Server-Side Check)**: * 絕對**不可信任前端** (隱藏按鈕不代表安全)。 * 每次 API 呼叫都需在後端檢查 `if (current_user == resource_owner)`。 2. **使用間接參考 (Indirect Reference)**: * **防禦 IDOR 的神技**。不要在 URL 使用連續的資料庫 ID。 * ❌ **危險**:`mysite.com/data?id=1001` (易被猜測/遍歷) * ✅ **安全**:`mysite.com/data?id=xc9-1a2` (使用隨機雜湊 Map 對應) 3. **狀態檢查 (Stateful Validation)**: * 針對情境越權,後端必須檢查當前狀態。例如:`if (order.status != 'SHIPPED')` 才能修改地址。 :::warning **📝 iPAS 考試重點:關鍵字抓題** 1. **IDOR (物件參考不安全)**:題目出現 **「修改 URL 參數 (ID)」**、**「遍歷流水號」**。 2. **Path Traversal (路徑遍歷)**:題目出現 **`../../`**、**`..\`**、**`%2e%2e%2f`** 或 **存取系統檔**。 3. **情境越權 (Business Logic Bypass)**:題目描述 **「跳過步驟」**、**「未付款先取貨」**。 ::: --- ## A02 安全配置錯誤(Security Misconfiguration) :::info **💡 定義** 安全控制機制存在,但未被正確啟用或設定。這通常發生在應用程式堆疊的任何層級(雲端、網路、資料庫、框架)。 **2025 趨勢**:排名由 A05 飆升至 **A02**,主因是雲端環境(AWS/Azure)複雜度導致人為設定失誤(如 S3 Bucket 外洩)激增。 ::: ### 🚨 常見四大失效型態 1. **預設值未改 (Default Accounts)**: * 使用原廠預設帳密 (admin/admin) 或範例程式碼。 2. **雲端儲存權限大開 (Cloud Misconfig)**: * S3 Bucket 或 Azure Blob 設定為 `Public Read`,導致機敏資料裸奔。 3. **錯誤訊息洩漏 (Information Leakage)**: * 未關閉 **Debug Mode**,導致錯誤發生時顯示 Stack Trace(程式路徑、資料庫語法)。 4. **XXE (XML 外部實體攻擊)**: * XML 解析器配置錯誤,允許載入外部實體,導致駭客可讀取 `/etc/passwd`。**(註:XXE 在 Top 10 中主要歸類於此)** ### 🚨 實戰案例 1. **Capital One 資料外洩案 (雲端配置)**: * 因 AWS WAF (防火牆) 配置錯誤,權限過大,讓駭客得以利用 SSRF 手法存取後端 S3 資料庫。 > [新聞來源:iThome](https://www.ithome.com.tw/news/139316) 2. **iRent 資料庫外洩 (未設密碼)**: * 資料庫主機直接暴露在公網,且完全未設定密碼保護,任何知道 IP 的人都能連線。 > [新聞來源:iThome](https://www.ithome.com.tw/news/155392) ### 🛡️ 核心防禦:安全硬化 (Hardening) 1. **移除預設值**: * 上線前務必更改預設帳密,移除範例應用程式 (Sample App)。 * 關閉不必要的通訊埠 (Ports) 與服務。 2. **自動化配置審查**: * 使用工具 (如 AWS Config, ScoutSuite) 定期掃描雲端環境是否符合安全基線(Security Baseline)。 3. **統一錯誤處理**: * 設定統一的錯誤頁面 (如 404/500 自訂頁面),禁止顯示除錯資訊。 4. **安全標頭 (Security Headers)**: * 設定 `HSTS` (強制 HTTPS)、`X-Frame-Options` (防 Clickjacking)、`CSP` (防 XSS)。 :::warning **📝 iPAS 考試重點:關鍵字抓題** 1. **看到「預設」就選它**:題目出現 **「預設帳密」**、**「預設安裝」**。 2. **看到「洩漏環境資訊」就選它**:題目描述 **「Banner Grabbing」** (看到 Server 版本號)、**「Directory Listing」** (看到檔案目錄)。 3. **看到 XXE**:若題目問 XXE 屬於哪一類,選 A02 (配置錯誤) 或 A05 (注入),但在新版邏輯偏向配置錯誤 (解析器設定問題)。 4. **關鍵字:安全硬化(Hardening)、安全基線(Security Baseline)**:這是解決配置錯誤的標準術語。 ::: --- ## A03 軟體供應鏈失效(Software Supply Chain Failures) :::info **💡 定義** 應用程式依賴的第三方元件(Libraries, Frameworks)、上游供應商或 CI/CD 建置與交付流程缺乏安全管控,導致引入了已知漏洞或惡意後門。 **前身**:A06 Vulnerable and Outdated Components (範圍擴大)。 ::: ### 🚨 供應鏈攻擊的三種層次 1. **使用到已知漏洞元件 (Old but Gold)**: * 使用了過期且含有 CVE 的 jQuery、Struts2 或 Log4j 版本。 2. **惡意程式碼植入 (Malicious Injection)**: * 駭客入侵開源專案維護者帳號,或在 NPM/PyPI 上傳相似名稱的惡意套件 (**Typosquatting**,如 `requesrs` 混淆 `requests`)。 3. **建置流程汙染 (Pipeline Compromise)**: * 駭客入侵 CI/CD 伺服器 (如 Jenkins, TeamCity),在軟體打包過程中偷偷塞入後門 (如 SolarWinds 案)。 ### 🚨 實戰案例 1. **Log4Shell (Log4j) 事件**: * **關鍵字**:**Java 日誌元件**、**零時差漏洞**、**影響範圍極廣**。 * **教訓**:企業根本不知道自己哪裡用了 Log4j,突顯了 SBOM 的重要性。 > [新聞來源:iThome](https://www.ithome.com.tw/news/162130) 2. **SolarWinds 供應鏈攻擊**: * **關鍵字**:**官方更新檔被植入後門**、**Orion Platform**。 * **教訓**:駭客攻擊上游軟體商,即便是「合法的數位簽章更新」也可能帶毒。 > [新聞來源:iThome](https://www.ithome.com.tw/news/149530) 3. **XZ Utils 後門 (2024)**: * **關鍵字**:**社會工程**、**Linux 壓縮工具**、**惡意維護者**。 * **教訓**:開源專案的「人」也是供應鏈脆弱的一環。 > [新聞來源:iThome](https://www.ithome.com.tw/article/141943) 4. **Cache Panda 金融供應鏈攻擊**: 駭客利用軟體供應商的維運 VPN 通道作為跳板,滲透進台灣金融機構內網。 > [新聞來源:iThome](https://www.ithome.com.tw/news/149530) ### 🛡️ 核心防禦:SBOM + SCA 1. **建立 SBOM (軟體物料清單)**: * 使用標準格式 (如 **CycloneDX** 或 **SPDX**) 記錄所有引用的元件清單。 2. **導入 SCA (軟體成分分析) 工具**: * 在 CI/CD 流程中自動掃描 SBOM,比對 CVE 資料庫,發現風險立即阻擋 Build。 3. **私有儲存庫 (Private Repository)**: * 在企業內部建立 Nexus/Artifactory,快取外部套件並進行掃描,避免開發者直接從公網下載惡意套件。 4. **簽署與驗證 (Signing & Verification)**: * 導入如 Sigstore/Cosign 等工具,對容器映像檔 (Docker Image) 和程式碼進行數位簽章與驗證。 :::warning **📝 iPAS 考試重點:工具與關鍵字** 1. **必考題:SCA vs SAST** * 問「檢查**自行開發**的原始碼」 ⮕ 選 **SAST**。 * 問「檢查**第三方套件/引用函式庫**」 ⮕ 選 **SCA**。 2. **必考題:SBOM** * 題目問「如何快速盤點受漏洞影響的資產?」或「主要防禦供應鏈攻擊的文件?」 ⮕ 選 **SBOM**。 3. **名詞解釋**: * **Typosquatting** (誤植網域/套件名攻擊):故意取很像的名字 (如 `Gooogle.com` 或 `npm install reqest`) 騙你下載。 ::: --- ## A04 加密機制失效(Cryptographic Failures) :::info **💡 定義** 未能正確保護敏感資料(如密碼、個資、信用卡號)。包含使用過時的加密演算法、預設密碼金鑰、或未強制使用加密傳輸(HTTPS)。 ::: ### 🚨 常見失效型態 1. **使用過時/脆弱演算法**: * 使用 **MD5** 或 **SHA-1** 儲存密碼 (容易被碰撞或彩虹表破解)。 * 使用 **DES** 或 **RC4** 進行加密。 * 使用 **ECB 模式** (Electronic Codebook) 進行加密 (因相同的明文會產生相同的密文,無法隱藏資料樣式)。 2. **明文傳輸**: * 網站使用 **HTTP、FTP、Telnet** 等未加密協定傳輸敏感資料,或是考需要使用 **HTTPS、SFTP、SSH** 。 3. **金鑰管理不當**: * 將加密金鑰 (Cryptographic Keys) **寫死 (Hardcoded)** 在程式碼中並上傳到 GitHub。 4. **密碼學隨機性不足**: * 使用 `Math.random()` 等偽隨機函數產生金鑰,導致可被預測。應使用加密安全的隨機產生器 (CSPRNG)。 5. **憑證驗證失敗**: * 未驗證伺服器憑證的有效性,或忽略憑證錯誤(接受自簽憑證)。 ### 🚨 實戰案例 1. **Adobe 密碼外洩案 (加密模式錯誤)**: * Adobe 曾使用 **3DES + ECB 模式** 加密用戶密碼。因 ECB 模式特性,導致駭客發現大量用戶使用相同的密碼 (產生相同的密文),輕鬆破解數百萬帳戶。 > [新聞來源:資安人](https://www.informationsecurity.com.tw/article/article_detail.aspx?aid=7699) 2. **網站未強制 HTTPS**: * 使用者在咖啡廳使用公共 Wi-Fi 登入 HTTP 網站,Cookie 與帳密遭駭客透過中間人攻擊 (MITM) 竊聽。 > [新聞來源:iThome](https://www.ithome.com.tw/news/137532) 3. **饗賓餐飲個資外洩**: * 會員密碼僅使用 **MD5** 弱雜湊演算法儲存,導致資料外洩後極易被暴力破解還原。 > [新聞來源:iThome](https://www.ithome.com.tw/news/137532) ### 🛡️ 核心防禦:強加密 + 妥善金鑰管理 1. **資料傳輸 (Data in Transit)**: * 強制全站使用 **TLS 1.2 或 1.3** (HTTPS)。 * 啟用 **HSTS (HTTP Strict Transport Security)** 強制瀏覽器只用 HTTPS 連線。 2. **密碼儲存 (Password Storage)**: * **絕對禁止**:明文、Base64、MD5、SHA-1。 * **推薦作法**:使用專用演算法 **Argon2id**、**bcrypt** 或 **PBKDF2**,並針對每個用戶加入隨機 **Salt (鹽值)** 以防禦彩虹表 (Rainbow Table)。 3. **資料儲存 (Data at Rest)**: * 使用 **AES-256 (GCM 模式)** 或 **ChaCha20**。 4. **金鑰管理**: * 使用專用的金鑰管理系統 (KMS) 或硬體安全模組 (HSM),嚴禁將金鑰存放在程式碼或設定檔中。 :::warning **📝 iPAS 考試重點:陷阱題大集合** 1. **Base64 不是加密!** * 題目若說「將資料轉為 Base64 以保護機密性」,這是**錯**的。Base64 只是編碼,屬於 A04 的失敗案例。 2. **演算法連連看 (看到左邊就選右邊)**: * 儲存密碼 ⮕ **Argon2, bcrypt** (+Salt)。 * 對稱式加密 (快、大量資料) ⮕ **AES**。 * 非對稱式加密 (金鑰交換、數位簽章) ⮕ **RSA, ECC**。 3. **隨機數陷阱**: * 程式碼題若出現 `Random()` 或 `Math.random()` 產生 Token,這是弱點!必須改用 **SecureRandom** (Java) 或 **secrets** (Python)。 ::: --- ## A05 注入攻擊(Injection) :::info **💡 定義** 未驗證的輸入資料被解釋器視為指令執行。 **包含三大類**: 1. **資料庫注入**:**SQL Injection**。 2. **作業系統注入**:**OS Command Injection**。 3. **客戶端注入**:即 **XSS (跨站腳本攻擊)**,現已併入此類別。 ::: ### 🚨 實戰案例 1. **MOVEit Transfer SQL Injection (資料庫)**: 駭客利用 SQL 注入漏洞竊取資料庫內的敏感檔案。 > [新聞來源:iThome](https://www.ithome.com.tw/news/162067) 2. **路由器/Web管理介面 RCE (作業系統)**: 許多網通設備的 Web 介面提供 `Ping` 或 `Traceroute` 功能,若未過濾輸入,駭客輸入 `127.0.0.1; rm -rf /` 即可執行系統指令並接管主機。 > **情境**:常見於 IoT 設備或老舊的 Web 管理工具。 3. **eBay XSS 漏洞 (客戶端)**: 駭客在商品頁面注入惡意 JavaScript,使用者瀏覽時自動被導向釣魚網站竊取帳號。 > [新聞來源:iThome](https://www.ithome.com.tw/news/91054) ### 🛡️ 核心防禦:對症下藥 * **針對 SQL Injection (資料庫)**: * **首選**:**參數化查詢 (Prepared Statements)**。 * *注意*:HTML 編碼對此無效。 * **針對 OS Command Injection (作業系統)**: * **首選**:**避免直接呼叫 OS 指令** (改用語言內建 API,如 Java `File` class 代替 `rm`)。 * **輔助**:若必須呼叫,嚴格實施 **Input Validation (白名單)**,只允許數字或特定格式。 * **針對 XSS (瀏覽器/腳本)**: * **首選**:**輸出編碼 (Output/HTML Encoding)**。將 `<script>` 轉碼為 `&lt;script&gt;`。 * **輔助**:設定 **CSP (內容安全策略)**。 :::warning **📝 iPAS 考試重點:解法連連看** 考試最愛考「對應解法」,請務必分清楚: * 題目問 **SQL Injection** ⮕ 找 **Prepared Statements** (參數化)。 * 題目問 **OS Command Injection** ⮕ 找 **Input Validation (白名單)**,題目常愛寫成黑名單 或 **避免 System Call**。 * 題目問 **XSS** ⮕ 找 **Output Encoding** (輸出編碼) 或 **CSP**。 **⚠️ 陷阱**:題目問 SQL 防禦,選項出現「HTML 編碼」➡ **千萬別選!** 那是治 XSS 的藥。 ::: --- ## A06 不安全設計(Insecure Design) :::info **💡 定義** 這不是程式碼實作錯誤 (Implementation Bug),而是 **「設計階段」** 就存在的缺陷。程式碼運作完全符合設計,但設計本身缺乏安全控制(如:抗自動化不足、業務邏輯漏洞)。 **關鍵字**:資安左移 (Shift Left)、威脅建模。 ::: ### 🚨 實戰案例 1. **Max 搶票機器人 (台灣 - 抗自動化不足)**: 售票系統缺乏有效的抗自動化設計(驗證碼太弱、未限制高頻請求),導致黃牛利用程式快速掃票,正常使用者無法購買。 > [新聞來源:iThome](https://www.ithome.com.tw/news/162546) 2. **無限領取優惠券 (業務邏輯漏洞)**: 電商平台設計優惠券領取流程時,未檢查「單一帳號是否已領取」,導致使用者可以重複點擊 API 無限領取折扣碼。這不是 SQL Injection,而是邏輯沒想清楚。 ### 🛡️ 核心防禦:資安左移 + 威脅建模 1. **威脅建模 (Threat Modeling)**: * **實作重點**:在寫 Code 之前的設計階段,模擬攻擊者視角(Abuse Cases)。 * **常用方法**:**STRIDE** 模型 (微軟提出),分析欺騙 (Spoofing)、竄改 (Tampering) 等六大威脅。 2. **落實資安左移 (Shift Left)**: * 將資安檢測從「測試階段」提前到「需求與設計階段」。 3. **限制速率 (Rate Limiting)**: * 針對搶票、登入等高敏感功能,設計速率限制,防止自動化腳本濫用。 :::warning **📝 iPAS 考試重點** 1. **觀念題**:如果題目描述 **「程式沒寫錯,但邏輯被玩壞」** (如:沒有檢查庫存就讓人下單、沒有限制重試次數),這就是 **A06**。 2. **方法論**:看到 **「在開發早期發現漏洞」** 或 **「STRIDE」**,請選 **威脅建模 (Threat Modeling)**。 ::: --- ## A07 身分驗證失效(Authentication Failures) :::info **💡 定義** 確認「你是誰」的機制失效。包含允許弱密碼、未導入多因子驗證 (MFA)、Session 管理不當(如 Session ID 暴露),導致駭客能偽裝成合法使用者。 **關鍵標準**:現代身分驗證應參考 **NIST 800-63b** 指南。 ::: ### 🚨 常見失效型態 (必考名詞) 1. **撞庫攻擊 (Credential Stuffing)**: * 駭客拿 A 網站洩漏的帳密,去嘗試登入 B 網站(因為使用者習慣共用密碼)。 2. **暴力破解 (Brute Force)**: * 使用字典檔或窮舉法猜測密碼。 3. **Session 固定 (Session Fixation)**: * 駭客預先取得一個有效的 Session ID,誘導受害者使用該 ID 登入,登入成功後駭客即可接管帳號。 4. **Session ID 暴露**: * **URL Rewriting**:將 Session ID 放在網址列 (如 `http://site.com?jsessionid=xyz`),極易在分享連結或瀏覽器紀錄中外洩。 ### 🚨 實戰案例 **證券商撞庫攻擊** 駭客利用暗網流出的其他網站帳密,大規模嘗試登入台灣多家證券商下單系統。因系統僅依賴單一密碼驗證,導致大量客戶帳戶遭盜用下單港股。 > [新聞來源:iThome](https://www.ithome.com.tw/news/148411) ### 🛡️ 核心防禦:MFA + 安全 Session 管理 1. **強制實施多因子驗證 (MFA)**: * **唯一解法**:這是對抗「撞庫」與「釣魚」最有效的手段。 2. **強化 Session 管理**: * **登入後更換 ID**:使用者登入成功後,伺服器必須強制銷毀舊 Session ID 並配發新的,以防禦 **Session Fixation**。 * **Cookie 屬性設定**:務必設定 `HttpOnly` (防 XSS 竊取) 與 `Secure` (僅限 HTTPS 傳輸)。 3. **現代密碼政策 (NIST 800-63b)**: * **長度 > 複雜度**:密碼長度比大小寫符號更重要。 * **取消定期更換**:除非發生外洩,否則**不建議**強制使用者每 90 天換密碼 (因為會導致使用者改用弱密碼),**但這個是NIST 800-63b得觀點,考試得時候還是要選定期變更**。 :::warning **📝 iPAS 考試重點** 1. **情境題關鍵字**: * 看到 **「使用者習慣共用密碼」** 造成入侵 ⮕ 答案選 **Credential Stuffing (撞庫)**。 * 看到 **「登入後 Session ID 沒變」** ⮕ 這是 **Session Fixation** 漏洞。 * 看到 **「URL 網址列出現 jsessionid」** ⮕ 這是 **Session 暴露風險** (應改用 Cookie)。 2. **MFA 是萬用解**:大部分 A07 的問題,標準答案都是「導入 MFA」。 ::: --- ## A08 軟體與資料完整性失效(Software and Data Integrity Failures) :::info **💡 定義** 做出關於軟體更新、關鍵資料或 CI/CD 流程的假設,但未驗證其完整性。 **兩大核心**: 1. **不安全的反序列化 (Insecure Deserialization)**:未驗證物件串流內容就將其還原為程式物件。 2. **缺乏完整性檢查**:下載更新檔或套件時,未檢查數位簽章或雜湊值。 ::: ### 🚨 實戰案例 1. **React2Shell (CVE-2025-55182)**: 2025 年 12 月爆發的核彈級漏洞。知名框架 **Next.js / React** 在處理伺服器元件 (RSC) 時,因存在**不安全的反序列化**漏洞,駭客只需傳送惡意構造的 JSON 字串,後端還原物件時就會觸發惡意指令 (RCE)。 > [新聞來源:iThome](https://www.ithome.com.tw/news/172790) 2. **ASUS Live Update 供應鏈攻擊**: 駭客攻陷 ASUS 更新伺服器,並竊取合法的私鑰為惡意程式進行**數位簽章**。用戶電腦因為信任該簽章,自動下載並執行了後門程式。 > [新聞來源:iThome](https://www.ithome.com.tw/news/129588) ### 🛡️ 核心防禦:驗證、簽章、白名單 1. **針對反序列化 (Deserialization)**: * **不信任任何輸入**:不要對來自不受信來源的資料進行反序列化。 * **型別白名單 (Type Whitelisting)**:若必須使用,嚴格限制哪些 Class 可以被反序列化。 2. **針對軟體更新/傳輸**: * **數位簽章 (Digital Signature)**:確保程式碼由受信任的發布者簽署 (Code Signing)。 * **檢查雜湊值 (Checksum)**:下載檔案後,比對官方提供的 SHA-256 雜湊值是否一致。 3. **CI/CD 完整性**: * 確保建置流程 (Pipeline) 也是經過簽署與驗證的,防止在編譯過程中被竄改。 :::warning **📝 iPAS 考試重點** 1. **反序列化 (Deserialization)**: * 關鍵字:**Java ObjectStream**, **PHP Serialization**, **Pickle (Python)**, **JSON/XML 還原物件**。 * 只要看到題目說 **「將字串還原成物件時執行了惡意程式」**,絕對選 A08。 2. **完整性檢查**: * 題目出現 **「Checksum 不符」**、**「未驗證數位簽章」**、**「CI/CD 流程被竄改」**,也是選 A08。 ::: * **反序列化的比喻 (樂高/IKEA)**: 序列化:把組好的樂高飛機拆散,裝進盒子裡寄給你。 反序列化:你收到盒子,照著說明書把積木組回去。 漏洞:壞人在盒子裡偷偷多放了一塊「紅色按鈕積木」,並把說明書改成「組裝完畢後請按下紅色按鈕」。你照做(反序列化),結果飛機就爆炸了(執行惡意程式碼)。 --- ## A09 安全日誌與告警失效(Security Logging and Alerting Failures) :::info **💡 定義** 未能正確記錄關鍵資安事件(如登入失敗、存取控制失效),或日誌儲存不當(被竄改/刪除),以及缺乏有效的即時告警機制。 **後果**:根據統計,企業平均需要 **200 天以上** 才能發現資料外洩,這段「駭客潛伏期」就是 A09 失效造成的。 ::: ### 🚨 實戰案例 1. **健保署個資外洩案**: 內部人員利用職務之便,長期且異常地大量查詢民眾個資。因系統缺乏**行為分析 (UEBA)** 與即時告警,導致該行為持續多年未被發現。 > [新聞來源:CNA 中央社](https://www.cna.com.tw/news/asoc/202301100014.aspx) 2. **Target 百貨資料外洩**: 駭客入侵初期,資安設備其實有偵測到並發出告警。但因每日告警數量過多,管理員產生**告警疲勞 (Alert Fatigue)** 而忽略通知,錯失攔截黃金時間,導致 4000 萬信用卡資料外洩。 > [新聞來源:iThome](https://www.ithome.com.tw/news/86196) ### 🛡️ 核心防禦:SIEM + 異地備份 1. **集中化日誌管理 (Centralized Logging)**: * **關鍵**:日誌絕對**不能只存在本機**!駭客入侵第一件事就是 `rm -rf /var/log`。 * **作法**:必須即時將日誌拋送到獨立的日誌伺服器或 **SIEM (資安事件管理平台)**。 2. **記錄關鍵事件**: * 必須記錄:登入失敗、權限變更、伺服器端輸入驗證失敗、高權限操作。 * **不可記錄**:明文密碼、完整的信用卡號 (需遮罩)。 3. **解決告警疲勞**: * 調整 SIEM 規則,過濾雜訊,只針對「高風險行為」發送通知。 :::warning **📝 iPAS 考試重點** 1. **鑑識與證據**: * 題目若問 **「如何確保駭客無法滅證?」** ⮕ 答案是 **日誌異地備份 (Remote Logging)**。 * 題目若問 **「日誌的主要資安屬性?」** ⮕ 答案是 **不可否認性 (Non-repudiation)** (證明這件事是你做的)。 2. **情境題**: * 看到 **「潛伏半年沒人發現」** ⮕ 選 **A09**。 * 看到 **「管理員收到太多信懶得看」** ⮕ 選 **告警疲勞**。 ::: :::danger **⚠️ 考試陷阱:日誌裡的祕密** 請注意!雖然我們在 A09 討論日誌規範,但如果題目問: **「某工程師在 Log 檔中記錄了使用者的明文密碼,這屬於哪一類風險?」** ❌ **錯誤**:A09 (這不是日誌沒開,而是記了不該記的)。 ✅ **正確**:**A04 加密機制失效** (因為密碼沒有加密/雜湊就儲存)。 ::: --- ## A10 異常狀態處理不當(Mishandling of Exceptional Conditions) :::info **💡 定義** 當系統遭遇錯誤或異常(Exception)時,未妥善處理,導致兩個後果: 1. **洩露敏感資訊**:吐出 Stack Trace、記憶體傾印 (Memory Dump) 或資料庫結構。 2. **安全機制失效 (Fail Open)**:錯誤發生時,系統預設變為「允許存取」或「略過檢查」。 ::: ### 🚨 常見失效型態 1. **詳細錯誤訊息 (Verbose Error Messages)**: * 網頁直接噴出 `java.lang.NullPointerException` 或 SQL 語法錯誤,讓駭客得知後端使用什麼框架、資料庫版本。 2. **失效開放 (Fail Open)**: * **情境**:防火牆軟體崩潰時,預設變成「允許所有封包通過」。 * **情境**:身分驗證伺服器斷線時,系統判定「驗證通過」讓使用者登入。 * **情境**:攻擊者故意傳送超大封包導致 WAF 記憶體不足崩潰,如果 WAF 是 Fail Open 設計,攻擊者後續的惡意流量就不會被檢測。 3. **邏輯繞過 (Logic Bypass via Errors)**: * 在轉帳流程中,程式碼先執行「扣款」,再執行「入帳」。如果「扣款」步驟發生錯誤(如資料庫鎖死)但程式沒有正確 Catch 並終止流程,導致程式繼續往下執行「入帳」,造成無中生有的金額。 ### 🚨 實戰案例 **Microsoft Exchange ProxyToken (CVE-2021-33766)** 這是一個經典的邏輯/錯誤處理漏洞。當使用者發送特定構造的請求時,後端驗證模組若處理失敗(Exception),系統設計上**錯誤地略過了驗證步驟**,直接將請求轉發給後端伺服器,導致駭客可繞過身分驗證竊取信件。 > [新聞來源:iThome](https://www.ithome.com.tw/news/146461) ### 🛡️ 核心防禦:Fail Safe (失效安全) 1. **實施 Fail Closed (預設拒絕)**: * **口訣**:「當我不確定時,就說不。」 * 程式碼應設計 `try-catch` 區塊,在 `catch` 發生時,預設變數應為 `allowed = false`。 2. **統一錯誤頁面 (Generic Error Pages)**: * 對一般使用者只顯示 "500 System Error" 或「系統維護中」。 * **詳細日誌** (Stack Trace) 只能寫入後端 Log Server (供 A09 監控),絕不能傳回前端。 3. **交易完整性 (Transactional Integrity)**: * 使用資料庫的 Transaction 機制(ACID 原則),確保操作要嘛全做,要嘛全不做(Atomic),避免因為中途報錯而導致資料不一致。 :::warning **📝 iPAS 考試重點** 1. **觀念題 - Fail Safe**: * 題目問:「防火牆當機時,應該阻擋所有連線還是開放所有連線?」 * 答案:為了安全,應選擇 **Fail Closed (阻擋所有/故障閉鎖)**;但在某些強調可用性的場合 (如醫院維生系統) 才會選 Fail Open,但一般資安題預設選 **Fail Closed**。 2. **特徵題**: * 看到題目圖片是 **「滿滿的程式碼報錯畫面」** ⮕ 秒選 **A10 錯誤處理不當** (或舊觀念中的 A02 配置錯誤,但在 2025 分類更傾向 A10)。 ::: ---