当前位置: 首页 > 科技观察

说说API安全

时间:2023-03-19 15:13:09 科技观察

API(ApplicationProgrammingInterface)应用程序编程接口,可以适用于所有计算机平台和操作系统,连接不同格式的数据和调用数据。比如用户可以追踪到电商平台购买的商品所在位置,这是电商平台与物流公司实时调用API位置的效果。许多组织更注重API和应用的快速交付,而忽视了API的安全保护,这也是近年来API攻击和数据泄露的主要原因。本文将从常见的API类型、API攻击、API安全测试、API安全建设等角度进行简要分享。常见API类型分类描述安全状态公共API允许任何人从任何地方访问服务,并且暴露在互联网上,几乎没有网络限制,其中可能存在也可能不存在身份验证和授权。开放API经常出现在与金融行业相关的开放银行计划中,促进特定行业的创新和提高服务集成。认证和授权都是私有API,通常部署在数据中心或私有云网络环境中运行。鉴权和授权可能主要是为了运营管理和内部服务支持而存在。但也有可能争辩说,攻击暴露是有限的,被忽视的合作伙伴API为特定的外部提供商提供对内部API的有限访问权限,以驱动数字供应链访问控制驻留在内部和外部API之间,可能通过API网关控制,但缺乏安全考虑API攻击说到API攻击,不得不说的是,开放Web应用程序安全项目(OWASP)的非营利组织多年来一直位居安全行业应用程序安全排行榜前十名。2019年,OWASP发布了APISecurityTop10,描述了十大最常见的API漏洞。它可用作培训和提高意识的辅助工具,以及用于对API中的问题进行分类的轻量级分类法,如下面的用例和预防方面所述。1.API1:2019-BrokenObjectLevelAuthorization攻击者在API调用中将自己资源的ID替换为属于其他用户的资源ID。缺乏适当的授权检查允许攻击者访问指定的资源。这种攻击也称为IDOR(InsecureDirectObjectReference)。用例:通过API调用参数访问的资源ID/api/id1/financial_info。攻击者将其资源的ID替换为另一个猜测的ID/api/id2/financial_info。API不检查权限并允许调用通过。如果可以枚举ID/api/000-999/financial_info,问题会更糟。预防:根据用户策略和继承关系实施适当的授权机制。不要依赖客户端发送的ID,而是使用存储在会话对象中的ID。检查访问数据库请求的每个客户端的授权。使用无法猜测的随机ID(GUID)。2.API2:2019-BrokenUserAuthentication弱API认证允许攻击者冒充其他用户的身份。用例:·未受保护的API被视为“内部”·弱、纯文本、弱散列、共享或默认密码·缺少验证码或没有帐户锁定机制,攻击者可以在其中破坏同一用户帐户暴力破解·URL包含令牌凭据和密码·接受未签名或弱签名的JWT令牌(“alg”:“none”),或者不验证令牌过期时间。预防措施:·检查对所有API进行身份验证的所有可能方法·使用标准身份验证、令牌生成、密码存储和多因素身份验证(MFA)·使用短期访问令牌·验证您的应用程序(以便您知道谁在与您交谈)对身份验证使用更严格的速率限制并强制执行锁定策略和弱密码检查3.API3:2019-ExcessivedataexposureAPI可能会暴露比客户端合法需要更多的数据。用例:API返回存储在后端数据库中的完整数据对象。客户端应用程序过滤响应并仅显示用户真正需要查看的数据。攻击者直接调用API获取过滤后的敏感数据(嗅探抓包)。预防:永远不要依赖客户端的数据过滤!检查API响应以验证它们仅包含合法数据仔细定义所有API响应的模式识别任何敏感数据或个人身份信息(PII)并证明其使用的合理性实施基于模式的响应验证机制作为额外的安全措施。该机制定义并强制检查所有方法返回的数据,包括错误消息。4.API4:2019-资源匮乏和速率限制API无法防止过多的调用和负载大小。攻击者可以使用拒绝服务(DoS)使API无响应或不可用。用例:攻击者通过发送超出其处理能力的请求来重载和阻止API。一些字段超出了API在请求时可以处理的范围。预防措施:定义适当的速率限制·限制负载大小·添加压缩比检查·定义容器资源(内存、CPU、文件描述符和进程)的限制。5.API5:2019-Expiredfunction-levelauthorization攻击者找到“隐藏”的管理API方法并直接调用它们。用例:一些管理功能作为API公开,如果已知,非特权用户可以在未经授权的情况下访问这些功能。可以是要发现的URL,或者使用不同的参数/api/users/my_financial_info—>/api/admin/all_info。预防措施:默认拒绝所有访问。确保所有的管理控制器都继承自管理抽象控制器,抽象控制器根据用户所在的组/角色进行权限检查,只允许对属于相应组或角色的用户进行操作。适当设计和测试授权。6.API6:2019-Batchallocation在API中很容易利用batchallocation,因为它们通过设计公开了应用程序隐含的实现方法和属性。性名。现代框架鼓励开发人员使用自动将来自客户端的输入绑定到代码变量和内部对象的能力。攻击者可以使用这种方法来更新或覆盖开发人员从未打算公开的敏感对象属性。用例:攻击者可以推断对象的属性,找到不同的API端点,或者通过仔细阅读随附的文档来发现请求负载中的其他属性,从而篡改它们。权限相关属性:user.isadmin、user.isvip只能由管理员设置进程相关属性:user.cash只能在支付验证后内部设置内部属性:article.created_time只能在app程序内部设置.预防措施:不要自动绑定传入数据和内部对象。只有客户端可更新的白名单属性。使用内置功能将客户端不应访问的属性列入黑名单。在设计时精确定义请求中接受的模式和类型,并在运行时强制执行它们。7.API7:2019-安全配置错误API服务器配置不当允许攻击者利用它们用例:缺乏最新的安全补丁,或系统已过时。未受保护的文件和目录。缺乏传输层加密,使用过时或错误配置的TLS。公开存储或服务器管理面板。缺少CORS(跨源资源共享)策略或安全标头。带有堆栈跟踪的错误消息。启用了不必要的功能。预防:一个自动化过程,持续评估所有环境中配置和设置的有效性。为了防止异常跟踪和其他有价值的信息被传回给攻击者,如果可能,定义并强制执行统一的API响应格式,包括错误消息。禁用不必要的功能。限制管理访问。8.API8:2019-Injection攻击者通过任何可用的注入方式(如直接输入、参数、集成服务等)向API提供恶意数据,并期望将这些恶意数据发送给解释器执行。用例:攻击者发送恶意输入以转发给内部解释器。SQL·NoSQL·LDAP·操作系统命令·XML外部实体。预防:永远不要相信你的API消费者,即使他们是内部的。所有输入数据(例如模式、类型和字符串)都在运行时严格定义和执行。验证、过滤和清理所有传入数据。定义、限制和强制执行API输出以防止数据泄漏。9.API9:2019-资产管理不当攻击者将通过这些渠道发现API的非生产版本(例如,临时、测试版或早期版本)没有像生产API攻击那样得到很好的保护。用例:DevOps、云、容器和Kubernetes使多个部署变得容易(例如,开发、测试、分支、遗留等)。为了保持向后兼容性,旧的API被迫继续工作。旧版本或非生产版本没有得到妥善维护,但这些端点仍然可以访问生产数据。一旦通过一个端点进行身份验证,攻击者就可以切换到生产端点。预防:维护所有API主机和未知API功能的最新清单。限制任何不应公开的访问。限制对生产数据的访问并隔离生产和非生产数据之间的访问。实现API网关和安全检测产品。消除旧版本API或旧版本程序安全修复程序。实施严格的身份验证、重定向、CORS等。10.API10:2019-日志记录和监控不足缺乏适当的日志记录、监控和警报可能导致攻击和攻击者被忽视。用例:日志不受完整性保护(没有生成日志,日志级别设置不正确,或者日志消息缺乏足够的细节)。日志未集成到安全信息和事件管理(SIEM)系统中。日志和警报设计不当。公司依赖手动而非自动化系统。预防:记录失败的尝试、拒绝访问、输入验证失败或安全策略检查中的任何失败。确保规范化日志,以便其他工具也可以使用它们。包括足够的细节来识别攻击者。避免在日志中包含敏感数据,如果出于调试目的需要对某些信息进行脱敏处理。与SIEM和其他监控和警报工具集成。中文详细参考链接:http://www.owasp.org.cn/OWASP-CHINA/owasp-project/OWASPAPITop102019.pdfAPI安全测试在左移的API安全实践中,一个关键点是保证构建管道,这需要企业将安全工具嵌入到持续集成/持续交付(CD/CD)和基于git的开发人员工作流中。下面列出了两类安全测试工具。1.静态应用安全测试(SAST)用于分析原始代码的潜在弱点和漏洞,通常在代码提交到版本控制或构建阶段时运行。GitHub代码扫描、Coverity扫描静态分析、reshift、Xanitizer、HCLAppScanCodeSweep2。动态应用程序安全测试(DynamicApplicationSecurityTesting,DAST)用于分析运行中的应用程序以发现可利用的漏洞,通常在生产交付之前开始,或者在生产中持续使用。开源软件:OWASPZAP、StackHawk、Arachni、sec-helpers、OWASPPPurpleteam。缺点:当然,以上工具也有它们的缺点。比如SAST工具的误报率会更高,这涉及人工审核成本。DAST工具运行时间会比较长,需要提前预留时间,以免延迟发布。应该承认,扫描工具不能用于检测所有类型的问题,例如一些滥用业务逻辑的缺陷。来源参考:https://owasp.org/www-community/Free_for_Open_Source_Application_Security_ToolsAPI安全测试实战一、API安全测试技巧https://github.com/inonshk/31-days-of-API-Security-Tipshttps://cloud.tencent.com/developer/article/1805577(以上链接的中文翻译)2.开发安全API的清单https://github.com/shieldfy/API-Security-Checklist/blob/master/README-zh.mdAPI安全构建思路架构设计对于有效保护API安全非常重要,架构需要有抓取和分析所有API流量的产品。需要丰富的数据引擎,基于APISecurityTop10威胁,算法识别等技术进行检测暴露分析,进行有效拦截,并提供加固补救措施。同样重要的是在发现、测试和保护API时,各种内部角色和第三方组织的流程和人员设计、补救和协调。1、安全产品与环境无关,需要支持现代云架构和传统基础架构。2.API资产和攻击检测能力由于API开发、API集成、第三方API依赖,API列表不断演进,需要不断识别API端点和参数(不仅是IP和主机名,还有还有函数、路径和信息)。主题)、未知影子API、过时或过时的僵尸API。尤其是敏感数据的发现能力,比如个人身份信息,因为这会涉及到合规问题。持续检测数据权限、密码认证等缺陷,能够及时发现API攻击的存在。3.集成能力,可与负载均衡、API网关、WAF、漏洞管理平台(VM)、DevOps套件、ITSM等平台集成。4.API代码分析在生产交付前扫描可能存在的缺陷,以减少攻击者发现可利用条件的可能性。5.人员能力API安全专业知识可能分散在开发、基础设施、运营、安全或API产品团队中,需要进行梳理,以便在发现、测试、保护和事件响应方面进行协作。