OWASP 十大安全风险新类别:预见不可预见之事
.avif)
随着 OWASP 发布其 2025 年度十大安全风险,企业需要特别关注几个新的风险类别,其中包括一个全新的类别,它再次证明了“未知往往才是最危险的”。
这个新类别,异常情况处理不当,概述了当组织未准备好预防、检测和响应异常或不可预测的情况时可能出现的问题。据 OWASP 称,当应用程序无法阻止异常发生、在问题出现时无法识别,或者在意外情况发生时响应迟缓甚至毫无反应时,就会触发此漏洞。
企业需要为未预见的情况做好准备,这反映了当今高度分布式、互联系统的现实。OWASP 所指的并非闻所未闻的问题——“异常情况处理不当”涵盖了 24 种 常见弱点枚举 (CWE)。这些 CWE 涉及不当的错误处理、事件开启失败、逻辑错误及其他场景,它们往往在异常条件下发生。例如,这可能源于输入验证不足、处理函数中的高级错误,以及对异常处理的不一致(或缺失)。正如 OWASP 所述:“每当应用程序不确定下一步指令时,就意味着异常情况处理不当。”
这些异常情况可能导致系统陷入不可预测的状态,从而引发系统崩溃、意外行为和长期存在的安全漏洞。防止此类中断的关键在于:做好最坏的打算,并为应对突发状况制定预案。
异常情况与十大安全风险的演变
多年来,这份四年一度的 Web 应用程序安全风险十大榜单构成相当稳定,仅有部分类别位置变动,每四年新增一两个类别。2025 年的版本有两个新条目,包括排名第 10 的“异常情况处理不当”。另一个是排名第 3 的软件供应链故障,它是早期类别易受攻击和过时的组件(2021 年排名第 6)的扩展,现在涵盖了更广泛的软件受损情况。(顺便提一下,失效的访问控制依然稳居第 1 大风险)。
构成这一最新类别的异常情况可能导致一系列漏洞,从逻辑错误到溢出,再到欺诈交易以及内存、时序、身份验证、授权等方面的各种问题。这些类型的漏洞会影响系统的机密性、可用性和完整性。OWASP 指出,攻击者可以利用应用程序错误的错误处理机制来利用这些漏洞。
未能处理意外情况的一个例子是:当应用程序在拒绝服务攻击期间上传文件时识别出异常,但随后未能释放资源。在这种情况下,资源将保持锁定或不可用,从而导致资源耗尽。如果攻击者侵入多步金融交易,而系统在检测到错误后未能回滚交易,则可能导致攻击者掏空用户账户。如果在交易过程中检测到错误,执行“故障关闭”至关重要,即回滚整个交易并重新开始。试图在中途恢复交易可能会导致无法挽回的错误。
故障关闭与故障开启
那么,这两种操作有什么区别呢?让我们来澄清一下:
故障开启:如果系统“故障开启”,它会在出错时继续运行或保持“开启”状态。这在保持业务连续性至关重要时很有用,但从安全角度来看风险很高。
故障关闭:如果系统“故障关闭”,它会在出现问题时自动关闭或进入安全状态。从安全角度来看,这更安全,因为它有助于防止未经授权的访问。
处理不可预见的错误
预防此类风险始于为未知情况做规划。这包括能够在系统错误发生时进行检测,并采取措施解决问题。你需要能够适当地通知用户(而不向攻击者泄露关键信息)、记录事件,并在必要时发出警报。
以下是一个 SQL 查询错误及其站点安装路径的披露示例,攻击者可利用这些信息识别注入点:
警告:odbc_fetch_array() 期望参数 1 为资源类型,但在 D:\app\index_new.php 第 188 行给出了布尔值
理想的系统应部署全局异常处理程序来捕获被遗漏的错误,并结合监控或可观测性工具,或利用能检测重复错误及异常模式的功能来识别潜在的持续攻击。这有助于防御那些旨在利用企业错误处理机制弱点的攻击。
以标准的 Java Web 应用程序为例,可以在 web.xml 部署描述符级别配置全局错误处理程序——本例使用的是 Servlet 2.5 及以上规范中的配置方式。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
ns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
...
<error-page>
<exception-type>java.lang.Exception</exception-type>
<location>/error.jsp</location>
</error-page>
...
</web-app>
这段简短的代码告诉 Java Web 应用程序在后台发生故障时该如何处理。它不会向用户显示令人困惑的错误信息或空白页面,而是静默地捕获问题并将用户重定向至自定义错误页面。在本例中,该页面即为 error.jsp。
由于它被设置为处理通用的 java.lang.Exception 类型,因此可作为整个应用程序的主错误处理程序。这意味着无论错误发生在何处,用户都会被重定向到同一个友好且一致的错误页面,而不会看到原始的技术细节。
防患于未然
理想情况下,组织应尽可能防止异常情况的发生。例如,实施速率限制、资源配额、流量整形及其他限制措施,有助于抵御拒绝服务攻击和暴力破解攻击。您可能需要识别重复出现的相同错误,并仅将其作为统计数据处理,以免干扰自动化的日志记录和监控。系统还应包含:
严格的输入验证,以确保只有格式正确且经过清洗的数据才能进入工作流。验证应尽早进行,最好在接收到数据的第一时间就执行。
错误处理最佳实践,以便在错误发生时立即捕获。处理过程应高效:明确告知用户,必要时保留日志并发送警报。全局错误处理程序也是捕获遗漏错误的理想方案。
通用的事务安全性,这也是必不可少的。始终遵循“故障关闭”原则:如果出现问题,回滚整个事务。切勿尝试修复半途中的事务,这可能会引发更严重的问题。
集中式日志记录、监控和警报,配合全局异常处理程序,不仅能快速调查事件并统一处理流程,还能更轻松地满足合规性要求。
威胁建模和/或安全设计评审,在项目设计阶段执行。
代码审查或静态分析,以及在最终系统上进行的压力测试、性能测试和渗透测试。
“异常情况处理不当”可能是一个新的类别,但它涉及网络安全的一些基本原则,并强调了企业为何需要为未预见的情况做好准备。您可能无法预知异常情况的具体形式,但可以确定它们终将发生。关键在于准备好以统一的方式处理所有异常,这将使您在不可避免的情况出现时,能够更轻松地进行检测和响应。
致 SCW Trust Score™ 用户:
随着我们更新学习平台内容以符合 OWASP 2025 年度十大安全风险标准,您可能会观察到全栈开发人员的信任评分 (Trust Score) 有细微调整。如有任何疑问或需要支持,请联系您的客户成功经理。
在 AI 驱动的开发成果发布前实现有效治理
评估 AI 辅助风险,在提交代码时强制执行安全编码策略,并加速整个软件开发生命周期的安全交付。
探索更多博客
获取有关安全编码、人工智能治理和软件风险管理的专家内容。
%252520%252520(3).avif)
Supercharged Security Awareness: How Tournaments are Inspiring Developers at Erste Group
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.

Security as culture: How Blue Prism cultivates world-class secure developers
Learn how Blue Prism, the global leader in intelligent automation for the enterprise, used Secure Code Warrior's agile learning platform to create a security-first culture with their developers, achieve their business goals, and ship secure code at speed
在产品发布前确保 AI 驱动的开发安全
洞察开发风险,执行安全策略,并在整个软件开发生命周期中预防漏洞。



.avif)