GitHub告警:恶意软件正通过流行开源 IDE 攻击 Java 项目
云栖号资讯:【点击查看更多行业资讯】
在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来!
itHub 安全博客发布了一则通知,警告用户目前正有一种新的恶意软件在攻击 Java 项目。据了解,这是一个针对 Apache NetBeans IDE 项目的开源供应链攻击,GitHub 安全团队将其称为 Octopus Scanner。一旦感染,恶意软件会寻找用户开发系统上的 NetBeans 项目,然后将恶意负载嵌入到项目文件中,使得每次项目构建都会执行恶意负载。
3 月 9 日,GitHub 收到了安全研究员 JJ 发来的警告通知:“我发现了一组感染了恶意程序 Octopus Scanner 的开源库。”随后,GitHub 开始自查,在站点上共发现了 26 个包含 Octopus Scanner 恶意软件的存储库。
据 GitHub 称:“当用户下载了这 26 个存储库中的任何一个时,该恶意软件就会像自传播病毒一样,感染本地计算机,并扫描用户的工作站,查看是否有本地 NetBeans IDE 安装,如果有,会继续深入影响计算机中的其他 Java 项目。”
安全研究员 JJ 表示,如果发现了 NetBeans IDE,Octopus Scanner 恶意软件会通过以下两个步骤继续进行 NetBeans 项目的后门构建:
每次构建项目时,产生的 JAR 文件都会被 dropper 感染。执行时,dropper 有效负载会确保本地系统持久性,并产生一个远程管理工具(RAT),连接到 C2 服务器。
它会阻止新项目构建来替换受感染的构建,以确保恶意构建项目一直存在。
1.Octopus Scanner 的感染过程
Octopus Scanner 恶意软件可以在 Windows、Linux 和 macOS 上运行,能够识别 NetBeans 项目文件,并将恶意有效负载嵌入项目文件和构建 JAR 文件中。
安全研究员 JJ 发布了 Octopus Scanner 恶意软件的具体攻击过程:
- 识别用户的 NetBeans 目录
- 枚举 NetBeans 目录中的所有项目
- 将恶意负载复制 cache.dat 到 nbproject/cache.dat
- 修改 nbproject/build-impl.xml 文件以确保每次构建 NetBeans 项目时都执行恶意有效负载
- 如果恶意负载本身是 Octopus Scanner 的一个实例,则新建的 JAR 文件也会被感染。
据了解,Octopus Scanner 感染计算机的最后一步是下载一个远程访问木马,这样攻击者就可以在用户的计算机中搜集敏感信息。
需要注意的是,Octopus Scanner 在感染过程中可能会发生“变异”。虽然 GitHub 目前只能访问一个 Octopus Scanner 样本,但是在受感染的存储库中发现了四个不同版本的 NetBeans 感染项目,其中三个都是影响下游系统,例如,直接在受感染的存储库中进行构建,或者是使用受感染的构建工具在下游系统中生成了受感染的工具,逐步形成“套娃”传播。另外一个“变体”是执行本地系统感染,但不影响构建工具。
攻击者的目的是什么?攻击者的真正目的可能不是要影响 Java 项目,而是想要在开发敏感项目或主流软件开发公司内部人员的计算机上“留一手”,通过 RAT 病毒窃取到即将发布的工具、企业级软件及闭源软件的敏感信息。
GitHub 表示:“Octopus Scanner 恶意软件已经运行多年了,最早可以追溯到 2018 年 8 月,当时是上传到了 VirusTotal web scanner 上。截止到现在,Octopus Scanner 一直没有被有效阻止,虽然这次只在 GitHub 的 26 个存储库中发现了 Octopus Scanner ,但是我们相信,在过去的两年中,应该有更多的存储库被感染了。”
2.除了 NetBeans,其它 IDE 可能也会受影响
GitHub 安全团队在一份报告中称:“Octopus Scanner 恶意软件主要攻击的是 NetBeans 构建过程,但其实 NetBeans 并不是 Java 项目最常用的 IDE。”
由此,GitHub 猜测,如果攻击者专门花时间开发了针对 NetBeans 的恶意软件,那么就意味着这可能是有针对性的攻击,也许他们针对 Make,MsBuild,Gradle 等构建系统也实施了相同的恶意攻击,只是现在还没有引起注意。
更令人不安的是,Octopus Scanner 很难被检测出来,GitHub 向 VirusTotal 上传了样本,60 个杀毒软件只有 4 个能将其检测出来。恶意软件伪装成了 ocs.txt 文件,但实际上它是一个 JAR(Java Archive)文件。
【云栖号在线课堂】每天都有产品技术专家分享!
课程地址:https://yqh.aliyun.com/zhibo立即加入社群,与专家面对面,及时了解课程最新动态!
【云栖号在线课堂 社群】https://c.tb.cn/F3.Z8gvnK
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
ReentrantLock源码解析
谈到多线程,就不避开锁(Lock),jdk中已经为我们提供了好几种锁的实现,已经足以满足我们大部分的需求了,今天我们就来看下最常用的ReentrantLock的实现。 其实最开始是想写一篇关于StampedLock的源码分析的,但发现写StampedLock前避不开ReentrantReadWriteLock,写ReentrantReadWriteLock又避不开ReentrantLock,他们仨是逐层递进的关系。ReentrantReadWriteLock解决了一些ReentrantLock无法解决的问题,StampedLock又弥补了ReentrantReadWriteLock的一些不足,三者有各自的设计和有缺点,这篇文章先和你一起看下ReentrantLock,之后我们会再一起去了解ReentrantReadWriteLock和StampedLock,相信有了ReentrantLock的基础后面的内容也会容易理解很多。 相对于jdk中很多其他的类来说,ReentrantLock提供的接口已经算是非常简单,事实上它只有一个构造参数boolean fair,用来指定是公平锁还是非公平...
- 下一篇
最受欢迎Java数据库访问框架(DAO层)
云栖号资讯:【点击查看更多行业资讯】在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 本文将带您浏览和比较最受欢迎Java数据库访问框架(DAO层)。假设您正在开发一个Java程序,有许多办法可以让您的应用连上数据库。下面会列举各数据库访问框架的适用场景,相信能够帮您选到适合项目的开发框架。 JDBC:简单数据库查询 最简单的办法莫过于使用JDBC提供的Java API。输入查询SQL语句调用API返回结果: ResultSet rs = stmt.executeQuery("SELECT id, name FROM Employees"); while(rs.hasNext()){ log.info("Employee id: " + rs.getInt("id") + " has name: " + rs.getString("name")); } 适用场景:不希望学新框架,要求轻量级解决方案,需自定义查询,不用长期维护; 不适合:不想写很多代码,未来可能需要做数据库迁移。 要减少模板代码,可以考虑使用jdbc-template工具,像是Spring JDBC tem...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Hadoop3单机部署,实现最简伪集群
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果