🔎 OWASP TOP 10 2017 RC2
开源Web应用安全项目(OWASP)是一个开放的社区。
《OWASP Top 10》最初于2003年发布,并于2004年和2007年相继做了少许的更新。2010年版的修改则以针对风险进行排序,而不仅仅对于流行程度。2013年版和本次发布的2017年版也沿用了该方法。
OWASP建议:
不要停滞于OWASP Top 10:
---正如在《OWASP开发者指南》和《OWASP Cheat Sheet》中所讨论的,能影响整个web应用程序安全的漏洞成百上千。这些指南是当今Web应用程序和API开发人员的必读资料。而《OWASP测试指南》和《OWASP代码审查指南》则指导相关人员如何有效地查找Web应用程序和API中的漏洞。
持续完善:
---本《OWASP Top 10》将不断更新。即使您不改变应用程序的任何一行代码,您的应用程序可能已经存在从来没有被人发现过的漏洞,并且攻击方法也在不断改进。要了解更多信息,请查看本文结尾的建议部分,“开发人员、测试人员和企业组织下一步做什么”。
积极思考:
---当您已经做好准备停止查找漏洞并集中精力建立强大的应用程序安全控制时,OWASP正在维护和鼓励企业组织和应用程序审查者将《应用程序安全验证标准(ASVS)》作为如何去开展验证工作的指导手册。
合理使用工具:
---安全漏洞可能很复杂并且藏匿在代码行的深处。在许多案例中,查找并消除这些弱点的成本最有效方法,就是为专家配备好的工具。
2017与2013比较,主要变化是添加了两类风险:“不安全的反序列化”、“不足的日志记录和监控”。其余的8项风险也是需要去积极、正确处理的重要应用程序安全问题,特别是:“A3:2017-敏感数据泄露”敏感数据保护是网络安全法重点内容之一;“A6:2017-安全配置错误”在云和API 服务方面;以及“A9:2017使用含有已知漏洞的组件”。
与2013年的版本对比如下表所示:
OWASP Top 10 应用安全风险–2017
A1:2017 – 注入
将不受信任的数据作为命令或查询的一部分发送到解析器时,会产生诸如SQL注入、NoSQL注入、OS注入和LDAP注入的注入缺陷。攻击者的恶意数据可以诱使解析器在没有适当授权的情况下执行非预期命令或访问数据。
A2:2017 – 失效的身份认证和会话管理
通常,通过错误使用应用程序的身份认证和会话管理功能,攻击者能够破译密码、密钥或会话令牌,或者利用其它开发缺陷来暂时性或永久性冒充其他用户的身份。
A3:2017 – 敏感信息泄漏
许多Web应用程序和API都无法正确保护敏感数据,例如:财务数据、医疗数据和PII数据。攻击者可以通过窃取或修改未加密的数据来实施信用卡诈骗、身份盗窃或其他犯罪行为。未加密的敏感数据容易受到破坏,因此,我们需要对敏感数据加密,这些数据包括:传输过程中的数据、存储的数据以及浏览器的交互数据。
A4:2017 – XML外部实体(XXE)
许多较早的或配置错误的XML处理器评估了XML文件中的外部实体引用。攻击者可以利用外部实体窃取使用URI文件处理器的内部文件和共享文件、监听内部扫描端口、执行远程代码和实施拒绝服务攻击。
A5:2017 – 失效的访问控制
未对通过身份验证的用户实施恰当的访问控制。攻击者可以利用这些缺陷访问未经授权的功能或数据,例如:访问其他用户的帐户、查看敏感文件、修改其他用户的数据、更改访问权限等。
A6:2017 – 安全配置错误
安全配置错误是最常见的安全问题,这通常是由于不安全的默认配置、不完整的临时配置、开源云存储、错误的HTTP 标头配置以及包含敏感信息的详细错误信息所造成的。因此,我们不仅需要对所有的操作系统、框架、库和应用程序进行安全配置,而且必须及时修补和升级它们。
A7:2017 – 跨站脚本(XSS)
当应用程序的新网页中包含不受信任的、未经恰当验证或转义的数据时,或者使用可以创建HTML或Java 的浏览器API 更新现有的网页时,就会出现XSS 缺陷。XSS 让攻击者能够在受害者的浏览器中执行脚本,并劫持用户会话、破坏网站或将用户重定向到恶意站点。
A8:2017 – 不安全的反序列化
不安全的反序列化会导致远程代码执行。即使反序列化缺陷不会导致远程代码执行,攻击者也可以利用它们来执行攻击,包括:重播攻击、注入攻击和特权升级攻击。
A9:2017 – 使用含有已知漏洞的组件
组件(例如:库、框架和其他软件模块)拥有和应用程序相同的权限。如果应用程序中含有已知漏洞的组件被攻击者利用,可能会造成严重的数据丢失或服务器接管。同时,使用含有已知漏洞的组件的应用程序和API可能会破坏应用程序防御、造成各种攻击并产生严重影响。
A10:2017 – 不足的日志记录和监控
不足的日志记录和监控,以及事件响应缺失或无效的集成,使攻击者能够进一步攻击系统、保持持续性或转向更多系统,以及篡改、提取或销毁数据。大多数缺陷研究显示,缺陷被检测出的时间超过200天,且通常通过外部检测方检测,而不是通过内部流程或监控检测。