萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 網路安全 >  >> 資訊安全防護

Web 應用程式安全漏洞全景圖:OWASP Top 10 深度解析與修補指南

Web 應用程式已成企業核心資產,卻也是攻擊面最廣、最易被忽視的環節。埠口 80/443 必須開放,防火牆/IDS 看不懂應用層邏輯,駭客憑藉 SQLi、XSS、破壞存取控制、不安全設計、安全配置錯誤、脆弱元件、身分驗證失效、軟體完整性失效、日誌監控缺失、SSRF 等手法長驅直入。本文對應 OWASP Top 10 2021,逐一拆解成因、攻擊案例、偵測與修補方案。

A01:2021 – 破壞存取控制

  • 成因:未驗證使用者是否有權存取該物件/功能 (IDOR、強制瀏覽、提權、CORS 配置錯誤)。
  • 攻擊:`/api/users/123/orders` → 改 `124` 看他人訂單;`/admin/deleteUser?id=456` 普通用戶直接呼叫。
  • 修補:伺服端強制授權檢查 (RBAC/ABAC/PBAC)、拒絕預設、集中授權庫 (OPA/Casbin)、API Gateway 層面二次驗證、測試階段自動化授權測試 (AuthZ Test Suite)。

A02:2021 – 加密失效

  • 成因:傳輸/儲存未加密、弱演算法 (MD5/SHA1/DES/RC4/ECB 模式)、金鑰硬編碼/洩露/未輪換、憑證驗證缺失、未啟用 HSTS/HPKP。
  • 攻擊:中間人降級攻擊、離線破解雜湊、金鑰從 GitHub/日誌/記憶體洩露竊取。
  • 修補:全站 TLS 1.2+、HSTS Preload、安全 Cookie 屬性 (Secure, HttpOnly, SameSite=Strict/Lax)、AES-GCM/ChaCha20-Poly1305、KMS/HSM 管理金鑰、定期輪換、憑證透明度監控。

A03:2021 – 注入攻擊

  • SQLi:參數化查詢 (PreparedStatement) 強制全站、ORM 正確使用、WAF 虛擬補丁、資料庫最小權限連線帳號。
  • NoSQLi:MongoDB `$where`、`$regex`、`$ne` 注入 → 驗證/序列化輸入、禁用 `eval`/`$where`。
  • 命令注入:避免 `system()`/`exec()`/`shell_exec()`,改用內建 API、嚴格白名單驗證參數、Shell Escape (`escapeshellarg`)。
  • LDAP/XPath/XQuery/ORM/Template 注入:同理:參數化/安全 API/輸入驗證/最小權限。

A04:2021 – 不安全的設計

  • 成因:架構層面缺乏威脅建模、業務邏輯缺陷 (如密碼重設流程可繞過、價格可竄改、驗證碼可重放)、缺乏安全需求定義。
  • 修補:威脅建模 (STRIDE/PASTA/ATT&CK) 落地 SDLC、安全設計審查 (Design Review)、安全單元測試、業務邏輯滲透測試、安全架構師介入專案早期。

A05:2021 – 安全配置錯誤

  • 常見:預設帳號/密碼、錯誤訊息洩露堆疊追蹤/版本、不必要功能啟用 (目錄瀏覽、WebDAV、樣本應用)、雲端儲存桶公開、CORS `*`、安全標頭缺失 (CSP, HSTS, X-Frame-Options, Referrer-Policy, Permissions-Policy)、容器/雲端配置錯誤 (K8s Dashboard 公開、S3 公開、IAM 過度授權)。
  • 修補:基線自動化 (CIS Benchmarks、STIG、NSA Hardening Guides)、IaC 掃描 (Checkov, tfsec, Terrascan, KubeLinter)、持續合規監控 (CSPM/KSPM/SSPM)、錯誤頁面自定義 (不洩露堆疊/版本)。

A06:2021 – 脆弱與過時的元件

  • 成因:第三方函式庫/框架/中介軟體/容器映像/作業系統含已知 CVE、未更新、元件清單 (SBOM) 缺失。
  • 修補:SBOM 生成與管理 (CycloneDX/SPDX, Syft, Trivy, Grype, Dependency-Track)、SCA 工具整合 CI/CD (Snyk, Dependabot, Renovate, OWASP Dependency-Check)、自動化升級 PR、虛擬補丁 (WAF/IPS/EDR)、生命週期管理 (EOL 追蹤)。

A07:2021 – 身分驗證與工作階段管理失效

  • 弱點:弱密碼策略、暴力破解無限制、Session ID 預測/固定/未輪換/URL 暴露、未啟用 MFA、單點登入 (SSO) 配置錯誤、OAuth/OpenID Connect 實作缺陷 (PKCE 缺失、State 參數缺失、Redirect URI 驗證不嚴)。
  • 修補:NIST 800-63B 密碼指南 (長度優於複雜度、檢查洩露密碼清單)、強制 MFA (FIDO2/WebAuthn 優先)、Session 安全屬性 (Secure, HttpOnly, SameSite, 短存活、閒置超時、登出銷毀)、OAuth 2.1 / OIDC 最佳實踐、帳號鎖定/速率限制/裝置指紋/風險基礎認證。

A08:2021 – 軟體與資料完整性失效

  • 成因:CI/CD 管線未簽名/驗證、自動更新無簽名驗證、非信任來源套件/容器映像、資料庫/檔案無完整性驗證 (簽章/雜湊/Merkle Tree)。
  • 攻擊:SolarWinds 供應鏈攻擊、Dependency Confusion、惡意 PyPI/NPM/RubyGems 套件、CI/CD 憑證竊取注入惡意碼。
  • 修補:軟體供應鏈安全:SLSA 框架、Sigstore/cosign 簽名驗證、Reproducible Builds、私有套件庫 (Artifactory/Nexus/Harbor) 掃描驗證、CI/CD 憑證最小權限/輪換/無密碼 (OIDC)、生產部署簽名驗證門禁。

A09:2021 – 安全日誌與監控失效

  • 成因:關鍵事件不記錄 (登入失敗、權限變更、敏感操作、WAF 攔截)、日誌格式不標準/無關聯 ID、儲存時間太短、無即時告警/關聯分析、SIEM 未調優/規則過期。
  • 修補:結構化日誌 (JSON/OTEL)、統一追蹤 ID (Trace ID)、關鍵事件完整記錄 (誰、何時、何地、做什麼、結果)、SIEM 規則庫 (Sigma/Elastic/Detection Rules) 持續更新、SOAR 自動化豐富/響應、保留 ≥ 1 年 (合規要求)。

A10:2021 – 伺服端請求偽造 (SSRF)

  • 成因:應用程式根據使用者輸入 URL 發起後端請求 (Webhook、圖片抓取、文檔轉換、API 代理),未驗證/限制目標位址。
  • 攻擊:存取內部中繼資料服務 (`https://169.254.169.254/latest/meta-data/`)、雲端內部 API、內網掃描、RCE (如 `file://`, `dict://`, `gopher://` 協議)。
  • 修補:網路層隔離:後端服務部署於無出站網路/僅允許白名單目的地的子網/安全群組;應用層:URL 白名單/協議白名單 (僅 HTTP/HTTPS)、封鎖私有/保留/回環 IP (RFC 1918/3927/6598)、DNS 重新綁定防護 (解析結果驗證)、最小權限網路策略 (K8s NetworkPolicy/Calico/Cilium)。

三、 開發階段整合安全 (DevSecOps) 關鍵實踐

  1. SAST (靜態代碼分析):SonarQube, Checkmarx, Fortify, CodeQL, Semgrep → CI 阻斷高危發現。
  2. SCA (軟體成分分析):依賴掃描、授權合規、惡意套件偵測 → 升級 PR 自動化。
  3. DAST/IAST (動態/互動應用掃描):預備/測試環境自動掃描、API 規範驅動測試 (OpenAPI/Swagger)。
  4. 容器/基礎設施掃描:Trivy/Grype/KubeLinter 掃描映像/Helm Chart/Terraform/K8s Manifest。
  5. 威脅建模:每個 Epic/Feature 必做 STRIDE/ATT&CK 威脅建模,產出安全需求與測試案例。
  6. 混沌工程/韌性測試:LitmusChaos/Chaos Mesh 驗證降級/熔斷/隔離機制。

結語

Web 應用安全不是「上線前掃一次」,而是贯穿 SDLC 每個環節的系統工程。OWASP Top 10 是清單,威脅建模、安全設計審查、DevSecOps 自動化、持續監控與演練 才是防禦本體。把安全左移、下沉、自動化、度量化,讓漏洞在生產環境前就被消滅。

copyright © 萬盛學電腦網 all rights reserved