OWASP公布了2017版本的TOP10的release版。新版变化还是比较大,紧跟当前安全技术趋势。
仔细读完了英文原版文件后,记录了一些笔记在这里,供参考。
主要变化
CSRF减少
- 首次出现于2007 TOP10
- 很多框架包含自动CSRF防御
- 开发人员对此的安全意识在提高
新加入 : 攻击检测与防御不足
- 大量应用和API缺少基本的检测、防御、响应能力来对抗自动和手工攻击
新加入 : 未保护的API
- 变化主要为适应新技术:云、容器、API
- 变化主要为适应软件开发过程中的自动化:敏捷开发、DevOps
- 变化主要为适应第三方库和框架
- SOAP/XML, REST/JSON, RPC, GWT, etc.
合并了两类 : A4和A7,新名称失效的访问控制
- 2007年第一次分拆成了两类
- Insecure Direct Object Reference 关注与数据
- Missing Function Level Access Control 关注与功能
删除了A10 :非法重定向
内容解析
A1 Injection
- SQL, LDAP, XPath, or NoSQL queries; OS commands; XML parsers, SMTP Headers, expression languages, etc.
- XXE:禁用解释器
- SQLi:绑定变量或使用存储过程,避免动态查询
- 避免方法:使用安全的API,避免使用解释器
- 避免方法:如果参数化API不可用,应仔细过滤特殊符号,OWASP’s Java Encoder是一个可选方案
- 避免方法:白名单,可参考OWASP’s ESAPI
A2 Broken Authentication and Session Management
- 授权凭据未散列或加密存储
- 授权凭据可猜测或重写
- Session ID暴露在URL
- Session ID易被会话定点攻击 session fixation attack ???
- Session ID没有过期时间,或注销后未失效
- Session ID在成功登录后没有轮转 ???
- 密码、Session ID和其他凭据明文发送
- 避免方法:单一一套强壮的授权和会化管理控制
A3 XSS
- 分成客户端XSS(DOM XSS) 和 服务器端XSS
- 避免方法:转义 参考OWASP XSS Prevention Cheat Sheet
- 避免方法:OWASP‘s AntiSamy
- 避免方法:CSP
A4 Broken Access Control
- 针对数据:应用和API使用了真实名称来生成页面,可猜到
- 针对功能:URL和功能名称容易被猜到
- 自动化工具一般测不出来,需要手工
A5 Security Misconfiguration
- 利用:默认账户、未使用的页面、未打的补丁、未保护的文件与目录
- 自动化扫描可发现
- 造成原因:软件过期未打补丁
- 造成原因:安装或启用了不必要的功能
- 造成原因:默认账户和密码未修改
- 造成原因:错误信息默认被显示
- 造成原因:应用服务器、框架、库、数据库没有安全配置
- 避免方法:流程控制部署过程
- 避免方法:流程控制软件更新,包括所有库和组件
- 避免方法:自动过程确认配置
A6 Sensitive Data Exposure
- 利用:中间人攻击,盗取明文数据
- 造成原因:未使用加密算法,或加密算法的密钥生成与密钥管理有缺陷
- 避免方法:为重要数据设置合理正确的加密算法
A7 Insufficient Attack Protection
- 检测攻击:非法行为(有害字符,有害频率)
- 响应攻击:日志记录detail,自动阻止某IP或某IP段,禁用或监控某些异常账户
- 快速打补丁:真实补丁或虚拟补丁
A8 CSRF
- 很多框架有CSRF防御措施:Spring、Play、Django、AngularJS
- 所有cookie设置SameSite=strict标志
A9 Using Components with Known Vulnerabilities
- 造成原因:开发者使用旧版本框架或库,甚至不关心版本
- 造成原因:缺少连续监控组件的版本
- 避免方法:连续监控版本,工具:versions、DependecyCheck、retire.js
- 避免方法:连续监控公开漏洞库
A10 Underprotected APIs
- 测试方法:与普通功能一样,注入、认证、访问控制、加密、配置等
- 避免方法:确保客户和API间通信是安全的
- 避免方法:确保强加密
- 避免方法:确保解析器抗攻击
- 避免方法:对API做访问控制
- 避免方法:保护不被注入任何形式的数据