近日,OWASP发布2021年草案,全新的OWASP Top 10正式发布。
2021年的OWASP Top10 发生了很多变化,新增三个类别,四个类别的命名和范围也发生了变化,同时对top10进行了一些合并。
值得一提的是,“失效的访问控制”这一漏洞从2017年的第五名,取代“注入”,跃居榜首,成为最大的应用软件安全风险。
什么是OWASP Top 10OWASP,全称“开放式Web应用程序安全项目”是一个非营利性的组织,2003年该组织首次出版了“Top 10”,也就是10项最严重的Web应用程序安全风险列表。
Top 10 总结了Web应用程序最可能、最常见、最危险的十大安全漏洞。
OWASP Top 10中公布的漏洞,是最容易被黑客利用的,它也成为开发、测试及相关技术人员必须学会的知识。不少互联网公司的相关岗位面试中,OWASP Top 10是最常被提及的。
了解OWASP Top 10,可以有效避免自己的Web应用程序被黑客轻易攻破。
除了OWASP Top 10,OWASP创建了许多项目,例如容器安全十大风险、十大隐私风险、API安全Top 10、十大移动应用恶意行为等等,但风头均没有盖过OWASP Top 10。
Top1 失效的访问控制失效的访问控制,也叫越权,指的是在未对通过身份验证的用户,实施恰当的访问控制。攻击者可以利用这一漏洞,访问未经授权的功能或数据。
比如,访问其他用户的账户、查看敏感文件、修改其他用户的数据,更改访问权限等等,都属于失效的访问控制造成的后果。
常见的访问漏洞包括:
通过修改 URL、内部应用程序状态或 HTML 页面,或仅使用自定义 API 攻击工具来绕过访问控制检查。
允许将主键更改为其他用户的记录,允许查看或编辑其他人的帐户。
特权提升。在未登录的情况下充当用户或以用户身份登录时充当管理员。
元数据操作,例如重放或篡改 JSON Web 令牌 (JWT) 访问控制令牌,或用于提升权限或滥用 JWT 失效的 cookie 或隐藏字段。
CORS 错误配置允许未经授权的 API 访问。
强制以未经身份验证的用户身份浏览经过身份验证的页面或以标准用户身份浏览特权页面。访问 API 时缺少对 POST、PUT 和 DELETE 的访问控制。
Top2 加密失败在之前的Top10中,“加密失败”以前叫做“敏感数据泄露”,敏感数据泄露的根本原因是对数据加密存在有机可乘的漏洞,因此2021版改称为“加密失败”更贴切一些。
对于需要加密或加密传输的数据,常见的漏洞包括:
Top3 注入随着大量主流框架被使用,发生注入攻击的概率也随之下降,“注入”也从2017年的第一位下降到第三位。
SQL注入是典型的注入攻击,攻击者可以在web应用程序中事先定义好的查询语句的结尾,添加额外的SQL语句,从而实现非法操作。
常见的漏洞包括:
不验证、过滤和清理用户提供的数据
没有上下文感知转义的动态查询或非参数化调用直接在解释器中使用。
在对象关系映射 (ORM) 搜索参数中使用恶意数据来提取额外的敏感记录。
直接使用或连接恶意数据。SQL 或命令包含动态查询、命令或存储过程中的结构和恶意数据。
Top4 不安全的设计“不安全设计”是2021年新增的一个类型,它重点关注的是设计缺陷的风险,“不安全设计”代表的是一类漏洞。
Top5 安全配置错误90%的web应用程序都经历过错误配置测试,这些将导致安全风险。
常见的漏洞:
在应用程序堆栈的任何部分缺少适当的安全强化或对云服务的权限配置不正确。
启用或安装了不必要的功能(例如,不必要的端口、服务、页面、帐户或权限)。
默认帐户及其密码仍处于启用状态且未更改。
错误处理向用户显示堆栈跟踪或其他信息过多的错误消息。
对于升级的系统,最新的安全功能被禁用或未安全配置。
服务器不发送安全标头或指令,或者它们未设置为安全值。
软件已过时或易受攻击(请参阅 A06:2021-易受攻击和过时的组件)。
Top6 易受攻击和过时的组件如果客户端和服务器使用了易受攻击的组件版本,就可能成为被攻击者攻击的目标。
常见的漏洞有:
Top7 认证和授权失败通俗地说,该漏洞会导致攻击者使用用户的用户名和密码进行填充,从而入侵系统。
常见的漏洞有:
允许自动攻击,例如撞库,其中攻击者拥有有效用户名和密码的列表。
允许蛮力或其他自动攻击。
允许使用默认密码、弱密码或众所周知的密码,例如“Password1”或“admin/admin”。
使用弱或无效的凭据恢复和忘记密码流程,例如无法确保安全的“基于知识的答案”。
使用纯文本、加密或弱散列密码(请参阅 A3:2017-敏感数据泄露)。
缺少或无效的多因素身份验证。
在 URL 中公开会话 ID(例如,URL 重写)。
成功登录后不要轮换会话 ID。
不会正确地使会话 ID 无效。用户会话或身份验证令牌(主要是单点登录 (SSO) 令牌)在注销或一段时间不活动期间未正确失效。
Top8 软件和数据完整性故障同样,这也是一个新增的类型,指的是在不验证完整性的情况下做出与软件更新、关键数据和CI/CD管道相关的假设。
Top9 安全日志记录和监控失败2017年以前,“安全日志记录和监控失败”叫做“日志记录和监控不足”,此类型已经扩展包括很多类型的漏洞。它指的是在没有日志记录和监控,将无法检测到漏洞,此类故障会直接影响可见性、事件报警和取证。
常见的漏洞:
不记录可审计的事件,例如登录、失败登录和高价值交易。
警告和错误不会生成、不充分或不清楚的日志消息。
不会监控应用程序和 API 的日志是否存在可疑活动。
日志仅存储在本地。
适当的警报阈值和响应升级流程没有到位或有效。
DAST 工具(例如 OWASP ZAP)的渗透测试和扫描不会触发警报。
应用程序无法实时或接近实时地检测、升级或警告主动攻击。
通过使用户或攻击者可以看到日志记录和警报事件,您很容易受到信息泄漏的影响(请参阅 A01:2021 – 损坏的访问控制)。
Top10 服务器端请求伪造这一漏洞是在行业调查中添加的,数据显示发生概率较低。