OWASP Top10

前言

每年的Top10都在更新,但是一般不会有太大的改变,这里说明的是 2021年的Top10排行榜。


A01:访问控制失效(Broken Access Control)

攻击方式
没有检查身份,直接导致攻击者绕过权限直接访问
漏洞原因
漏洞影响

绕过路径,如未读取的参数做检查,导致路径绕过读取到敏感文件
权限提升,如未对权限做检查,导致攻击者变更权限
垂直越权,攻击者可以从普通的用户权限提升到管理员的权限访问应用程序
水平越权,攻击者可以从普通用户A的权限提升到普通用户B的权限访问应用程序
漏洞防护
对参数的白名单过滤
对权限的控制管理重新设计与限制
限制下载文件的类型


A02:敏感数据暴露(Sensitive Data Exposure)

攻击方式
常见的攻击方式主要是扫描应用程序获取到敏感数据
漏洞原因
应用维护或者开发人员无意间上传敏感数据,如 github 文件泄露
敏感数据文件的权限设置错误,如网站目录下的数据库备份文件泄露
网络协议、算法本身的弱点,如 telent、ftp、md5 等
漏洞影响
应用程序、网站被修改
个人资料、公司资料泄露,被用于售卖获利
漏洞防护
对于 github 泄露,定期对仓库扫描
对于应用网站目录定期扫描
使用强壮的网络协议与算法


A03:注入(Injection)下滑到第三位。94%的应用程序都测试了某种形式的注入,注入类别中如今包括跨站脚本。

映射到该类别的33个CWE在应用程序中出现次数第二多。

攻击方式
利用应用程序弱点,通过恶意字符将恶意代码写入数据库,获取敏感数据或进一步在服务器执行命令。
漏洞原因
未审计的数据输入框
使用网址直接传递变量
未过滤的特殊字符
SQL 错误回显
漏洞影响
获取敏感数据或进一步在服务器执行命令接管服务器

SQL 注入防护
关闭 SQL 错误回显
前端输入字符白名单验证(长度、类型等)
对输入的特殊字符使用转义处理
SQL 操作使用 PreParedStatement
SQL 服务运行于专门的账号,并且使用最小权限
限制 SQL 服务的远程访问,只开放给特定开发人员
代码审计,最有效的检测应用程序的注入风险的方法之一
使用成熟的 waf

跨站脚本 (XSS)

漏洞原因
应用程序未对应用输入做过滤与检查,导致用户数据被当作代码执行。
漏洞影响
欺骗使用者点击嵌入了恶意网站的正常网站,获取使用得的敏感数据
盗取使用者 cookie,冒用使用者身份
漏洞防护
验证输入/接收的字符,过滤或者替换非法字符
使用白名单机制


A04:不安全设计(Insecure Design)是2021年出现的新类别,并且一出场就高居第四位。

此处需要重点关注与设计缺陷相关的风险。如果我们真的想作为一个行业“左移”,就需要更多地使用威胁建模、安全设计模式和原则以及参考架构。


A05:2021年,安全配置错误(Security Misconfiguration)从上一版的第6位上升到了第5位。

90%的应用程序都经过了某种形式的错误配置测试,随着转向高度可配置软件的趋势不可逆,看到这一类别排名上升也就不足为奇了。

此前版本的XML外部实体注入(XXE)类别现在也被合并为该类别的一部分。

攻击方式
攻击者利用错误配置攻击,获取敏感数据或者提升权限
漏洞原因
开发或者维护人员设置了错误的配置,如 python 开发中对于 Django 框架在生产环境启用了 Debug 模式
漏洞影响
可让攻击者获取到敏感数据
可让攻击者提升权限,如未修改应用程序配置的默认密码,未删除应用程序安装程序目录文件等

XML外部实体注入(XXE)

攻击方式
当应用程序解析 XML文件时包含了对外部实体的引用,攻击者传递恶意包含 XML 代码的文件,读取指定的服务器资源。
漏洞原因
XML 协议文档本身的设计特性,可以引入外部的资源;定义 XML 文件时使用的外部实体引入功能
漏洞影响
读取服务器敏感资料,如、/etc/password
读取应用程序源码
漏洞防护
关闭 DTD (Data Type Definition)
禁止外部实体引入


A06:2021年,脆弱过时组件(Vulnerable and Outdated Component)——此前名为“使用具有已知漏洞的组件”(Using Components with Known Vulnerabilities)——也从第6位一跃进入第6位。

该类别是唯一一个没有任何CVE映射到所含CWE的类别,因此默认的漏洞与影响权重计5.0分。

攻击方式
利用应用程序技术栈中的框架、库、工具等的已知漏洞进行攻击,获取高权限或者敏感数据
漏洞原因

应用程序技术栈中使用的框架、库、工具爆出了漏洞,应用程序未能及时更新与修复
漏洞影响
敏感数据泄露
提升权限
远程代码执行
漏洞防护
及时更新、修复组件漏洞
移除不再使用的依赖组件


A07:2021年,识别与认证失败(Identification
and Authentication Failure)——此前称为“身份验证失效”(Broken
Authentication)——排名从此前的第2位降到了第7位,而且该类别目前包含更多与识别失败相关的CWE。

虽然该类别仍然位列Top 10榜单,但标准化框架的可用性增加似乎有助于解决这一问题。

攻击方式
攻击者利用网站应用程序中的身份认证缺陷获取高权限并进行攻击应用服务
漏洞原因
应用程序身份认证系统认证缺陷
漏洞影响
盗用账号与身份
常见设计缺陷
修改利用网络协议数据包获取使用者账号密码
网站设计不良,可直接绕过验证页面
使用者忘记注销,而让攻击者有可趁之机
弱密码
弱密码攻击
身份认证非常容易受到弱密码攻击,常用的弱密码攻击方式有
常用密码攻击 - 使用泄露的密码字典攻击
使用公司名称缩写、域名、电话号码
全数字、英文的简单密码
账号与密码相同的
不同网站、电脑、APP 使用了相同的密码
漏洞防护
网站的登录页面就使用加密连接
网站应该具体良好的权限控制与管理
网站应该具备超时注销机制


A08:软件和数据完整性故障(Software and Data Integrity Failure)是2021年新增的一个类别,主要关注缺乏完整性验证情况下做出与软件更新、关键数据和持续集成/持续交付(CI/CD)流水线相关的各种假设。

CVE/CVSS数据最高加权影响之一映射到该类别中的10个CWE。此前版本中的“不安全反序列化”(Insecure Deserialization)类别如今也被归入这一更大类别。

攻击方式
攻击者利用应用程序反序列化功能,反序列化恶意对象攻击应用程序。
漏洞原因
应用程序在反序列化数据对象时,执行了攻击者传递的恶意数据对象
漏洞影响
最严重情况下,可导致远程代码执行 RCE
注入攻击
越权
漏洞防护
对数据对象签名,并作完整检查
数据对象中的数据做严格的类型检查,限制一部分恶意攻击
隔离反序列化操作环境


A09:2021年,安全日志与监测失败(Security Logging and Monitoring Failure)——此前名为“日志记录和监控不足”(Insufficient Logging & Monitoring)——从最后一名上升至第9位。

而且该类别已扩展纳入了其他类型的故障,虽然这些故障难以测试,并且在CVE/CVSS 数据中没有得到很好的体现,但却会直接影响可见性、事件警报和取证。

漏洞原因
对于日志记录的监控不足,造成攻击者攻击系统、应用、盗取数据等操作无法被发现和追查。
漏洞影响
无法判断安全事件的发生
无法判断和修复漏洞
导致再次被入侵
漏洞防护
启用日志监控、告警机制
启用异地监控,C/S架构的监制机制
尽可能的完整记录所有日志


A10:排在最后一位的服务器端请求伪造(Server-Side Request Forgery)是2021年新增的类别。

虽然数据显示其发生率相对较低,但测试覆盖率却高于平均水平,并且漏洞利用和影响潜力的评级也高于平均水平。

该类别是行业安全专家为我们预警的一种重要场景,尽管目前并没有数据能够证实其危险性。

结语

OWASP Top 10只能列出10大最严重的危险,但事实上,其他的问题(代码质量、DOS\DDOS等)同样非常值得识别和修复。

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

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

最新文章

  1. [听听音乐]love is blue
  2. jquery 中ajax的参数
  3. 解决java压缩图片透明背景变黑色的问题
  4. PHP中的错误处理
  5. python正则表达式练习篇
  6. Serialization performance analysis
  7. How and when: ridge regression with glmnet
  8. JavaScript基础5——关于ECMAscript的函数
  9. 20175311 2018-2019-2 《Java程序设计》第四周学习总结
  10. Java8 之stream
  11. laravel 填充器Seed
  12. c# WebApi之解决跨域问题:Cors
  13. 游戏脚本编程 文本token解析
  14. wpf Listbox 实现按住ctrl键来取消选中
  15. eclipse工具maven项目打包文件不是最新修改的
  16. express 项目前后台公用样式 /static/js/bootstrap.min.js
  17. WPF 渲染级别 (Tier)
  18. php获取数组的键值
  19. Network Saboteur (深搜递归思想的特殊使用)
  20. Python集合的常用操作

热门文章

  1. [原创]移远RM500U-CN模组驱动移植
  2. CF576A Vasya and Petya's Game
  3. Fibonacci Nim
  4. JS中的数据类型及转换
  5. 云存储?不依赖三方服务自己也可以搞,利用Docker来搭建分布式文件系统FastDfs
  6. Windows Embedded CE 6.0开发环境的搭建(2)
  7. Sonatype Nexus3 搭建私有仓库
  8. MyBatis 03 缓存
  9. linux 的文件权限案列
  10. HTML+JS+CSS 实现随机跳转到一个网址