在上期API安全知识文章中,小编对API以及API安全的定义进行了一系列的阐述,本期文章将带大家深入了解API安全的相关知识~
Q1:为什么需要API安全?为什么必须将API安全放在首位?
企业使用API来连接服务和传输数据。许多重大数据泄露问题,其幕后原因都在于API遭到破坏、泄露或攻击。受到攻击的API会让敏感的医疗、金融和个人数据公之于众,被不法分子利用。不过,并不是所有数据都是一样的,保护数据更不能以不变应万变。如何实施 API防护,取决于传输的数据种类。
在过去的几年中,由于数字化转型以及API在移动应用程序和物联网中的核心作用的推动,API的发展已实现了天文数字的增长。这种增长使API安全成为首要问题。
Gartner在其“如何建立有效的API安全策略”报告中预测,“到2022年,API滥用将成为导致企业Web应用程序数据泄露的最常见攻击媒介。” 为了保护自己免受API攻击,Gartner建议采用“在API开发和交付周期中采用连续的方法来实现API安全,并在API中直接设计安全性”。
考虑到它们在数字转换中所扮演的关键角色,以及对它们提供的敏感数据和系统的访问,API保证了一种专门的安全性和合规性方法。
Q2:API安全需要有什么?
我们一般不会把大额的钱存放在床垫之下。大多数人都会把钱存到可信的环境(银行)中,而采用分开的方式授权和验证支付。API安全防护与之相似,所以,我们需要一个具有验证和授权策略的可信环境。
下方列出了一些最常见的加强API安全性的方法:
使用令牌:建立可信的身份,再通过使用分配给这些身份的令牌来控制对服务和资源的访问。
使用加密和签名:通过 TLS 等方式(见上文)加密数据。要求使用签名,确保只有拥有权限的用户才能解密和修改数据。
识别漏洞:确保操作系统、网络、驱动程序和 API组件保持最新状态。了解如何全面实现协同工作,识别会被用于侵入API的薄弱之处。使用嗅探器来检测安全问题并跟踪数据泄露。
使用配额和限流:对API的调用频率设置限额,并跟踪其使用记录。如果API调用数量增多,表明它可能正被滥用。也可能是编程出了错,例如在无限循环中调用API。指定限流规则,防止API出现调用激增和拒绝服务攻击。
使用API网关:API网关担当主要的API流量策略执行点。好的网关既能帮助验证流量的使用者身份,也能控制和分析API使用情况。
API安全性通常取决于良好的API管理。许多API管理平台支持三种防护方案,它们分别是:
API密钥:单一令牌字符串(即提供唯一身份验证信息的小型硬件设备)。
基础身份验证(APP ID / APP 密钥):双令牌字符串解决方案(即用户名和密码)。
OpenID Connect(OIDC):基于主流 OAuth 框架的简单身份层(即通过获取基本配置集信息和使用身份验证服务器来验证用户)。
在选择API管理器时,需要清楚它可以处理哪些防护方案,还要制定好计划,明确如何纳入上述API安全防护实践。
Q3:API安全的难点有哪些?
API为软件和开发社区带来许多便利和好处,例如文档完备、可公开获取、标准化、无处不在、高效且易于使用等。现在,攻击者正利用API来实施自动化的“高效攻击”,从Web应用程序到云计算服务都是目标。例如,我们知道开发人员可以使用API将诸如Web注册表单之类的资源连接到许多不同的后端系统。但是,包括后端更新等任务的灵活性也为自动攻击提供了机会。
API的安全难题或者说悖论在于,尽管大多数安全从业者会建议隐藏资源减少暴露面和攻击面,但业务上成功部署的API却倾向使资源更加开放和可用。API的安全困局实际上也是现代IT面临的一个共性问题。对于安全团队而言,这意味着制定平衡的、良好的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天,而且入侵检测警告通常来自外部第三方,而不是企业内部安全流程或监控来检测。
Q4: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和关联的应用程序未受到充分保护。
了解完API安全对于企业的重要性以及API的安全难点之后,API安全该如何发展,它的未来又将是怎样的?星阑科技在这里给出了答案!
API安全的未来
目前来看,API安全网关是各个企业保护API安全的有效手段。API安全网关是一种便捷的保护API安全的工具,API安全网关可以利用流量过滤以及监控等方式对入侵进行检测并防止黑客攻击。即使目前市场上已经出现了一些API安全防护产品和解决方案,但是由于在API海量数据中检测威胁并进行防护还是面临着很多挑战,在复杂多样的环境下进行防护是很难做到防护的智能化。此外攻击者的攻击手段日新月异,变化很快,如果设计弹性的管理系统对API服务进行安全监控是未来需要解决的问题。
在未来智能API安全解决方案会成为解决API安全问题的一个有效方法,而且已经在业界多次提及。使用人工智能和机器学习技术在海量API流量中进行威胁发现和安全防护,并利用AI模型的学习能力,在不同环境下动态的对API正常行为模式进行学习与积累,将有关行为的前置知识学习出来,然后自适应的在环境下对API异常活动进行识别并阻断,实现API安全的智能安全防护策略。
API的安全展望
1、聚焦安全的API设计
一提到安全,人们往往想到的是复杂性、甚至是不便。因此,API设计的易用性和可扩展性,才是吸引API开发人员、乃至用户的关键战略秘诀。在实践中,当开始着手为某个微服务构建公开的API时,就应该认真考虑如何设计API的安全性。
只有在设计之初融入了安全性,特别是用户隐私方面的管控,才能节省后续补救与整改的时间和资源。业界著名的RestCase API平台正是通过各种AI和复杂的算法,以方便用户在设计阶段去检查和验证自己的API。同时,它能够给出如何处置API安全性方面的各种建议。
2、人工智能(AI)驱动的API安全性
目前,在不同的行业,开发人员通过将系统的API与海量的数据相集成,在计算机视觉、空间位置、嵌入式应用、Web网格、移动文本数据、以及自然语言处理等领域,得到了很好的商业智能化应用,和对发展趋势的预判。
通过对于不同实时数据源的持续检测与分析,各类应用具备了更快、更智能的响应能力。
与此同时,我们应该利用好丰富的数据资源,运用AI相关的趋势分析能力,对于调用API的流量进行深度分析,进而侦测到各种历史攻击与异常,并通过自动化的修补措施,以防止后续攻击的再次发生。
例如,某些针对特定API的DoS攻击源,会在网络中扫描并攻击那些设计方案欠佳,且未对访问请求实施流速限制的API。有时候,某些API节点会在算力(computation)上非常消耗资源。
例如:那些需要通过哈希算法来进行身份验证的逻辑。因此,一些经验丰富的攻击者,经常会有目的性地利用并向此类节点发送垃圾邮件,以拖垮或破坏整个系统。
3、机器学习(ML)驱动的API安全性
如果说AI主要是用于对攻击进行智能判断的话,那么ML则主要能够用于提取威胁的特征。通过开发带有ML功能的智能API,运维人员能够有效地管理各种具有挑战性和新出现的威胁模型。
运用此类API的安全性,我们将能够更加准确地识别和标记出各种异常行为,判断出恶意攻击的发展趋势,以及识别和阻止在多种环境、及情况下针对API的攻击行为模式。
可以说,有了持续学习功能对于API的加持,我们便可以在无法预知攻击源、以及预设应对策略的情况下,及时识别出正在发生的异常行为。
目前,广泛用于各种API安全方面的机器学习算法,包括:朴素贝叶斯、KNN最近邻(K-Nearest Neighbors)、决策树、随机森林、支持向量机、深度学习、以及神经网络等。