API让世界上的生意变得容易,黑客也是这么想的。在企业数字化转型如火如荼的今天,API已经远远超出了技术范畴。传统企业的互联网业务创新和数字化转型,离不开API经济或API战略。API连接的不仅仅是系统和数据,还有企业职能部门、客户和合作伙伴,乃至整个商业生态。与此同时,日益严峻的安全威胁使得API成为网络安全的下一个前沿阵地。API让一切变得更容易,从数据共享到系统连接再到关键功能的交付,但API也让包括恶意机器人在内的攻击者更容易实施攻击。API的激增促使网络犯罪分子越来越多地利用API安全漏洞进行欺诈和数据盗窃。下面,我们将探讨五个容易被黑客利用的API漏洞,并分享安全专家给出的缓解和加固建议。1、太容易被发现了。如果你是一名黑客并打算攻击一家企业,那么首先要做的就是识别尽可能多的API。我先按常规方式使用目标应用,在浏览器中打开web应用或者在手机上下载安装手机应用,然后使用拦截代理监听通信。拦截代理能够捕获浏览器或移动应用程序向后端Web服务器发出的所有请求,从而允许攻击者对所有可用的API端点进行分类。例如,大多数API都将API/V1/login作为身份验证端点。如果目标也是移动应用程序,则解压缩应用程序并查看应用程序内部可用的API调用。考虑到所有可能的活动,攻击者可以搜索常见的错误配置或未正确保护用户数据的API。最后,攻击者寻找API文档。一些组织为第三方发布API文档,但对所有用户使用相同的API端点。有了适当的端点清单,攻击者可以测试标准用户行为和异常行为测试,并且有两种方法可以找到有趣的漏洞。解决方法:为使攻击者更难发现API,请确保通过仅允许有效用户访问的权限管理来控制对API文档的访问。虽然在移动应用程序上固定证书并不能完全隐藏API端点并且并不完美,但它确实为攻击增加了一个额外的步骤。对Web服务器的API请求应该尽可能地混淆和控制。2.过于详细的错误信息最近,攻击者企图接管账户的事件呈上升趋势。过于“详细”的错误消息往往会使此类攻击更容易。一条冗长的错误消息会引导攻击者了解他们需要进行哪些更改才能伪装成合法请求。该API专为低负载下的高速交易而设计,允许攻击者使用高性能系统找到有效账户,然后尝试登录并更改密码进行利用。解决方案:不要以用户体验为盾牌。一些看似有益于用户体验的做法,未必有益于安全。系统返回的错误信息不应包括错误的用户名或错误的密码,甚至错误信息的类型(错误的用户名或密码)。查询数据的错误信息也是如此,如果查询/搜索格式错误或由于某种原因无法执行,它应该返回最“无营养”的错误信息:“糟糕,出了什么问题”。3.参数太多当攻击者通过API调用遍历攻击系统时,他们必须弄清楚要发送什么来获取数据。攻击者“相信”系统越复杂,出错的可能性就越大。一旦攻击者识别出API,他们将对参数进行编目,然后尝试访问管理员(垂直提权)或其他用户(水平提权)的数据以收集额外数据。通常,太多不必要的参数会暴露给用户。在最近的一个研究项目中,我们对目标服务的API调用返回了大量数据,其中许多是不必要的,例如支付网关处理器密钥和可用的折扣信息。这些“奖励消息”允许攻击者更好地理解这些API调用的上下文和语法。攻击者无需太多想象力就可以想出下一步该做什么。这些附加参数为攻击者提供了丰富的攻击数据集。解决方案:将用户看到的内容限制在需要的范围内,限制关键数据的传输,并使数据查询结构未知,这样攻击者就很难暴力破解他们知道的参数。4.太多数据同样,有这么多可用参数,收集数据将成为下一步显而易见的事情。许多企业系统支持匿名连接,并倾向于泄露普通用户不需要的额外数据。此外,许多企业更喜欢存储可直接访问的数据。安全专家正在努力应对API请求经常暴露数据存储位置的挑战。例如,当我查看安全摄像头的视频时,我可以看到信息来自AmazonS3存储库。通常,那些S3存储库没有得到很好的保护,任何人都可以检索数据。另一个常见的数据挑战是数据过载,许多企业就像冬天来临前的花栗鼠,存储的数据远远超过他们的需要。很多过期的客户数据没有商业价值和保存价值,但一旦泄露,会给企业带来巨大的品牌和合规风险。解决方法:对于存储用户数据的企业,不仅是PII或PHI,必须进行彻底的数据审查。检查存储的数据后,应开发和测试数据访问规则。确保可以匿名访问的数据不涉及任何敏感数据。5.安全设计太少多年来,应用设计总是以功能性和易用性为主,很少考虑安全性。根据许多CISO的说法,API安全性尤其被低估或完全被排除在安全设计过程之外。通常是在开发者完成开发部署,API上线后,频繁被攻击,死羊之后才能修复问题。安全性,包括API安全性,需要成为产品设计的一部分,并且应该作为首要考虑因素之一实施,而不是事后才考虑。解决方案:审查应用程序的安全架构是迈向安全系统的重要的第一步。请记住,API允许攻击者更有效地攻击或利用您的系统。安全设计的目标是使API成为用户而非攻击者的高效工具。以上仅列举了一些常见的API漏洞,总而言之,在软件开发生命周期的早期阶段讨论安全问题最为重要。小的改进可以带来巨大的好处,避免API攻击造成的巨大财务和品牌损失。【本文为专栏作者“安安牛”原创文章,转载请通过安安牛(微信公众号id:gooann-sectv)获得授权】点此查看作者更多好文
