OWASP(Open Web Application Security Project,开放Web应用安全项目)是一个致力于提高软件安全性的国际非营利组织。其发布的 OWASP Top 10 是最具影响力的Web应用安全风险清单,每3-4年更新一次,帮助开发人员、安全团队和企业识别和防范关键威胁。
1. 注入(Injection)
定义:攻击者通过向应用程序输入恶意数据,欺骗解释器(如SQL、OS、LDAP等)执行非预期命令。
常见类型:
- SQL注入(SQLi):操纵数据库查询,窃取或篡改数据。
-- 恶意输入:' OR '1'='1 -- 原SQL:SELECT * FROM users WHERE username = '[input]' AND password = '[input]' -- 攻击后:SELECT * FROM users WHERE username = '' OR '1'='1' AND password = '[input]'
- OS命令注入:通过系统调用执行任意命令(如
; rm -rf /
)。 - NoSQL注入:针对MongoDB等NoSQL数据库的攻击。
防护措施:
- 使用参数化查询(Prepared Statements)。
- 实施输入验证和输出编码。
- 最小化数据库权限(遵循最小权限原则)。
2. 失效的访问控制(Broken Access Control)
定义:系统未能正确限制用户权限,导致未授权访问敏感数据或功能。
典型场景:
- 水平越权:用户A访问用户B的数据(如
/user/profile?id=B
)。 - 垂直越权:普通用户访问管理员功能(如
/admin/deleteAll
)。 - 不安全的直接对象引用(IDOR):通过修改URL参数访问未授权资源。
防护措施:
- 实施基于角色的访问控制(RBAC)或属性基访问控制(ABAC)。
- 服务端校验所有请求,避免依赖前端控制。
- 使用随机ID(UUID)替代自增ID。
3. 加密机制失效(Cryptographic Failures)
定义:敏感数据因弱加密算法、错误配置或明文传输而泄露。
常见问题:
- 使用弱哈希算法(如MD5、SHA-1)存储密码。
- SSL/TLS配置错误(如支持旧版协议TLS 1.0)。
- 数据库/日志中存储明文信用卡号或密码。
防护措施:
- 使用强哈希算法(如Argon2、bcrypt、PBKDF2)。
- 强制HTTPS,禁用不安全的加密协议。
- 遵循PCI DSS等合规标准。
4. 不安全设计(Insecure Design)
定义:安全缺陷源于设计阶段,而非实现错误。
案例:
- 密码重置功能未验证用户身份(仅依赖安全问题)。
- 支付流程缺乏防重放机制,导致重复扣款。
防护措施:
- 采用威胁建模(如STRIDE)识别设计风险。
- 实施安全设计模式(如零信任架构)。
- 在需求阶段明确安全要求。
5. 安全配置错误(Security Misconfiguration)
定义:因默认配置、未打补丁或暴露敏感信息导致漏洞。
常见错误:
- 使用默认管理员密码(如admin/admin)。
- 开启调试模式(暴露堆栈跟踪)。
- 服务器目录列表未禁用,泄露文件结构。
防护措施:
- 自动化配置检查(如Ansible、Chef)。
- 定期扫描漏洞(如Nessus、OpenVAS)。
- 遵循CIS基准等安全配置指南。
6. 易受攻击的组件(Vulnerable and Outdated Components)
定义:使用含已知漏洞的第三方库/框架(如Log4j、Spring4Shell)。
风险:
- 攻击者利用公开漏洞(CVE)入侵系统。
- 供应链攻击(如恶意NPM包)。
防护措施:
- 使用软件成分分析(SCA)工具(如Dependabot、Snyk)。
- 定期更新依赖项,移除无用组件。
- 监控漏洞数据库(如CVE、NVD)。
7. 身份认证失效(Identification and Authentication Failures)
定义:身份验证机制存在缺陷,导致账户被盗或会话劫持。
问题示例:
- 弱密码策略(允许
password123
)。 - 会话固定攻击(Session Fixation)。
- 无多因素认证(MFA)。
防护措施:
- 强制强密码(至少12字符+特殊符号)。
- 实施MFA(如短信/OTP/生物识别)。
- 使用安全的会话管理(如JWT+短期有效期)。
8. 软件和数据完整性失效(Software and Data Integrity Failures)
定义:代码或数据在传输/存储过程中被篡改。
案例:
- 供应链攻击(如SolarWinds事件)。
- 自动更新未签名,导致恶意代码注入。
防护措施:
- 使用数字签名验证软件完整性(如GPG)。
- 限制CI/CD管道的访问权限。
- 监控依赖项的来源。
9. 安全日志与监控不足(Security Logging and Monitoring Failures)
定义:未能及时发现或响应攻击。
后果:
- 数据泄露数月后才察觉(如Equifax事件)。
- 无法追踪攻击路径。
防护措施:
- 集中化日志管理(如ELK、Splunk)。
- 设置实时告警(如SIEM系统)。
- 定期进行渗透测试和红队演练。
10. 服务端请求伪造(SSRF)
定义:诱骗服务器向内部系统发起恶意请求。
攻击场景:
- 访问云元数据(如AWS IAM凭据)。
- 扫描内网端口(如
http://internal-db:3306
)。
防护措施:
- 禁用不必要的URL协议(如
file://
,gopher://
)。 - 使用白名单限制请求目标。
- 隔离敏感后端服务。
总结:如何落地防护?
- 开发阶段:安全编码培训 + 威胁建模。
- 测试阶段:DAST/SAST扫描 + 渗透测试。
- 运维阶段:WAF + 日志监控 + 定期更新。
官方资源:OWASP Top 10 2021
工具推荐:Burp Suite(测试)、OWASP ZAP(扫描)、HashiCorp Vault(密钥管理)。
如需更具体的某类风险分析,可进一步探讨!