应用程序安全对于任何使用软件的组织都至关重要。控制环境中运行的应用程序有助于防止暴露于恶意应用程序,而补丁管理对于确保所有应用程序都没有最新的错误非常重要。在软件开发方面,应用程序设计人员必须确保安全最佳实践是软件开发操作 (DevOps) 的架构和编码阶段的一部分,以防止常见的软件漏洞,这些漏洞可能使他们的应用程序很容易被黑客利用。
为了获得最高的安全保证,需要使用各种方法(包括静态和动态测试以及使用单元测试、模糊测试和渗透测试等特定技术来手动审查和测试软件代码。通过实施深入的应用程序安全测试,组织可以提高应用程序抵御攻击的能力,并提高应用程序的可靠性和完整性。
MITRE 最近发布了 2023 年 25 个 CWE 软件弱点,突出显示了构成最重大风险的关键漏洞。该列表为软件开发团队提供了审查、更新和增强对软件漏洞的理解并提高软件安全性的机会。
首先,什么是常见弱点枚举(CWE)?
常见弱点枚举(CWE) 是一个结构化分类框架,用于识别和分类软件安全弱点。 CWE 软件威胁目录由 MITRE 公司(一家以其对技术和防御的广泛贡献而闻名的非营利组织)建立,是行业专家、安全研究人员和软件开发人员之间合作构建的。 CWE 的核心是作为标准化语言的中央信息存储库,用于描述和分类这些漏洞。
CWE 包含 800 多个条目,组织成层次结构,每个弱点都分配有唯一的标识符,并根据各种属性(例如弱点的性质、其潜在影响及其相关技术)进行分类。该结构包括类、子类和代表特定弱点的基本元素。目录中的每个漏洞条目都包含详细描述、示例、潜在后果以及如何缓解或预防漏洞的指南。
CWE 可以映射到 CVE(常见漏洞和暴露),为理解特定漏洞提供上下文。将 CWE 映射到 CAPEC(常见攻击模式枚举和分类)可以加深对攻击者如何通过特定攻击模式利用这些弱点的理解。将 CWE 集成到安全开发生命周期 (SDLC)模型中是一种主动方式,可确保在软件开发的各个阶段识别并减少漏洞。
从寻求强化代码以抵御潜在漏洞的软件开发人员到发现应用程序中的弱点的渗透测试人员和安全分析师,CWE 提供了一种通用语言和系统方法来有效解决软件弱点。通过了解和利用 CWE 的见解,组织可以增强对 25 个最危险软件弱点的防御,并在不断发展的数字环境中增强整体网络安全态势。
CWE 2023 年十大最危险的软件弱点
以下是 CWE 2023 年最危险的 10 个软件弱点。在前 25 个弱点中,有 8 个弱点是由于使用清理不当造成的,这使其成为最大的漏洞分类。其次最广泛的类别是:设计或实施不当的访问控制(身份验证或授权弱点),以及对六项内存进程的利用(例如分配和释放)。
TOP 10完整列表)可以在 CWE 网站上找到。以下是前 10 名的简要说明:
- 越界写入(未更改):将数据写入内存缓冲区的边界之外可以允许攻击者将可执行代码写入内存位置,这些代码稍后将传递到 CPU 并执行。尽可能使用内存安全语言非常重要,当不可行时,请确保不使用已知易受攻击的函数,例如用于 C 风格内存分配的malloc() 、 calloc()和 realloc() 。
- 网页生成期间输入的不正确中和(“跨站脚本”或“XSS”)(未更改):未能正确清理 Web 应用程序中的用户输入,导致潜在的跨站脚本攻击,从而允许攻击者在其中执行 Javascript受害者的浏览器。通过在将用户提供的输入包含到网页中之前将其正确编码为 HTML 实体,可以避免这种情况。针对 XSS 漏洞的典型攻击是攻击者提交 JS 代码作为网页上的评论,并且该网站的所有访问者都会在其浏览器上执行攻击者的代码。
- SQL 命令中使用的特殊元素的不正确中和(“SQL 注入”)(未更改): SQL 查询中不充分的输入验证可能允许执行恶意 SQL 命令。始终使用使用“准备好的语句”的数据库函数来对查询中使用的用户提供的输入进行编码,以避免执行恶意代码。
- 释放后使用(上升 3 位):释放内存后继续使用内存,导致不可预测的行为。内存安全语言结合了内存管理机制,使开发人员免于手动内存分配和释放的责任。如果使用内存安全语言不可行,则需要仔细的编程实践并严格遵守内存管理最佳实践,以缓解这些漏洞。
- 操作系统命令中使用的特殊元素的不正确中和(“操作系统命令注入”)(上升 1 位):操作系统命令中的输入验证不充分,使攻击者能够在目标上执行非预期命令。最好永远不要允许任何客户端数据直接包含在 shell 命令中。当用例特别需要此功能时,管理员需要确保底层虚拟化得到良好的保护,防止逃逸,从而允许攻击者进入子系统或其他网络主机。
- 输入验证不正确(下降 2 位):用户输入验证不充分,可能导致各种漏洞,包括注入攻击。此条目是一个广泛的分类,包括所有类型的弱点,即用户提供的输入在使用之前未经过适当的净化以删除潜在的恶意内容。需要严格的输入验证和清理来减轻这些攻击。
- 越界读取(下降 2 位):从内存中读取超出预期边界的数据可能会导致攻击者从内存中窃取敏感数据,例如密码或加密密钥。此漏洞的缓解方法与列表中其他基于内存的项目相同。
- 对受限制目录的路径名的不正确限制(“路径遍历”)(未更改):未能正确验证和限制文件路径,可能会允许攻击者窃取或修改未经授权的文件或包含恶意共享库(例如 DLL 文件)。
- 跨站点请求伪造 (CSRF)(未更改):利用经过身份验证的用户会话在未经用户同意的情况下执行不需要的操作。 CSRF 是一种攻击类型,攻击者通常利用用户现有的会话 cookie 或身份验证令牌,制作看似合法的恶意请求,诱骗用户在不知情的情况下对 Web 应用程序执行操作。攻击者可以远程利用用户的网站帐户下订单、转移资金或更改其他详细信息,例如密码、帐户电子邮件地址等。
- 无限制上传危险类型文件(上升):允许用户上传可在服务器上执行的潜在恶意文件。应用程序开发人员不仅需要验证文件的扩展名是否与预期的文件类型匹配,还需要尽可能验证文件的内容。
结论
在最好的情况下,软件漏洞应该是所有软件应用程序的架构和开发过程中的主要考虑因素。如果已发布的应用程序中包含漏洞,则攻击者有机会利用其用户,直到检测到并修补问题。软件开发人员需要了解软件应用程序中可能发现的潜在弱点,以便主动预防它们。
CWE 软件弱点目录为开发人员提供了了解软件安全性的通用语言,而 CWE Top 25 是最新且相关的信息来源