研究人员发现 Swagger 相关漏洞

简介:

image
网络安全机构Rapid7发现了一个有关Swagger驱动代码生成器的漏洞,该漏洞有可能让使用Node.js、PHP、Ruby和Java(也有可能包括其他语言)语言所开发的程序暴露在被黑客利用的危险之下。上周Charlie Osborne在ZDNet发表了一篇文章,文章讲述了这个漏洞。

当某个API被Swagger等API描述语言查看的时候,这个描述会被用来自动生成SDK,该SDK可以让开发人员更轻松的使用他们所选平台上相关的Web API。类似的是,这个API描述还会自动生成一个功能端点。理论上,这两者都有可能产生风险。这个漏洞不仅会在技术上影响到自动生成的API端点,还有可能导致两种结果:

黑客能够修改在API描述被用来生成端点之前对该描述进行篡改。

这个篡改有可能逃过API设计和开发人员的监测。

而在SDK端,情况则稍有不同,因为很多API的SDK都并非API提供者自己所提供的。SDK通常是第三方所开发的,尤其是在一些不那么流行的平台上。

Rapid7表示,研究人员在Swagger代码生成器(Swagger CodeGen)中找到了一个漏洞,该漏洞有可能会影响到文章开头所提到的那些语言,还有人担心其他一些语言也会受到影响。Swagger CodeGen接近于一个开源工具,许多第三方SDK生成产品提供商都在使用。Rapid7程序安全研究员Scott Davis表示,该漏洞允许攻击者远程执行代码,存在于 Swagger Code Generator 中,属于参数注入漏洞,允许攻击者在 Swagger JSON 文件中嵌入代码,使用 Java、PHP、NodeJS 和 Ruby 等语言开发的 Web 应用如果整合了 Swagger API 会受到影响。

简单说,这个漏洞的危险性在于,黑客可以在基于Swagger的API定义中植入恶意的可注入参数,从而导致自动生成的SDK也携带这些参数。之后,所有由这些SDK所开发的程序也会受到影响,API提供方和终端用户也有可能受到影响。例如,Rapid7发现这种基于Swagger的定义可以在Node.js、PHP、Ruby和Java环境中被远程操控。没有什么可以组织第三方使用基于Swagger的工具来对公共API进行描述,以及根据这些描述来自动生成多个SDK。开发人员要做的是,谨慎对待每一个SDK,在使用任何一个在网络上下载的SDK之前,都要怀疑它有可能存在恶意注入参数。

另外,API提供商也需要保护自己的端点和基础系统不受一些常见的威胁的影响,例如代码注入。他们需要保护自己的API描述,以及相关的资产不会被篡改。

今年4月Rapid7最早将这个问题报告给了Swagger的供应商和API团队。6月16日CERT获得了补丁;23日,一个Metasploit模式被放出。目前Swagger建议开发人员使用OWASP ESAPI这个工具来净化代码以及缓和威胁。然而,OWASP ESAPI工具并不适用于所有语言。目前Swagger CodeGen的开发商已经放出了临时补救措施,但是这个措施只能解决一时的问题。

文章转载自 开源中国社区[http://www.oschina.net]

相关文章
|
安全 Java API
解决 Swagger API 未授权访问漏洞:完善分析与解决方案
Swagger 是一个用于设计、构建、文档化和使用 RESTful 风格的 Web 服务的开源软件框架。它通过提供一个交互式文档页面,让开发者可以更方便地查看和测试 API 接口。然而,在一些情况下,未经授权的访问可能会导致安全漏洞。本文将介绍如何解决 Swagger API 未授权访问漏洞问题。
|
4月前
|
数据可视化 Java API
Spring Boot与Swagger的集成
Spring Boot与Swagger的集成
|
4月前
|
Java API 开发者
在Spring Boot中集成Swagger API文档
在Spring Boot中集成Swagger API文档
|
22天前
|
SQL JSON Java
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和PageHelper进行分页操作,并且集成Swagger2来生成API文档,同时定义了统一的数据返回格式和请求模块。
39 1
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
|
21天前
|
前端开发 Java 程序员
springboot 学习十五:Spring Boot 优雅的集成Swagger2、Knife4j
这篇文章是关于如何在Spring Boot项目中集成Swagger2和Knife4j来生成和美化API接口文档的详细教程。
45 1
|
2月前
|
前端开发 Java Spring
【非降版本解决】高版本Spring boot Swagger 报错解决方案
【非降版本解决】高版本Spring boot Swagger 报错解决方案
|
2月前
|
Java Spring
springboot 集成 swagger 2.x 和 3.0 以及 Failed to start bean ‘documentationPluginsBootstrapper‘问题的解决
本文介绍了如何在Spring Boot项目中集成Swagger 2.x和3.0版本,并提供了解决Swagger在Spring Boot中启动失败问题“Failed to start bean ‘documentationPluginsBootstrapper’; nested exception is java.lang.NullPointerEx”的方法,包括配置yml文件和Spring Boot版本的降级。
springboot 集成 swagger 2.x 和 3.0 以及 Failed to start bean ‘documentationPluginsBootstrapper‘问题的解决
|
3月前
|
Java API Spring
springboot集成swagger
这篇文章介绍了如何在Spring Boot项目中集成Swagger 2.10.0来生成API文档,包括添加依赖、编写配置类、创建接口文档,并使用Knife4j美化Swagger界面。