OWASP-TOP10-2017笔记

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做访问控制
  • 避免方法:保护不被注入任何形式的数据
你的打赏,我的干粮