API的安全危机
点击蓝字关注我们
安全牛评
互联网商业创新和传统企业数字化转型都离不开API经济或API战略,可以说,API就是传统行业价值链全面数字化的关键环节,API连接的已经不仅仅是系统和数据,还有企业内部职能部门、客户和合作伙伴,甚至整个商业生态(行业和市场)。但是API面临的安全威胁,却很容易被决策者忽视或轻视。本文介绍了API面临的安全威胁,以及相关软件开发、运营和保护解决方案。
API为软件和开发社区带来许多便利和好处,例如文档完备、可公开获取、标准化、无处不在、高效且易于使用等。现在,攻击者正利用API来实施自动化的“高效攻击”,从Web应用程序到云计算服务都是目标。例如,我们知道开发人员可以使用API将诸如Web注册表单之类的资源连接到许多不同的后端系统。但是,包括后端更新等任务的灵活性也为自动攻击提供了机会。
API的安全难题或者说悖论在于,尽管大多数安全从业者会建议隐藏资源减少暴露面和攻击面,但业务上成功部署的API却倾向使资源更加开放和可用。API的安全困局实际上也是现代IT面临的一个共性问题。对于安全团队而言,这意味着制定平衡的、良好的API风险缓解策略尤为重要。
图示:API面临的安全威胁
OWASP清单:十大API安全风险
除了专注于通用软件应用程序的安全风险外,OWASP还为API开发人员提供了有用的指导,以降低其实施中的安全风险。鉴于OWASP组织在软件社区中的突出地位,我们在这里有必要回顾一下2019年OWASP 10大API安全风险(内容取自OWASP网站):
API倾向于暴露那些处理对象识别的端点,造成了广泛的攻击面访问控制问题。在每个能够访问用户输入数据的功能中,都应考虑对象级别授权检查。
身份验证机制通常实施不正确,从而使攻击者可以破坏身份验证令牌或利用实施缺陷来临时或永久地假冒其他用户的身份。损害系统识别客户端/用户的能力会整体损害API安全性。
开发人员倾向于公开所有对象属性而不考虑其个体敏感性,依靠客户端执行数据过滤并显示。
通常,API不会对客户端/用户可以请求的资源大小或数量施加任何限制。这不仅会影响API服务器的性能,从而导致拒绝服务(DoS),而且还为诸如暴力破解之类的身份验证漏洞敞开了大门。
具有不同层级、分组和角色的复杂访问控制策略,以及管理功能和常规功能之间的模糊不清,往往会导致授权缺陷。通过利用这些问题,攻击者可以访问其他用户的资源和/或管理功能。
将客户端提供的数据(例如JSON)绑定到数据模型,而没有基于白名单的适当属性过滤,通常会导致批量分配。无论是猜测对象属性、浏览其他API端点、阅读文档或在请求有效负载中提供其他对象属性,都是攻击者可以修改权限之外的对象属性。
最常见的安全配置错误是不安全的默认配置、不完整或临时配置、开放的云存储、错误配置的HTTP标头,不必要的HTTP方法、跨域资源共享(CORS)以及包含敏感信息的冗长错误消息导致的。
当不受信任的数据作为命令或查询的一部分发送到解释器时会发生注入缺陷,例如SQL、NoSQL的命令注入等。攻击者的恶意数据可能会诱使解释器执行非预期的命令,或未经授权访问数据。
与传统的Web应用程序相比,API倾向于公开更多的端点,这使得文档的准确性和及时更新显得尤为重要。健康的主机和最新的API版本能够有效减轻诸如API版本过期以及调试端点暴露之类的安全问题。
日志和监控不足,再加上事件响应的缺失或无效集成,使攻击者可以进一步攻击系统,长期驻留,并横向移动到更多系统以篡改、提取或破坏数据。大量入侵调查研究表明,检测到入侵的平均时间超过200天,而且入侵检测警告通常来自外部第三方,而不是企业内部安全流程或监控来检测。
API的五个通用安全要求
正如OWASP清单所示,网络安全社区开始发现,面向公众的API往往暴露出大量常见的规范问题。以下是针对API的五项通用网络安全要求,这些要求适用于从传统软件到互联网新应用的各个领域:
能见度
关于API可见性的谚语是:知识就是力量。应用程序开发人员和用户需要知道正在发布哪些API、如何以及何时更新它们、谁在访问它们以及如何访问它们。了解用户的API使用范围是确保API安全的第一步。
访问控制
API访问权限通常是不受严格控制的,这可能导致意外暴露。确保向不同用户授予适当的API访问权限是一项至关重要的安全要求,访问者必须与企业的身份和访问管理(IAM)系统进行协调。
Bot缓解措施
在某些环境中,多达90%的应用程序流量(例如,账户登录或注册、购物车结账)是由自动化Bot生成的。必须了解和管理流量配置文件,包括区分好Bot和坏Bot,防止自动攻击的同时又不会阻止合法流量。有效的补充措施包括实施Bot白名单、黑名单和速率限制策略,以及特定于用例和相应API端点的地理围栏。
防止漏洞利用
API通过消除Web表单或移动应用程序来简化攻击过程,从而使攻击者更容易利用目标漏洞。因此,保护API端点免遭业务逻辑滥用和其他漏洞利用是关键的API安全缓解要求。
数据防泄漏
防止由于编程错误或安全控制漏洞而产生的API暴露或非授权访问,是防止数据泄露或丢失的一项至关重要的安全要求。许多API攻击都是专门为获取对后端服务器和系统提供的关键数据的访问而设计的。
API社区继续致力于就最佳安全方法达成更标准化的协议。例如OAUTH之类的行业组织提出了非常有用的API安全性标准要求。最可能的进展是,软件安全社区将在未来几年中继续完善其对各种API安全要求的理解和见解。因此,我们有望看到这一领域的持续发展。
API安全方法
API滥用实例
API的自身设计决定了它是无状态的,假定初始请求和响应都是独立的,且并包含完成任务所需的所有信息。无论是直接访问,或作为移动或Web应用程序的一部分对API进行调用,都可以改善用户体验和整体性能。但攻击者也很容易编写脚本并自动执行攻击,如以下两个示例:
账户接管和浪漫欺诈:Zoosk是一个著名的约会应用程序。攻击者反编译了Zoosk应用程序以发现账户登录API。然后,他们使用自动化攻击工具包执行账户接管攻击。在某些情况下,被盗用的账户被用来与其他Zoosk用户建立发展个人关系网络,当家庭成员突然死亡或生病时,攻击者会借机向联系人索要钱财实施诈骗,毫无戒心的用户通常会将钱捐给攻击者。在实施Cequence之前,Zoosk的感情诈骗平均每次作案获取的收益高达1.2万美元。现在,随着API安全的加强,此类攻击几乎消失,Zoosk不但大大增强了用户的信心还提高了品牌知名度。
账户接管和财务欺诈:API成为自动攻击目标的另一个案例是某大型金融服务客户。该客户发现攻击者锁定其移动应用程序登录API环节来执行账户接管。如果成功,攻击者可通过开放资金转账(OFX)API进行转账,实施财务欺诈。而OFX是用于在金融服务社区内进行资金转移的行业标准API,因此,这些API是公开可用的,并且文档齐全,以方便使用。
API的无处不在和无状态本质在许多方面都是有益的,但是它们也带来了传统安全技术无法解决的众多挑战。API没有客户端组件,因此传统的防御技术(如Captchas或JavaScript)和移动SDK工具无法有效地防止自动攻击。通常,重定向和cookie分配并没有指定的浏览器或者移动应用,结果是API和关联的应用程序未受到充分保护。
相关阅读
合作微信:aqniu001
投稿邮箱:editor@aqniu.com