OSWAP中关于API安全的10个问题警示
API1-失效的对象级授权:攻击者通过破坏对象级别授权的API,来获得未经授 权的或敏感的数据,比如通过可预测订单ID值来查询所有订单信息。 ■ API2-失效的用户认证:开发者对API身份认证机制设计存在缺陷或无保护设 计,导致身份认证机制无效,比如弱密码、无锁定机制而被暴露破解、Token未校验或 Token泄露导致认证机制失效等。 ■ API3-过度的数据暴露:在API响应报文中,未对应答数据做适当的过滤,返回 过多的、不必要的敏感信息。比如查询用户信息接口时却返回了身份证号、密码信 息;查询订单信息时也返回了付款银行卡号、付款人地址信息等。 ■ API4-缺乏资源和速率控制:在API设计中,未对API做资源和速率限制或保护 不足,导致被攻击。比如用户信息接口未做频次限制导致所有用户数据被盗;文本翻 译接口没有速率限制导致大量文件上传耗尽翻译服务器资源。 ■ API5-失效的功能级授权:与API1类似,只不过此处主要指功能级的控制,比如 修改HTTP方法,从GET改成DELETE便能访问一些非授权的API;普通用户可以访问 api/userinfo的调用,直接修改为api/admininfo,即可调用管理类API。 ■ API6-批量分配:在API的业务对象或数据结构中,通常存在多个属性,攻击者 通过篡改属性值的方式,达到攻击目的。比如通过设置user.is_admin和user.is_manager 的 值 提 升 用 户 权 限 等 级; 假 设 某 API 的 默 认 接 口 调 用 参 数 为 {"user_name":"user","is_admin":0}, 而 恶 意 攻 击 者 修 改 请 求 参 数, 提 交 值 为 {"user_name":"attacker","is_admin":1},通过修改参数is_admin的值来提升为管理员权 限。 ■ API7-安全性配置错误:系统配置错误导致API的不安全,比如传输层没有使用 TLS导致中间人劫持;异常堆栈信息未处理直接抛给调用端导致敏感信息泄露。 ■ API8-注入:与OWASP Web安全注入类型相似,主要指SQL注入、NoSQL注 入、命令行注入、XML注入等。 ■ API9-资产管理不当:对于API资产的管理不清,比如测试环境的、已过期的、 低版本的、未升级补丁的、影子API等接口暴露,从管理上没有梳理清楚,导致被黑 客攻击。 ■ API10-日志记录和监控不足:对API缺失有效的监控和日志审计手段,导致被黑 客攻击时缺少告警、提醒,未能及时阻断。比如没有统一的API网关、没有SEIM平 台、没有接入Web应用防火墙等。