OWASP Top 10

wen IT资讯 26

本文目录导读:

OWASP Top 10

  1. A01:2021 - 失效的访问控制 (Broken Access Control)
  2. A02:2021 - 加密机制失效 (Cryptographic Failures)
  3. A03:2021 - 注入 (Injection)
  4. A04:2021 - 不安全的设计 (Insecure Design)
  5. A05:2021 - 安全配置错误 (Security Misconfiguration)
  6. A06:2021 - 易受攻击和过时的组件 (Vulnerable and Outdated Components)
  7. A07:2021 - 识别和认证失败 (Identification and Authentication Failures)
  8. A08:2021 - 软件和数据完整性失效 (Software and Data Integrity Failures)
  9. A09:2021 - 安全日志记录和监控失效 (Security Logging and Monitoring Failures)
  10. A10:2021 - 服务端请求伪造 (Server-Side Request Forgery, SSRF)
  11. 总结与建议

OWASP Top 10 是 开放式Web应用程序安全项目 发布的一份权威性文件,它列出了 Web 应用程序最关键的十大安全风险,这份列表每几年更新一次(最近一次重大更新是 2021 年),旨在帮助开发人员、安全团队和组织优先关注最普遍、最危险的安全漏洞。

以下是 2021 年版的 OWASP Top 10(当前最新版本)的详细解读:

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

  • 核心问题:用户(或系统)能够执行本不该被允许的操作,普通用户可以看到管理员的页面、修改其他人的数据,或者未经授权删除内容。
  • 常见案例
    • 通过修改 URL 中的 ID 来访问其他用户的账户(如 userid=123)。
    • 直接访问后台管理接口而未经过权限校验。
    • 特权提升:普通用户通过某种方式获得管理员权限。

A02:2021 - 加密机制失效 (Cryptographic Failures)

  • 核心问题敏感数据(如密码、信用卡号、个人身份信息) 在传输或存储时未得到充分的加密保护。
  • 常见案例
    • 使用 HTTP 而不是 HTTPS(明文传输)。
    • 使用过时、弱密码(如 MD5、SHA-1)存储密码。
    • 对敏感数据使用硬编码的密钥或默认密钥。
    • 数据在数据库中未加密(如信用卡号明文存储)。

A03:2021 - 注入 (Injection)

  • 核心问题:攻击者将恶意代码(如 SQL、OS 命令、NoSQL 查询)作为输入发送给解释器,并被成功执行。
  • 常见案例
    • SQL 注入:在搜索框或登录框输入 ' OR 1=1 --,绕过验证或窃取数据。
    • OS 命令注入:通过表单提交系统命令。
    • LDAP 注入XPath 注入 等。

A04:2021 - 不安全的设计 (Insecure Design)

  • 核心问题:与“代码层面的 bug”不同,这是指 架构或设计层面 的缺陷,在编写代码之前,业务流程或系统设计就存在安全风险。
  • 常见案例
    • 没有限制用户的请求频率(导致暴力破解密码成为可能)。
    • 没有设计“最小权限”原则。
    • 业务流程中存在逻辑缺陷(如:在结账时修改价格参数)。
    • 未设计好密码重置流程(如通过简单问题即可重置)。

A05:2021 - 安全配置错误 (Security Misconfiguration)

  • 核心问题:系统、框架、服务器或数据库使用了不安全的默认配置,或者运维人员配置不当。
  • 常见案例
    • 服务器开启了目录列表(如直接 http://example.com/uploads/ 能看到所有文件)。
    • 使用默认账户/密码(如 admin/admin)。
    • 未禁用不必要的 HTTP 方法(如 PUT、DELETE)。
    • 错误配置的 CORS(跨域资源共享)策略。
    • 云存储桶(如 AWS S3)设置为公开可访问。

A06:2021 - 易受攻击和过时的组件 (Vulnerable and Outdated Components)

  • 核心问题:使用了已知有安全漏洞的库、框架或软件版本(如 Log4j、Struts2)。
  • 常见案例
    • 未定期扫描依赖库(如 Java 的 JAR、Node.js 的 npm 包)。
    • 使用了 End-of-Life(生命周期终止)的操作系统或软件。
    • 未及时安装安全补丁。

A07:2021 - 识别和认证失败 (Identification and Authentication Failures)

  • 核心问题:登录和身份验证机制存在缺陷,导致攻击者可以冒充其他用户。
  • 常见案例
    • 允许使用弱密码(如 123456)。
    • 没有限制登录尝试次数(无暴力破解防护)。
    • 会话 ID 在 URL 中暴露,或被预测。
    • 未实现多因素认证。
    • 密码找回功能存在漏洞(如可以枚举用户名)。

A08:2021 - 软件和数据完整性失效 (Software and Data Integrity Failures)

  • 核心问题:软件更新、关键数据或 CI/CD 流水线未被验证完整性,导致被篡改。
  • 常见案例
    • 从不受信任的源下载依赖库(如 Typosquatting 攻击)。
    • 不安全的反序列化:攻击者通过篡改序列化对象(如 Java 的 Serializable、PHP 的反序列化)来执行恶意代码。
    • 软件更新包没有数字签名验证。

A09:2021 - 安全日志记录和监控失效 (Security Logging and Monitoring Failures)

  • 核心问题:系统无法记录关键安全事件,或者记录了但无人监控。
  • 常见案例
    • 未记录关键的登录失败、权限提升、异常操作。
    • 日志保存在本地、无备份、易被删除。
    • 未设置告警机制(如多次失败登录)。
    • 缺乏关键审计事件日志(如谁修改了配置文件)。

A10:2021 - 服务端请求伪造 (Server-Side Request Forgery, SSRF)

  • 核心问题服务端 从用户提供的 URL 获取资源时,可以被攻击者操纵去访问内部网络资源(如内网服务器、云服务元数据)。
  • 常见案例
    • 用户输入一个 URL,服务器去访问该 URL 并返回内容。
    • 攻击者输入 http://169.254.169.254/latest/meta-data/(AWS 云元数据)来获取云服务的密钥。
    • 攻击者让服务器去扫描内网中的其他服务器(http://192.168.1.1)。

总结与建议

  • 如果进行开发/研发:关注 A03(注入)A01(访问控制)A07(认证失败)A06(过时组件),这是最常见的问题。
  • 控制预算:关注 A05(配置错误)A10(SSRF),通常只需调整配置即可明显提升安全性。
  • 最易被忽视:关注 A04(不安全设计)A09(监控失效),它们决定了系统的整体安全水平和应急响应能力。
  • 行动建议
    1. 将 OWASP Top 10 纳入开发标准,在代码审查时对照检查。
    2. 使用 SCA(软件组成分析)工具 识别 A06 中的过时组件。
    3. 使用 SAST(静态应用安全测试)/ DAST(动态应用安全测试)工具 自动化扫描 A03A01
    4. 遵循安全编码规范,如使用参数化查询防止 SQL 注入,使用成熟的认证框架。

注意:OWASP Top 10 是“最关键的”,但不是“全部”,在具体业务场景中,还需要考虑 API 安全、容器安全、云安全等其他领域。

上一篇CORS配置安全

下一篇XSS防范

抱歉,评论功能暂时关闭!