搜索

影视聚合站

OWASP Top 10 2021 榜单出炉!

发布时间:2021-09-24 20:54:41来源:FreeBuf

近日,OWASP从贡献者提供的数据中选择了8个类别,从高水平的行业调查中选择了2个类别,完成了最新的OWASPTop102021榜单。OWASP表示,

“我们这么做的根本原因是,分析贡献者提供的数据就是回顾过去。AppSec研究人员花时间寻找新的漏洞和测试它们的新方法。将这些测试集成到工具与流程中需要时间。当我们能够可靠地大规模测试某个缺陷的时候,很可能已经过去了很多年。为了平衡这种观点,我们采用行业调查的方式来询问一线人员,了解他们认为数据可能尚未表现出来的基本缺陷。”

总体来说,2021年新鲜出炉的OWASPTop10榜单出现了三个新的类别,还有四个类别的名称和范围发生了变化,甚至还对一些类别进行了合并。

A01:访问控制失效(BrokenAccessControl)从第五位上升到了第一位。94%的应用程序都经过了某种形式的访问控制失效测试。映射到访问控制失效的34个CWE在应用程序中的出现频率比其他任何类别都要多。

A02:2021年,加密失败(CryptographicFailure)——此前名为“敏感数据暴露”(SensitiveDataExposure),这一名称只是描述了广泛的症状而非根本原因——上移到了榜单第二位。此处需要重新关注与密码学相关的故障,这些故障通常会导致敏感数据暴露或系统受损。

A03:2021年,注入(Injection)下滑到第三位。94%的应用程序都测试了某种形式的注入,注入类别中如今包括跨站脚本。映射到该类别的33个CWE在应用程序中出现次数第二多。

A04:不安全设计(InsecureDesign)是2021年出现的新类别,并且一出场就高居第四位。此处需要重点关注与设计缺陷相关的风险。如果我们真的想作为一个行业“左移”,就需要更多地使用威胁建模、安全设计模式和原则以及参考架构。

A05:2021年,安全配置错误(SecurityMisconfiguration)从上一版的第6位上升到了第5位。90%的应用程序都经过了某种形式的错误配置测试,随着转向高度可配置软件的趋势不可逆,看到这一类别排名上升也就不足为奇了。此前版本的XML外部实体注入(XXE)类别现在也被合并为该类别的一部分。

A06:2021年,脆弱过时组件(VulnerableandOutdatedComponent)——此前名为“使用具有已知漏洞的组件”(UsingComponentswithKnownVulnerabilities)——也从第6位一跃进入第6位。该类别是唯一一个没有任何CVE映射到所含CWE的类别,因此默认的漏洞与影响权重计5.0分。

A07:2021年,识别与认证失败(IdentificationandAuthenticationFailure)——此前称为“身份验证失效”(BrokenAuthentication)——排名从此前的第2位降到了第7位,而且该类别目前包含更多与识别失败相关的CWE。虽然该类别仍然位列Top10榜单,但标准化框架的可用性增加似乎有助于解决这一问题。

A08:软件和数据完整性故障(SoftwareandDataIntegrityFailure)是2021年新增的一个类别,主要关注缺乏完整性验证情况下做出与软件更新、关键数据和持续集成/持续交付(CI/CD)流水线相关的各种假设。CVE/CVSS数据最高加权影响之一映射到该类别中的10个CWE。此前版本中的“不安全反序列化”(InsecureDeserialization)类别如今也被归入这一更大类别。

A09:2021年,安全日志与监测失败(SecurityLoggingandMonitoringFailure)——此前名为“日志记录和监控不足”(InsufficientLogging&Monitoring)——从最后一名上升至第9位。而且该类别已扩展纳入了其他类型的故障,虽然这些故障难以测试,并且在CVE/CVSS数据中没有得到很好的体现,但却会直接影响可见性、事件警报和取证。

A10:排在最后一位的服务器端请求伪造(Server-SideRequestForgery)是2021年新增的类别。虽然数据显示其发生率相对较低,但测试覆盖率却高于平均水平,并且漏洞利用和影响潜力的评级也高于平均水平。该类别是行业安全专家为我们预警的一种重要场景,尽管目前并没有数据能够证实其危险性。

根据设定,OWASPTop10只能列出10大最严重的危险,但事实上,以下四个问题同样非常值得识别和修复:

代码质量问题包括已知的安全缺陷或模式、出于多种目的重用变量、在调试输出中暴露敏感信息、一对一错误、检查时间/使用时间(TOCTOU)竞争条件、未签名或签名转换错误等等。攻击者可能会通过使用跨多个线程的静态共享变量利用竞争条件来获取或更新敏感信息。

企业组织通常可以通过严格的编译器标志、静态代码分析工具和linterIDE插件来识别它们。现代语言的设计消除了许多这些问题,例如Rust的内存所有权和借用概念、Rust的线程设计以及Go的严格类型和边界检查。

拒绝服务(DoS)

如果具备足够的资源,拒绝服务总是可能发生的。但是,设计和编码实践对拒绝服务的严重程度有重大影响。假设任何拥有链接的人都可以访问一个大文件,或者每个页面上都会发生计算成本高的事务。在这种情况下,拒绝服务往往只需更少的努力。

企业组织可以考虑对较大对象进行访问控制,以确保只有经过授权的个人才能访问大型文件或对象,或通过边缘缓存网络为其提供服务。

内存管理错误

Web应用程序倾向于使用托管内存语言编写,例如Java、.NET或node.js(JavaScript或TypeScript)。但是,这些语言是用存在内存管理问题的系统语言编写的,例如缓冲区或堆溢出、整数溢出等。多年来,有许多沙箱逃逸事件证明,Web应用程序语言名义上是内存“安全的”,而实际并非如此。

许多现代API如今都是用内存安全语言编写的,例如Rust或Go。就Rust而言,内存安全是该语言的一个关键特性。对于现有代码,使用严格的编译器标志、强类型、静态代码分析和模糊测试有助于识别内存泄漏、内存和数组溢出等。

本质上来说,OWASPTop10主要是一个意识文件。然而,这并没有阻止组织自其2003年发布以来将其用作实际上的行业AppSec标准。如果您想使用OWASPTop10作为编码或测试标准,请记住它是底线,是起点!

OWASPTop10榜单的目的是推动安全行业了解数据贡献公司所面临的漏洞和漏洞利用趋势,以更好地迎接和应对挑战。目前,OWASPTop10仍处于初版阶段,还将随着安全行业不断审查其内容而发展完善。

精彩推荐