了解 Spring Java Framework 中的 SpringShell 漏洞
2022 年 6 月 30 日
研究人员最近宣布 Spring 中存在一个巨大的安全漏洞,Spring 是开发 Java 应用程序的组织广泛使用的框架。 指定为 CVE 2022 2965 且绰号为 Springshell,集体 Java 开发社区盔甲中的重大漏洞让许多人在黑客开始利用这些漏洞之前争先恐后地寻找补丁。
此外,该公告强调了试图通过单独拒绝所有潜在危险功能来阻止攻击者的安全策略是徒劳的。 相反,该事件指出,解决越来越多的利用固有安全弱点的网络攻击的方法在于开发在早期软件开发阶段将安全性构建到应用程序中的流程。
静态应用程序安全测试 (SAST) 是一个为团队提供综合工具集的过程,用于在开发阶段的部署之前识别当今复杂的第三方软件依赖应用程序和库中的代码漏洞。 Kiuwan 是一个高性能的 SAST 平台,让开发人员相信他们的代码从一开始就不存在可预防的安全漏洞。
Springshell 让许多安全团队措手不及,尤其是大多数依赖开源库和流行的 Java Spring 开发平台的团队。 探索这样的漏洞是如何在一夜之间出现的,有助于理解如何从扑灭火灾范式转向内置代码安全是阻止日益流行的网络攻击的最可行方法。
使 Springshell 漏洞与众不同的是它对如此大一部分企业级 Java 应用程序的潜在影响。 要利用此弱点,攻击者必须找到一个运行 Spring、Java 9 或更高版本以及 Tomcat 组合的目标。
考虑到 Spring 是排名第一的 Java 框架,并且 Java 9 自发布以来的五年中有时间扩大其范围,因此找到该配置并不难。 此外,用于嵌入 Spring Boot 和 Spring Bean 的 Java 应用程序的流行 Web 浏览器 Tomcat 增加了网络犯罪分子可用的潜在目标数量。
Spring 依靠拒绝列表来限制对 ClassLoader 的访问。 然而,从 Java 9 开始,开发人员添加了一些模块,这些模块提供了访问 ClassLoader 的替代方法,这使用户有可能将数据写入内部对象。
进行 PoC 测试的调查人员发现,Spring 中的这个漏洞允许远程代码执行 (RCE) 使用 ClassLoader 访问来配置 setter 和属性。 该方法涉及在 Spring 中查找 POST 端点并重新配置 Tomcat 以将包含恶意代码的 JSP 或其他可执行文件类型写入 Tomcat 服务器。
Springshell 的修复是组织应该在漏洞发布后立即实施的直接行动:升级到 Spring 框架版本 5.3.18 和 5.2.20。
可以肯定的是,大多数运行 Java 9 及更高版本的 Spring Web 项目都受到了 Springshell 的影响,流行的 Spring 框架的许多其他用户也是如此。 调查人员警告说,Tomcat 只是黑客可以用来启动攻击的一个小工具。 恶意行为者可以实施除 Tomcat 之外的其他方法来渗透 Spring 中的安全漏洞。
正如经常发生的那样,已知的漏洞只会为许多可能的变体打开大门。 足智多谋的黑客可以利用已知的安全漏洞来尝试基于共同弱点的一系列攻击。
一旦研究人员或攻击者通过揭示安全漏洞打开了潘多拉魔盒,再减轻这些风险就为时已晚。 尽量减少可能发生的呈指数增长的攻击的方法是采用不同的安全方法:DevSecOps。 Development Security Operations 将代码安全提升到软件供应链中的突出位置。
这种思维方式的转变对于应对日益严重的网络安全问题是必要的。 唯一可行的系统始于应用程序的开始,并作为过程的一部分继续进行,直到软件的生命周期开发周期结束。
使用用户提供的数据编写可执行文件的潜在能力对于负责保护金融交易和客户数据安全的组织来说是危险的。 不可能了解这种访问为网络犯罪分子提供的所有可以想象的利用,而且仅仅应用补丁很可能是不够的保护。
数据犯罪是指拦截和窃取私人或机密数据,包括身份盗用。 由于许多金融、银行和其他以隐私为中心的机构都依赖 Spring 框架来开发 Java 应用程序,因此犯罪分子的机会非常多。 简而言之,当窃贼可以访问受限区域并编写隐藏的可执行文件时,必然会导致敏感数据泄露。
Springshell 的一个鲜为人知的利用是招募机器人军队。 黑客可以访问服务器并将其奴役为恶意活动的参与者,例如加密货币挖矿和 DDoS 攻击群。
对于许多机构来说,安全漏洞一直是潜伏的噩梦。 此外,对更快生产和持续改进以及生命周期的推动给代码开发团队带来压力,使其严重依赖开源和第三方软件库和功能。
手动检查多达数百万行代码以查找软件的不利交互和已知的安全问题在逻辑上是不可能的。 然而,将代码安全视为软件供应链的事后考虑是许多组织不再愿意犯的错误。
SAST 帮助开发团队在安全问题成为代码的固有部分之前识别它们。
Kiuwan SAST 提供了一种严格的方法来检测具有多语言支持的软件漏洞。 因此,使用 Kiuwan 的 DevOps 团队能够在编写代码时无缝管理代码中的安全性。 这种持续扫描和修改代码的能力减少了网络犯罪分子瞄准的弱点,并在每个应用程序级别实现了更强大的安全性。
Kiuwan 是一家全球性公司,提供 360° 应用程序安全平台,以帮助指导代码开发团队尽可能生成最高质量、最安全的应用程序。 在当今的威胁形势下,越来越难以证明在修补和灭火的旧系统中工作是站得住脚的。
今天与 Kiuwan 安排一次专家演示,了解 SAST 如何使应用程序开发过程受益、缓解问题并最终导致更顺畅的开发时间,从而产生更安全的应用程序。