Spring框架遭遇漏洞攻击
一直以来,Spring 是编程开发的必选技术之一,此前一位名为 Bogdan N. 的全栈开发者甚至评价道:“学习 Java、学习 Spring 框架,你永远都不会失业。”
Spring框架遭遇漏洞攻击
3月26日,据网络安全网站Cyberkendra报道,SpringCloudFunction官方测试用例曝光SpringCloudFunctionSPEL表达式注入漏洞,黑客可利用SPEL表达式注入漏洞触发远程命令执行。
发现漏洞的过程。
起初,研究人员在分析Springcloud函数的main分支时,发现一些开发人员向其中添加了simpleevaluationtext类别。还使用isviaheadervariable作为标志,在分析spring.cloud.function.expression之前判断的值取自HTTPheader。
spring.cloud.function.routing-expression的参数存在于访问springcloudfunction的HTTP请求头中,其Spel表达式可通过standardevaluationcontext注入并执行。这使得攻击者可以利用这个漏洞执行远程命令。
SpringCloudFunction的应用。
目前,SpringcloudFunction已被许多科技巨头应用于产品中,包括AWSLambda、Azure、谷歌CloudFunctions、Apacheopenwhisk和许多Serverless服务提供商。
根据官方文档,SpringCloudFunction是基于SpringBoot的函数计算框架,可以:
通过函数促进业务逻辑的实现。
将业务逻辑的开发生命周期与任何特定的运行目标分离,使用相同的代码作为网络端点、流处理器或任务。
支持跨Serverless供应商的统一编程模型,具备独立运行(本地或PaaS)的能力。
Springboot功能(自动配置,依赖注入,指标)在Serverless上提供程序。
简而言之,Springcloudfunction通过抽象传输细节和基础设施,为开发者保留熟悉的开发工具和流程,让开发者专注于实现业务逻辑,从而提高开发效率。
影响
目前,SpringCloudFunctionSPEL漏洞已被归类为严重等级,CVSS(通用安全漏洞评分系统)得分9.0(满分10)。
然而,开发人员不必太担心,因为只有SpringcloudFunction的某些版本的特定配置(3.0.REEASE=SpringCloudF=3.2.2)受到影响,受影响版本于2019年11月22日至2022年2月17日发布。
SpringRCE比SpringloudFunctionRCE更严重。
与前者相比,3月29日晚,很多网友爆出的SpringRCE漏洞,让开发者圈内人心慌。
然而,一些不寻常的事情是,这一漏洞并没有像Log4j2事件引起的圈内许多大型企业的紧急行动,也没有像SpringCloudFunctionSPEL漏洞那样正式解释。甚至国外漏洞披露的根源也来自QQ和一些国内网络安全网站。
真的存在Spring零日漏洞吗?
针对网络传输的内容,世界领先的安全风险信息解决方案提供商Rapid7也通过《Spring4Shell:Zero-DayVulnerabilityingFramework》一文确认了零日漏洞的真实存在。
这里有一个控制器(HelloworldController)。当它被加载到Tomcat时,它将处理HTTP请求:///name/appname/rapid7。处理请求的函数称为vulnerable,还有一个POJO参数。在这里,Helloworld被简化了,但如果需要,POJO可能会变得非常复杂:
基于此,Rapid7表示,如果我们编译项目并将其托管在Tomcat上,我们可以使用以下curl命令。请注意,以下有效载荷与研究人员创建的原始概念完全相同。
临时修复方案。
目前,由于Spring的官方说明尚未发布,因此无法确定哪些应用程序使用了有漏洞的功能,这也导致开发者问Springcore的RCE0day漏洞是否涉及Springcore的RCE0day漏洞。
然而,据国外媒体BleepingComputer报道,虽然这个漏洞会影响JDK版本号9及以上的使用Spring框架或衍生框架,但也有具体的前提。