攻击者伪造Jackson JSON库入侵Maven中央仓库

一场新型恶意软件攻击活动通过伪装成合法的Jackson JSON库扩展,成功入侵了Java开发者最信赖的代码仓库之一------Maven中央仓库。这个恶意软件包以org.fasterxml.jackson.core/jackson-databind命名空间发布,通过误植域名攻击(typosquatting)在Maven中央仓库发现的首批复杂恶意软件案例之一。

攻击者利用了巧妙的命名空间混淆策略:合法Jackson库使用com.fasterxml.jackson.core命名空间,而恶意版本则使用org.fasterxml.jackson.core。这种细微差别使得开发者很容易在项目中误引入有害软件包。

精心策划的攻击行动

该恶意软件活动显示出明显的精心策划特征。攻击者创建了虚假域名fasterxml.org来镜像合法的fasterxml.com,采用了与软件包命名空间相同的.com到.org替换策略。该域名注册于2025年12月17日,就在Aikido安全分析师发现威胁的八天前。这种从域名注册到部署的短暂间隔是恶意软件操作的常见模式,旨在降低早期检测和被列入黑名单的几率。

该软件包在被发现后1.5小时内即被报告给Maven中央仓库并下架,但在此之前可能已经危害了开发者系统。

Aikido分析师指出,该恶意软件采用了多层混淆技术来隐藏其真实目的。jar文件中的代码经过严重混淆,甚至试图通过提示注入技术(prompt injection)来干扰基于机器学习的分析工具。在未正确处理Unicode字符的编辑器中打开时,代码会显示大量干扰信息,使人工检查变得困难。经过仔细分析,研究团队成功解混淆了恶意代码,揭示其作为木马下载器的真实功能------连接命令控制服务器并在受感染系统上执行有害负载。

感染机制与负载投放

该恶意软件通过七阶段感染流程运作,始于开发者将恶意依赖项添加到其pom.xml文件时。一旦被包含,当Spring Boot应用启动时,该软件包会自动执行,因为Spring会扫描@Configuration类并发现JacksonSpringAutoConfiguration。恶意软件会检查ApplicationRunner.class(该文件始终存在于Spring Boot环境中),确保恶意代码无需开发者显式调用即可运行。

感染机制包括持久性检查,恶意软件会在工作目录中搜索名为.idea.pid的文件。这个文件名巧妙地混入IntelliJ IDEA项目文件中,降低了开发者发现项目结构中异常文件的可能性。随后,恶意软件通过检查System.getProperty("os.name")进行环境指纹识别,确定系统运行的是Windows、macOS还是Linux,并据此下载适合检测到的操作系统的负载。

命令控制通信通过"http://m.fasterxml.org:51211/config.txt"进行,该地址提供AES加密的配置数据。

恶意软件使用硬编码的AES-ECB密钥(9237527890923496)解密每个支持平台的负载URL。解密后的格式遵循os|url模式,例如Windows系统的win|http://103.127.243.82:8000/http/192he23/svchosts.exe。下载二进制文件payload.bin到系统临时目录后,恶意软件会执行该文件,同时在Unix系统上将输出重定向到/dev/null,在Windows上重定向到NUL,以抑制任何可见活动。Windows负载故意使用svchosts.exe名称(仿冒合法的svchost.exe进程)来避免检测。

通过VirusTotal对下载负载的分析证实,Linux和macOS二进制文件是Cobalt Strike信标------一种强大的渗透测试工具,常被勒索软件运营商和APT(高级持续性威胁)组织用于远程访问、凭证窃取和网络横向移动。

相关推荐
青山木24 分钟前
Hot 100 ---腐烂的橘子
java·数据结构·后端·算法·leetcode·广度优先
小龙报41 分钟前
【优选算法】1. 水果成蓝 2.找到字符串中所有字母的异位词
java·c语言·数据结构·数据库·c++·redis·算法
自强的小白1 小时前
重点!起始时间和结束时间与创建时间和修改时间的区别(localdate与LocaldateTIME区别)以及增删改查什么时候设置目前时间(添加和更新员工时)
java
雪的季节1 小时前
Python 线程同步与异步编程 全解析
java·开发语言
吃饱了得干活1 小时前
缓存与数据库一致性:从理论到实战
java·后端·面试
520拼好饭被践踏2 小时前
JAVA+Agent学习day22
java·开发语言·后端·学习
笨蛋不要掉眼泪2 小时前
Java虚拟机:堆的参数配置
java·开发语言·jvm
霸道流氓气质2 小时前
SpringBoot中使用JasperReports 报表引擎 — 介绍、原理与使用实践
java·spring boot·后端
花生了什么事o2 小时前
DDD 分层架构:六层分层架构
java·架构·ddd
前网易架构师-高司机2 小时前
带标注的扑克牌识别数据集,识别率99.5%,3083张图,支持yolo,coco json,voc xml,文末有模型训练代码
xml·yolo·json·数据集·数字·扑克牌·纸牌