导读:
API在软件应用体系结构中占有重要的地位。通过在多个服务之间建立通信管道,它们彻底改变了Web应用程序的使用方式。随着对全新和颠覆性数字化解决方案的需求不断增长,确保API的安全性变得越来越重要。
OWASP在2019年将API安全列为未来最受关注的十大安全问题,这种类型的安全漏洞的影响不可低估,API为网络攻击者提供了危险的入口点。本文将讨论API安全性,并分析为什么API安全性策略是当今世界应用程序开发生命周期和基础设施的关键部分的一些基本原因以及API安全测试的常见手法。
01
什么是API安全
API它的全称是Application Programming Interface,也叫做应用程序接口,它定义了软件之间的数据交互方式、功能类型。是不同软件应用程序之间进行通信和交互的接口,允许应用程序之间共享数据和功能。
API安全就是指保护应用程序编程接口(API)免受未经授权的访问、滥用和恶意攻击等的一系列措施和方式。
02
为什么API安全很重要
API是当今数字生态系统的支柱。它们被深度集成到软件系统中,是成功执行应用程序背后的重要驱动力。由于软件行业广泛依赖于API,因此提供对API的访问的组织必须使其更加安全和可信。
如今,典型的CS(客户端-服务器)应用程序使用API交换信息。此外,第三方API使用也是将API与现有系统集成的一种非常流行的模型。归根结底,这一切都归结为我们如何能够安全地管理此类流程和集成,以提供流畅、透明和可信的用户体验。
除了传统的CS或第三方通信之外,API也在微服务中占有绝对的重要地位,微服务是当今最具创造性和最常用的应用程序架构模型。因此,保护API以减少其被攻击的机会,成为企业无法回避的责任。
03
API分类
● 类库API:
类库型API通常是一个类库,它的使用依赖于特定的编程语言,例如应用程序调用微软基础类库(MFC)。
● 操作系统API:
操作系统API是操作系统层对外部提供的接口,例如,应用程序调用Windows API或Linux标准库。
● 远程应用API:
远程应用型API是开发者通过标准协议的方式,将不同的技术结合在一起,不用关心所涉及的编程语言或平台,来操纵远程资源。
● Web应用API:
Web应用型API通常使用HTTP协议,在企业与企业、企业内部不同 的应用程序之间,通过Web开发过程中架构设计的方法,以一组服务的 形式对外提供调用接口,以满足不同类型、不同服务消费者的需求。
在API技术的发展过程中,业界通常将最初的类库API和操作系统API称为古典API,将远程应用API和Web应用API称为现代API。现代API是当前主要采用的API技术形式,它们采用了不同的通信协议或消息格式,根据服务对象、技术形式和使用者的不同,可以进行不同类型的分类。
04
API攻击面
随着针对API的攻击日益严重,OWASP组织推出了OWASP API Security TOP 10项目,对目前API最受关注的十大风险点进行了总结,以警示业界提高对API安全问题的关注。
05
API安全面临的主要挑战
API安全事件屡见不鲜,其主要原因是随着API的广泛使用,针对API的恶意攻击行为愈发增多。然而,作为使用API的企业,在API生态系统中,却缺乏明确的API保护方针和策略。在解决API安全风险上,仍面临多个方面的挑战。
◆ API广泛应用带来的风险面增大
随着互联网上业务种类的不断增加,整体API的流量在也增加了很多倍,伴随API的广泛使用,API暴露的攻击面增加,针对API的攻击也暴增。
◆ API安全经验缺失
对于使用API技术带来的安全风险,研发人员往往理解不够深入,也缺乏具备丰富安全经验的人员来监督或指导研发过程,导致开发的API存在安全漏洞。
◆ 安全合规性挑战
在国家和行业标准的层面上,对于API的使用提出了多方面的安全要求。这些标准或规范为企业在API安全实践方面提供了指导,同时也为API的合规性提供了可操作的标准。
06
API安全测试tips
针对RESTful API:
■ 尽可能多的获取API规范描述文件,如在线接口文档、apidocs.json文件、Swagger文件,RAML文件,API-Blueprint文件等,通过对这些文档的分析来获取API的详细调用方式及参数定义。
■ 通过Proxy代理,对流量进行分析也是获取API信息的一种手段。
■其他可攻击的点,如请求参数、请求方法GET/POST/PUT/DELETE、是否存在授权绕过(令牌是否正确验证,是否令牌有时效性)、是否存在注入点(MySQL、NoSQL)、是否存在批量分配的问题等。
■ 通用的安全问题,如是否存在Key泄露、是否可被暴力破解、同一API多个版本不一致问题、XSS、CSRF等。
■ 面向不同层次会话的攻击,比如传输层是否使用SSL或使用可信的数字证书、应用层会话是否设置超时或采取限流熔断机制等。
针对GraphQL API:
■ 未授权访问问题。正因为“所见即所得”的“客户端请求什么,服务器端会响应什么”的一致性,后端应用程序在应用级的权限访问控制上存在设计错误,导致越权访问或因越权访问导致的敏感数据泄露。
■ 嵌套查询带来的性能问题。如果请求的数据格式嵌套层级过于复杂,对服务器端处理来说会消耗很多资源,这时过多的请求会导致类似Dos攻击的行为发生。当然,GraphQL本身也提供了超时设置、最大查询深度、查询复杂度阈值等安全策略,但在应用程序开发过程中往往存在安全策略设置不当的情况。
■ GraphQL自身安全配置错误。很多技术组件在使用时官方都会提供相关的安全配置项说明,比如SpringBoot安全配置项、Tomcat的安全基线。GraphQL虽然没有这些技术组件的配置复杂,但它自身也存在一个管理入口,通常请求路径为/graphql或/graphql/console/。如果应用程序配置错误,渗透测试人员可以尝试访问/graphql?debug=1,进入调试模式。
针对SOAP API:
■ XML类的安全问题在SOAP API中比较常见,比如XML实体攻击、XPath注入等。
■ 基于SOAP API安全框架实现错误的安全问题,比如针对WebServices身份验证的攻击、XML签名类攻击、针对算法JWT的攻击等。导致这些攻击的漏洞有密码在SOAP头信息中以明文形式传递HTTP Basic认证信息未加密、未对消息进行签名等。
■ 传统的Web安全问题仍然存在,比如SQL注入、文件上传漏洞、DOS攻击、重放攻击等。
■ 针对WSDL的信息收集或在原URL地址后加“?wsdl”可能成为渗透测试的快捷入口。
■ 未授权访问和业务逻辑漏洞也会在SOAP API的渗透测试中被发现,常见的导致此攻击的漏洞有未使用身份验证、参数缺少校验或保护导致数据篡改后的权限绕过、敏感数据保护不足等。
07
结语
伴随API的广泛使用,传统的安全手段在API安全上常常是能力不够的。在安全检测上,传统的漏洞扫描器很难发现API或微服务上存在的安全问题。在安全防御上,流量安全防御设备也无法像在常规Web防护上发挥很大的防御价值。API的安全性需要更多的重视,以避免因API攻击而造成的业务风险。
发表评论
您还未登录,请先登录。
登录