谷歌地图API密钥未授权利用造成的危害

发布时间:2020-01-22     来源:nosec   

       现如今各个网络服务都免不了要调用外部的API,例如谷歌地图API就是这样一个知名的付费服务,它可让其他应用从谷歌地图的数据库中搜索地图数据,嵌入自己的应用中。

       虽然它的部分服务在2018年初是免费的,但之后规划有所改变,所有API都需要配合API密钥或客户端id来使用。

       针对这些API密钥,系统具有一些安全配置可阻止外部恶意者用户去非法使用它。开发人员可在安全策略中配置这些安全措施。虽然这些API密钥都被设计为公共API密钥,并且不会对客户数据机密性/完整性产生任何影响,但仍然需某些安全设置来阻止未经授权的使用。以下是相关配置的列表:

       Referrers:通过定义HTTP请求的Referrer头来限制应用。可使用通配符规定多个域名/路径,例如*.example.com/*。但这里也易存在设置失误,因为如果是*example.com或example.com*,则攻击者可以通过ozguralpexample.com或example.com.ozguralp.com进行绕过。

       IP地址:如果密钥只用于一个应用,比如服务器到端的解决方案,那么这个配置可能比较适合。

       Android/iOS应用:如果打算通过移动应用使用密钥,那这个设置也适用。

       不过,客户端id比API密钥更安全,因为它在请求中使用一个额外的signature参数,是由应用后端通过私有签名密钥产生的,几乎不可能存在未授权缺陷。

       如果某些API密钥缺少对应的安全配置,则以下场景可能被攻击者利用:

       例如公司对API花费没有任何限制,则使用API服务可能会超出每月限额,又或者未经授权使用本服务产生额外费用,对公司造成经济损失。

       即使不存在费用问题,也有可能存在DoS缺陷。例如某些高度依赖地图的应用(Uber和Booking)可能会因地图而影响到应用的正常运行。

对于此类漏洞的补救,既可以参考以下措施一起进行,也可单独进行。

       正确使用IP、Referrer或应用限制。

       使用基于客户端的身份验证方案,而不是API密钥。

       禁用未被使用的API。



原文地址: https://nosec.org/home/detail/4036.html

网安时情快速查询

最新漏洞

更多