代码审计——SpringBoot SpEL 表达式注入漏洞

💡 原文中文,约4200字,阅读约需10分钟。
📝

内容提要

SpringBoot的Whitelabel错误页面存在SpEL注入漏洞,攻击者可通过特定参数触发。受影响版本为1.1.0-1.1.12和1.2.0-1.2.7,建议升级至1.3.1及以上版本。

🎯

关键要点

  • SpringBoot的Whitelabel错误页面存在SpEL注入漏洞。

  • 漏洞发生在处理报错参数时,使用了递归处理和SpEL表达式解析。

  • 受影响的版本包括1.1.0-1.1.12和1.2.0-1.2.7。

  • 建议用户升级至1.3.1及以上版本以修复漏洞。

  • 攻击者可以通过特定的payload触发漏洞,执行任意代码。

  • 漏洞的触发点在于错误页面的message占位符处理。

  • 补丁通过创建NonRecursivePropertyPlaceholderHelper类来防止递归解析。

  • 补丁的详细信息可以在GitHub上找到。

🔎

延伸解读

漏洞影响范围

该SpEL注入漏洞影响了多个SpringBoot版本,具体为1.1.0至1.1.12和1.2.0至1.2.7。使用这些版本的开发者需特别注意,因攻击者可通过特定参数触发漏洞,执行任意代码,可能导致严重的安全隐患。

补丁的重要性

建议用户尽快升级至1.3.1及以上版本,以修复此漏洞。补丁通过引入NonRecursivePropertyPlaceholderHelper类来防止递归解析,从而增强系统的安全性。未及时更新可能使应用程序面临被攻击的风险。

漏洞触发机制

漏洞的触发机制主要在于错误页面的message占位符处理。攻击者可以利用特定的payload输入,导致SpEL引擎解析并执行恶意代码。因此,开发者在处理用户输入时需格外谨慎,避免直接将用户输入传递给解析引擎。

延伸问答

SpringBoot的Whitelabel错误页面是什么漏洞?

这是一个SpEL注入漏洞,攻击者可以通过特定参数触发,执行任意代码。

哪些版本的SpringBoot受到此漏洞影响?

受影响的版本包括1.1.0-1.1.12和1.2.0-1.2.7。

如何修复SpringBoot的SpEL注入漏洞?

建议用户升级至1.3.1及以上版本以修复漏洞。

漏洞是如何被触发的?

漏洞通过错误页面的message占位符处理,攻击者输入特定payload触发SpEL解析。

补丁是如何防止漏洞的?

补丁创建了NonRecursivePropertyPlaceholderHelper类,防止递归解析。

可以在哪里找到补丁的详细信息?

补丁的详细信息可以在GitHub上找到。

🏷️

标签

➡️

继续阅读