api流量约占全球互联网流量的83%,是数字经济的“关键基础设施”,同时也是最热门的攻击目标之一。随着云计算、物联网、移动互联网和人工智能技术的快速普及,api安全已经成为当下企业和互联网面临的最严峻的网络安全挑战之一。
面对日趋恶化的api安全态势,安全团队需要重点排查和缓解以下五个api关键漏洞:
1弱认证
身份验证用于核实用户或设备是否是其声称的身份,防止没有正确权限的人员或设备访问信息和资源。如果身份验证流程容易被绕过或入侵(例如弱密码或容易猜到的密码),攻击者可以临时甚至永久伪装成合法用户。
措 施
2错误的对象级授权
api通常公开用于访问资源的对象。当这些端点上没有正确实施访问控制时,攻击者可以查看或操作他们不应该访问的资源。此漏洞影响所有类型的api架构,包括soap、rest和graphql。
例如,攻击者更改请求的用户id,以查看是否返回有关其他用户的信息,这可能导致未经授权访问数据。值得注意的是,2019年uber的api中发现了此漏洞,该api使司机只需更改用户id即可访问其他司机的数据。如果数据修改函数也缺乏正确实施的授权检查,攻击者还可能更改或删除数据,甚至完全接管另一个用户的帐户。
措 施
对象标识符应该是随机且不可预测的,而不是可以轻松猜测的可预测的顺序值。服务器端检查还应验证以下内容:
※用户有权访问请求的对象。
※用户拥有对对象执行特定操作所需的权限。
3注入漏洞
当api收到用户提交的数据但在处理请求之前未对其进行分析和验证时,攻击者可以发送恶意数据或命令来触发注入攻击。数据库查询和操作系统命令都可以通过xml、json、跨站点脚本(xss)、sql和nosql注入来访问数据或未经授权执行恶意命令。
措 施
与其创建自己的函数来验证和清理传入数据,不如调用专业白名单库来确保数据是所需的类型和长度,对每个传入请求运行这些检查,并删除意外的字符、参数以及已知的注入命令。
4过多的数据暴露
数据暴露是api的常见漏洞,即api响应请求时返回的数据远远多于完成请求所需的数据。这通常是因为开发人员编写从表中返回整行数据的代码比仅返回所需特定字段更简单。例如,消息传递应用程序上的个人资料页面可能仅仅会显示某人的姓名和年龄,但api请求往往会返回存储的有关该用户的所有信息,而不仅仅是根据其出生日期计算的该用户的姓名和年龄。
尽管应用程序可能会过滤响应并仅显示姓名和年龄,但攻击者很容易读取和收集请求中返回的其他详细信息,包括个人身份信息,例如出生日期、电子邮件地址和位置。这种敏感数据的公开可能会违反数据访问策略规则和相关数据安全法规。
措 施
api响应仅返回满足请求所需的数据,具体来说就是api进行的数据库查询应仅获取相关记录和字段。api文档应说明满足请求所需的数据,确保数据库查询与请求的字段和记录匹配。请记住,客户端应用只能筛选用户可见的数据,而不能筛选它接收的数据。
5安全配置错误
api运行在复杂的基础架构上,资源配置会根据需求自动扩展和缩减。如果未在每一层正确配置安全控制,则敏感数据和系统可能会面临风险。常见的错误配置包括未修补的设备和应用程序、不安全的默认配置、未加密的数据传输以及开放和不安全的云存储和服务。
措 施
api应仅公开https端点。但是,由于https端点对互联网开放,因此正确设置速率限制,控制请求速率和请求的资源数量也很重要,否则将受到dos和暴力攻击。禁用未使用的http方法(如trace),并添加相应的http响应安全标头,如x-content-type-options:nosniff,以防止xss和x-frame-options:deny以防止点击劫持尝试。此外,api请求生成的任何错误消息都应仅包含最少的信息,以确保不会泄露有关系统的敏感数据,例如关于错误的详细技术信息。
发表评论