雖然 OWASP Top 10 中的漏洞有很大一部分是由「不安全的編碼」所造成,安全的編碼能幫助我們降低被攻擊成功的機率。然而,世上並不存在一個絕對安全、永遠不會出錯的程式,系統仍可能因攻擊或例外狀況而發生問題。此時,若缺乏良好的資安政策與管理機制,事件發生後所造成的影響與損失往往會被放大,甚至難以控制。
透過建立良好的資安政策,可以在事件發生時有效降低損失與影響範圍,同時也能降低因人為因素所帶來的風險。資安政策能清楚告訴我們哪些事情必須做、哪些事情不能做,並協助組織在面對資安事件時有一致的應對方式。
OWASP Top 10 彙整了十項最常見且具代表性的資安錯誤,說明這些錯誤可能帶來的影響,並同時提出對應的資安政策建議與程式修復方向。單純只修復程式碼,或只增修資安政策,都是不足的。唯有技術層面的防護與管理層面的政策相互配合,才能有效降低整體資安風險。
Broken Access Control 會導致攻擊者能執行未經授權的動作。
Access control 只在攻擊者無法接觸的 Server 進行操作。 (包含透過 Serverless-API)
應用程式的作者因權限檢查出現漏洞,導致系統給予攻擊者他沒有的權限。這能使攻擊者能執行需要有權限才能達成的事。例如: 竊取高敏資訊,甚至是修改刪除資訊。
在測試時發現,100 % 的應用程式中都存在至少一種 Security Misconfiguration
OWASP 認為隨著軟體轉向更高度自由的配置,該風險提升至此,完全不感到意外
Security misconfiguration 是指系統、應用程式、雲服務安全設置錯誤造成的風險。
在執行安全設置時,因設置有誤甚至是使用預設值,已讓攻擊者能從中竊取高敏資訊。
Software supply chain failures 是指因第三方套件、工具、軟體引發的問題
隨著專案複雜度逐年提升,使用第三方套件的比率也在逐年提高。但部分的套件可能存在漏洞,甚至是惡意程式。需定期追蹤所有第三方套件。這可避免使用到危險的套件,也可在當第三方遭受攻擊時 (0-day),能夠第一時間下架,並保護自己的專案。
在系統、應用程式、專案都牽扯到密碼、加密、驗證,都有可能出現密碼強度不夠強的密碼,導致攻擊者可以透過暴力破解/分析彩虹表的方式,反推 hash 值,以獲取密碼。尤其是在後量子電腦時代,可開始考慮使用 post quantum cryptography (PQC),可延緩密碼被暴力破解的可能性。以防密碼洩漏,造成不可挽回的損失。
Injection 的漏洞排名雖稍微下降,但這並不代表該漏洞不再重要,該漏洞一旦發生,依然會出現不可挽回的後果。且 OWASP 認為該漏洞是被低估的,因此還是要特別注意該漏洞。
從 A04:2021 降低至 A06:2025
隨著威脅建模(Threat Modeling)與安全設計(Secure Design)的推廣,企業在設計階段的安全意識已有提升
此漏洞著重的是設計Design 與 架構 Architecture (包含商業邏輯中的缺陷)
Insecure design 說明的是 這是一個源頭性的漏洞,即使 code 寫得完美無缺,依然會出現問題, 因為這並不是 code 的問題,而是程式設計造成的問題
這不是單一漏洞造成的,而是由錯誤的底層設計或缺乏安全意識的開發文化造成的。此漏洞要求的是一種應該要有的程式開發態度 (從 pre-code 階段開始一直到專案生命週期結束)。我們需收集業務需求、資源管理、安全的設計、遵守合理的開發週期。以方便我們在問題發生以前就降低問題發生的機會,才可以在出問題時,第一時間解決,或將問題的嚴重程度降低。
漏洞排名不變
攻擊者能透過暴力或欺騙系統的方式,是自己成為一個合法的使用者
允許攻擊者可無限制的輸入密碼
沒有人機驗證
使用過於簡單的密碼
忘記密碼流程不夠安全
缺少或無效的安全驗證
SSO 的 Token 長時間依然有效
使用多重驗證
不要使用預設密碼
檢查前 10000 名的最差密碼
懷疑密碼外洩時,強制修改自己的密碼
系統若出現多次密碼輸入失敗,請通知系統管理者
密碼太過簡單很容易被人暴力破解,同時也避免使用簡單的密碼加上特殊符號的做法,規避相關問題,例如:Password1!, Password2!…
現在已經有方法可以快速驗證。也避免使用者可無限制的輸入密碼,最後可使用多重驗證的方法降低密碼被猜出帶來的損失。
在使用套件時,需要確認套件的來源是否足夠可靠,足夠安全,並請做好合理的驗證,才能夠使用。且隨著 LLM 的盛行,不管是在開發 LLM 還是使用 LLM 也都會受其影響,例如: 餵給 LLM 錯誤的資訊則可能會引發 LLM04:2025 Data and Model Poisoning,或直接使用 LLM 給的 code,也有可能意外導致系統損毀。
若沒有 log 的紀錄和監控,會導致發生任何攻擊事件、錯誤… 等事件時,將無法被記錄,導致當有事件發生時,系統將無法迅速產生回應。
確保所有失敗行為及安全相關行為(無論失敗或成功)被記錄下來,以方便進行足夠的時間進行後續分析
確保 log 使用正確的方式進行編碼,以防止 injection 或其他攻擊
可使用 AI 進行分析,降低 false-positive 的分析成本
當出現可疑行為時,立刻發出告警
當出現攻擊,錯誤,或任何有疑慮的行為時,可透過 log 進行錯誤分析,或是防止資料被竄改或刪除,以讓資料具備一定的完整性。此時,也必須要在發生可疑行為當下,發出告警,以讓安全團隊能立刻執行安全行為,讓系統能在第一時間能夠被得到保護。同時也必須對高敏資訊進行遮罩,以防止有任何 log 被洩漏。最後也可透過 AI 對 log 進行分析
新增的漏洞類別
此漏洞為程式處理不當、邏輯錯誤、其他異常狀況和系統因素可能導致的相關錯誤
過去被歸類為程式碼品質不佳,現在特別歸類出來,以方便進行更加具體的指引
此漏洞說明的是,在某些特殊條件下,出現不可預測的行為 (不確定下一步指令是否會正常執行時),導致當機、意外行為,甚至是資安漏洞
缺失、不良、不完整的輸入驗證
記憶體、網路、環境限制導致出現的意外狀況
邏輯錯誤、整數溢位、超出運算資源、時序 … 等原因時,攻擊者可利用上述缺陷進行攻擊
系統出現錯誤時,未能正常的執行 “中斷”行為
任何事情都做出最壞的打算,必須進行監控。讓我們可在問題發生的當下,立刻處理問題
寫程式時,必須拋出 log,事件紀錄等行為
必須要有一個 global 的 exception handler (例外處理程式) 以防止出現意料之外的錯誤 (該錯誤沒有 try-catch 進行除錯)
做好足夠的安全限制,以防出現資源濫用或不足,並要產生 log 以防出現意外
程式需進行 Code Review, SAST, 壓力測試 … 等分析
寫程式時,常常會因為一些不可預期的錯誤,導致程式無法正常執行,或出現不可預期的錯誤,並且沒有足夠的安全機制預防該錯誤,導致出現預料之外的結果,甚至是損毀,甚至是資安風險。
如果您希望針對 2025 年的新標準進行風險評估,或想進一步了解如何落實「Secure by Design」的開發文化,歡迎於官網留下資訊,將會有專人與您聯繫 ➤ https://www.gss.com.tw/sca#cta