OWASP
OWASP开放式Web应用程序安全项目(open web application security project)每年会通过确定企业面临的最严重的10类威胁,以此提高人们对Web应用程序安全的关注度。
2021年
A01 失效的访问控制
未对通过身份验证的用户实施恰当的访问控制。攻击者可以利用这些缺陷访问未经授权的功能或数据,例如:访问其他用户的帐户、查看敏感文件、修改其他用户的数据、更改访问权限、跨站请求伪造CSRF等。
防御措施:
- 除公有资源外,默认访问拒绝
- 使用一次性的访问控制机制,最小化跨资源共享(CORS)的使用
- 对任何来自不受信源所使用的所有对象进行访问控制检查
- 避免在url或网页中直接引用内部文件名或数据库关键字
- 验证用户输入和url请求,拒绝包含./ …/的请求
- 模型访问控制必须强制执行记录所有权,而不是授予用户创建、查看、修改或删除任何信息的权限
- 在日志中记录失败的访问控制,并在适当时向管理员告警
- ……
A02 加密机制失效
加密出现故障导致敏感信息泄漏
防御措施:
- 使用安全性更高的密钥或加密算法
- 不要使用传统协议HTTP、FTP等来传输敏感数据
- 对于没有必要存储的敏感数据,应当尽快清除
- 建议实施经过身份验证的加密,而不是仅仅使用加密
- 使用具有延迟因子的稳健、加盐和自适应哈希算法来存储密码
- ……
A03 注入
注入攻击漏洞,例如SQL、OS、LDAP注入,这类漏洞通常发生在当不可信的数据作为命令或者查询语句的一部分,被发送给处理程序或解释器的时候,攻击者发送的恶意程序可以欺骗处理程序和解释器,以执行计划外的命令或者访问未经授权的数据。
防御措施:
- 使用安全的API,避免使用解释器
- 对输入的特殊的字符进行ESCAPE转义处理
- 使用白名单来规范化的输入验证方法
- 在查询中使用LIMIT和其他SQL控件,以防止在SQL注入的情况下大量披露记录
- ……
A04 不安全设计
在前期设计体系结构时存在缺陷
防御措施:
- 与应用安全专业人员建立并使用安全的开发生命周期,以帮助评估和设计与安全和隐私相关的控制
- 限制用户或服务的资源消耗
- 根据暴露和保护需要,对系统层和网络层进行分层
- 对关键验证、访问控制、应用程序逻辑和基本流程进行威胁建模
- ……
A05 安全配置错误
好的安全需要对应用程序、框架、应用程序服务器、Web服务器、数据库服务器和平台,定义和执行安全配置,由于许多默认配置并不是安全的,因此必须定义、实施和维护这些配置。这包含了对所有软件保持及时地更新,包括所有应用程序的库文件。
防御措施:
- 不启动或安装不必要的功能(例如:不必要的端口、服务、网页、账户或权限)
- 移除或不安装不适用的功能和框架
- 及时更新软件,安全配置系统、程序、框架、服务器
- 搭建最小化平台,该平台不包含任何不必要的功能、组件、文档和实例
- ……
A06 自带缺陷和过时的组件
组件不安全而导致风险。库文件、框架和其他软件模块等组件几乎以程序的全部权限运行。如果一个带有漏洞的组件被利用,这种攻击可以造成更为严重的数据丢失或服务器被接管。应用程序使用带有已知漏洞的组件会破坏应用的防御系统,并使得一系列的攻击和影响成为可能。
防御措施:
- 移除不使用的依赖、不需要的功能、组件、文件和文档
- 仅从官方渠道安全的获取组件,并使用前面机制来降低组件被篡改或加入恶意漏洞的风险
- 监控那些不再维护或者不发布安全补丁的库和组件。如果不能打补丁,就考虑部署虚拟补丁来监控、检查或保护
- 定期做漏洞扫描和订阅使用组件的安全公告
- ……
A07 身份识别和身份验证错误
现在包含与识别问题相关的 CWE。当攻击者获取用户信息、密码恢复、ID 会话和其他登录凭据时,就会产生安全问题。例如弱密码暴力破解等。
防御措施:
- 实施弱密码的检查,如测试新设定或变更的密码是否存在于前10000个最差密码清单
- 在可能的情况下,实施多因素认证来防止自动化撞库攻击,暴力破解,以及遭窃认证咨询被重复利用的攻击
- 不要交付或部署任何预设的认证凭证,特别是管理者
- 限制或增加登入失败尝试的延迟
A08 软件和数据完整性故障
软件更新、重要数据和 CI/CD 程序的完整性,若没有对其进行验证,就会增加恶意代码、系统受损或未经授权访问的风险。
防御措施:
- 使用数字签名保证数据完整性
- 使用受信任的存储库
- 使用软件供应链安全工具来确保组件不含已知漏洞
- 对代码和配置更改进行审核以最大限度减少恶意代码或配置引入软件管道的可能性
- 有必要确保 CI/CD 工作流具有所需的分段、访问控制和参数化,以在整个设置和部署操作过程中保护代码完整性。
- 未经签名或未加密的编译数据不应发送给不受信任的客户端,除非已进行完整性测试或数字签名以识别数据更改或重复。
- ……
A09 安全日志和监控故障
如果不进行日志记录和检测,或者由于时间间隔太短无法全面跟踪,就无法发现违规行为,安全也就无法被保障。
防御措施:
- 确认所有身份验证、访问安全系统和服务器端数据验证问题都记录有足够的用户信息,以检测可疑或欺诈帐户,并存储足够长的时间以进行延迟的全面调查。
- 确保以日志管理系统可使用的格式创建日志。
- 创建或应用用于事件恢复和响应工作的策略,例如 NIST 800-61r2 或更高版本。
- 确保对日志数据进行适当编码,以避免对监控系统的入侵或网络威胁。
- 建立有效的监控和警报
- 建立和采用事故应对和恢复计划
A10 服务端请求伪造(ssrf)
一旦web应用程序在获取远程资源时没有验证用户提供的URL,就会出现ssrf缺陷
【每天学习一点新知识】今天谈谈SSRF_RexHarrr的博客-CSDN博客
防御措施:
- 执行默认拒绝访问规则
- 在隔离的网段中设置多个远程资源访问功能的网段,以减少ssrf的影响
- 检查和检验所有客户端的输入
- 使用白名单
- 禁用HTTP重定向
- 在 (TOCTOU) 情况下,为了防止 DNS 重新映射和“检查时间、使用时间”等攻击,最好注意 URL 的准确性。
- ……