OWASP(Open Web Application Security Project)是一个开源的、非盈利的全球性安全组织。是指web应用程序安全风险。2021年web漏洞较以往有一些变化。
2021top 10总结如下:
A01:2021-Broken Access Control 访问控制失效
A01:访问控制失效(Broken Access Control)从第五位上升到了第一位。94%的应用程序都经过了某种形式的访问控制失效测试。提供的数据表明,超过94%的app都经历过某种形式的越权访问控制测试。对应到失效的访问控制有34个CWE,比任何其它类型在应用中出现的次数都多。
基本描述
失效访问控制就是执行策略,使用户不能超出其预期权限行事。如果策略失败就会导致未经授权的信息被暴露、修改或者销毁相关数据,更有甚者在用户限制之外执行业务功能。另外,通俗点讲失效的访问控制其实就是一种越权操作行为,这种越权主要表现为水平越权和垂直越权行为。
加固建议
除了公共资源外,默认禁止访问; 确保以尽可能少的方式提供给用户、程序或进程访问权限,分清权限问题。 禁止列出WEB服务器目录,确保元数据和备份文件不在根目录; 限制访问API的频率,使自动化扫描攻击工具的损害最小化; token应该在登出后立刻失效; 加强引用参数的封装、加密; 记录所有的访问控制事件;
A02:2021-Cryptographic Failures加密失败
风险描述
? 由于使用弱加密、未加密、过时的哈希函数(例如 MD5 或 SHA1)、默认加密密钥或重复使用弱加密密钥、缺少二次身份校验,而导致系统泄露敏感信息,造成损失。
加固建议
使用随机加密; 避免使用不安全的加密算法; 始终使用二次身份验证,而不是只进行加密; 使用安全协议传输数据;
A03:2021 注入
风险描述
恶意攻击者可通过SQL注入漏洞构造SQL注入语句,对服务器端返回特定的错误信息来获取有利用价值的信息,甚至可篡改数据库中的内容并进行提权。
加固建议
对产生漏洞模块的传入参数进行有效性检测,对传入的参数进行限定; 当用户输入限定字符时,立刻转向自定义的错误页,不能使用服务器默认的错误输出方式; 对标签进行危险字符过滤或转义,禁止(’、"、+、%、&、<>、()、;、and、select等)特殊字符的传入; 加密数据库内存储信息; 与数据库链接并访问数据时,使用参数化查询方式进行链接访问。
A04:2021 不安全设计
? 我们所熟悉的应用程序未容错也是属于这种,以一个登录界面为例,如果登录的时候涉及到内容的加密和解密.那么登录时用非常规手段传了一串非法的字符串进行登录.在解密的时候可能会出现一些异常,如索引越界,这样就会把异常的英文内容直接提示给页面了。应该在编写代码的时候在登录接口中处理异常的时候, 要根据不同的异常进行处理. 业务的异常, 如密码错误,账户冻结等, 就按业务异常提示.其他意外的错误, 则统一给提示语, 屏蔽掉异常的英文内容,防止通过攻击者构造不同的。
加固建议
建立并使用安全设计库或安全组件; 分离系统层和网络层; 将威胁建模用于关键身份验证、访问控制、业务逻辑和关键数据流;
A05:2021 安全配置错误
安全配置错误可以发生在一个应用程序堆栈的任何层面,包括网络服务、平台、Web服务器、应用服务器、数据库、框架、自定义代码和预安装的虚拟机、容器和存储。自动扫描器可用于检测错误的安全配置、默认帐户的使用或配置、不必要的服务、遗留选项等。
预防方法
使用可重复的加固程序,但使用不同的凭据; 最小化原则。系统不包含任何非必须的特性,组件,文档,删除或不安装未使用的功能和框架; 通过分段、容器化或云安全组 (ACL) 在组件或用户之间提供有效且安全的分离; 向客户端发送安全指令; 使用自动化进程以验证所有环境中配置的有效性;
A06:2021 易受攻击和过时的组件
链接地址:https://owasp.org/Top10/A06_2021-Vulnerable_and_Outdated_Components/
风险描述
管理员不知道使用的所有组件的版本,无法及时了解到组件的安全状况; 使用易受攻击的,不再支持,或是过时的组件。包括OS, web服务器,DBMS,APIs和所有组件,运行环境、库。 没有周期性扫描漏洞,没有关注所使用组件的安全公告; 没有及时修复或升级平台,框架,依赖; 软件开发者没有测试升级,更新,补丁的兼容性.
预防方法
删除不再使用的依赖,不必须的功能,组件,文件,文档; 持续记录当前用的组件和依赖的版本。持续关注CVE, NVD上的关于对应组件的漏洞,订阅关于所使用组件的邮件通知。 仅通过安全链接,从官方来源获取组件。 关注不再维护的库和组件,如果无法打补丁,考虑部署虚拟补丁。
A07:2021 认证和授权失败
?
? 通过错误使用应用程序的身份认证和会话管理功能,攻击者能够破译密码、密钥或会话令牌,或者利用其它开发缺陷来暂时性或永久性冒充其他用户的身份。确认用户的身份、身份验证和会话管理对于防止与身份验证相关的攻击至关重要。
预防方法
避免使用默认密码; 进行弱密码检查; 确保注册,凭据恢复和API加固以抵御账户枚举攻击; 限制或延迟失败的登录尝试,并记录所有失败尝试并在发动攻击时报警; 使用服务端内置的会话管理,确保对于每次登录生成随机会话ID。会话ID不应该在URL中,且应该及时销毁
A08:2021 软件和数据完整性故障
? 软件和数据完整性故障与不能防止完整性违规的代码和基础设施有关。 一个例子是应用程序依赖来自不受信任的来源、存储库和内容交付网络 (CDN) 的插件、库或模块。 不安全的 CI/CD 管道可能会导致未经授权的访问、恶意代码或系统受损。 最后,许多应用程序现在包括自动更新功能,其中更新在没有充分完整性验证的情况下被下载并应用于以前受信任的应用程序。 攻击者可能会上传自己的更新以分发并在所有安装上运行。 另一个例子是对象或数据被编码或序列化为攻击者可以看到和修改的结构,容易受到不安全的反序列化。
加固建议
使用数字签名或类似机制来验证软件或数据来自预期来源且未被更改; 确保使用安全工具验证组件不包含已知漏洞; 确保未签名或未加密的序列化数据不会在没有检查或数字签名的情况下发送到不受信任的客户端;
A09:2021 安全日志记录和监控失败
它指的是在没有日志记录和监控,将无法检测到漏洞,此类故障会直接影响可见性、事件报警和取证。
预防方法
确保登录、访问控制,服务器验证失败和成功等事件均会被日志记录,同时记录足够多的操作以确定可疑账号与可疑行为。 保存足够长时间的日志(至少留存6个月)便于分析。 确保日志的格式,便于阅读与管理。 对日志进行备份存储; 建立有效的监管和报警机制,使得可疑活动能被及时检测和处置。
A10:2021 服务端请求伪造(SSRF)
? SSRF(Server-Side Request Forgery:服务器端请求伪造)是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF是要目标网站的内部系统。(因为他是从内部系统访问的,所有可以通过它攻击外网无法访问的内部系统,也就是把目标网站当中间人)。
加固建议
验证所有客户端提供的数据; 使用白名单强制执行 URL 架构、端口和目标; 不向客户端发送原始响应; 禁用 HTTP 重定向; URL一致性,避免 DNS 重新绑定和“检查时间、使用时间”(TOCTOU) 竞争条件等攻击。
?
|