安全研究人员发现了一项与朝鲜有关的供应链活动,该活动将隐藏的 JavaScript 加载程序植入开发人员使用的开源存储库和软件包版本中。
根据一份新的报告,该活动被追踪为 PolinRider,已蔓延到 npm、Packagist、Go 模块和 Chrome 扩展程序中。套接字报告。该活动与更广泛的 Contagious Interview 和 Famous Chollima 开发者目标集群相关联。
Socket 表示,它在 108 个独特的软件包和扩展中发现了 162 个恶意发布工件。调查结果包括 80 个 Go 模块、10 个 Packagist 软件包和一个 Chrome 扩展程序中的泄露痕迹。
该活动很重要,因为它针对的是正常开发工作流程中的软件开发人员。攻击者不仅仅依赖虚假的工作机会或可疑附件,而是将恶意代码隐藏在看似合法的项目中。
这种方法可能会暴露源代码、注册表令牌、云凭证、钱包数据、SSH 密钥、CI/CD 机密和内部系统。一台受感染的开发人员机器可能成为进入更广泛组织的门户。
Socket 已上线PolinRider 追踪器将活动列为正在进行中,并在新信息可用时跟踪受影响的工件。
| 细节 | Socket 报告了什么 |
|---|---|
| 活动名称 | 波林骑士 |
| 归因 | 与朝鲜有关的活动与传染性采访和著名的千里马有关 |
| 恶意工件 | 跨 108 个包和扩展的 162 个版本工件 |
| 受影响的生态系统 | npm、Packagist、Go 模块和 Chrome 扩展 |
| 主要目标 | 开发者环境和开源供应链 |
攻击者使用多种隐藏方法使受感染的存储库看起来正常。早期版本将混淆的 JavaScript 隐藏在配置文件中,通常使用空白填充将其远远超出可见屏幕宽度。
较新的变体将加载程序伪装成假的 .woff2 字体文件。这使得有效负载更容易被忽视,因为开发人员通常将字体资源视为静态文件,而不是可执行代码。
加载程序还可以通过 Visual Studio Code 任务文件运行。微软的VS Code 任务文档解释了使用folderOpen选项的任务可以在工作区文件夹打开时运行,具体取决于信任和自动任务设置。
用于获取有效负载的区块链 RPC 服务
一旦加载程序运行,它就可以联系区块链和公共 RPC 基础设施,包括 TRON、Aptos 和 BNB 智能链服务。然后,加载器检索加密的第二阶段有效负载材料。
Socket 表示,恶意软件使用嵌入的 XOR 密钥解密该材料,并使用 eval 执行结果。这种设计使攻击者可以更改加载程序背后的有效负载,而无需依赖一个固定的恶意软件文件。
观察到的有效负载包括 DEV#POPPER 和 OmniStealer。一个电子整体分析DEV#POPPER 和 OmniStealer 描述的恶意软件行为包括凭据盗窃、浏览器数据盗窃、钱包定位和远程访问功能。
- DEV#POPPER可以支持远程访问和命令执行。
- OmniStealer 可以针对浏览器数据、凭据和加密货币钱包。
- 基于加载程序的设计意味着其他有效负载可能会在稍后出现。
- 区块链基础设施可能会使有效负载分段更难以快速删除。
GitHub 帐户受损并重写历史记录
PolinRider 活动的主要部分涉及 GitHub 帐户 Xpos587。 Socket 表示,连接到该帐户的多个存储库在 6 月 23 日 10:00 UTC 的同一个狭窄窗口中被修改。
该模式指向帐户级别的妥协,而不是例行的项目维护。与该活动相关的存储库包括 Xpos587/git2md、Xpos587/markfetch 和 Artiffusion-Inc/mirofish。

markfetch存储库使用了假字体方法,而mirofish则在vite.config.js中携带了恶意代码。 Socket 还报告了 Git 历史记录重写,包括强制推送和回溯提交,这可能会使恶意更改看起来比实际情况更旧。
Packagist 和 Go 模块活动扩大了风险
PolinRider 并没有停留在同一个软件包生态系统中。该活动还通过与 7span 组织相关联的 Sevenspan 命名空间到达 Packagist。
Socket 表示,维护人员发现后从一些受影响的存储库中删除了伪造的 .woff2 文件。然而,配置文件中隐藏的一些混淆的 JavaScript 仍然存在,这说明了为什么部分清理可能会错过其他恶意变体。
这PolinRider 的发现还说明了为什么在事件响应期间仅可见的提交历史记录可能还不够。安全团队需要查看存储库活动日志、包发布元数据和注册表发布历史记录。
开发人员应审查的指标
安全团队应将安装受影响软件包版本的任何环境视为可能受到威胁,直到完成审查。这对于能够访问源代码控制、包注册表、云控制台、秘密库、生产系统或加密钱包的机器来说最为重要。
开发人员应检查 .vscode/tasks.json、config.js、vite.config.js、eslint.config.js 以及字体或静态资源目录下的文件中是否存在可疑更改。具有非代码扩展名的文件的异常 Node.js 执行应该引起立即关注。

该活动还表明了为什么受信任的存储库在维护者帐户被接管后可能会变得危险。熟悉的项目名称并不能保证最新版本是安全的。
| 指示器类型 | 指标 | 为什么这很重要 |
|---|---|---|
| GitHub 帐户 | Xpos587 | 链接到批量存储库修改活动 |
| 存储库 | Xpos587/git2md | 连接到恶意Go模块发布活动 |
| 存储库 | Xpos587/markfetch | 使用假的 .woff2 有效负载隐藏技术 |
| 存储库 | Artiffusion-Inc/mirofish | vite.config.js 中包含恶意代码 |
| 命名空间 | 七跨度 | Packagist 命名空间与受感染的软件包活动相关 |
| 文件 | .vscode/tasks.json | 当工作区打开时可以触发隐藏的执行路径 |
| 文件类型 | 假的 .woff2 文件 | 将 JavaScript 加载器伪装成字体资源 |
安全团队现在应该做什么
组织应在清洁受影响的机器之前保存取证文物。太快地移除包裹可能会破坏了解秘密是否泄露所需的证据。
团队应该从已知良好的锁定文件进行重建,从干净的机器轮换公开的凭据,并检查开发人员工作站的自动 VS Code 任务。他们还应该检查存储库是否存在可疑的强制推送、回溯提交和意外的软件包发布。
这套接字活动页面应该帮助团队跟踪新确认的包和扩展。开发人员还应该审查自动任务行为视觉工作室代码并禁用不受信任的工作区自动化。
为什么 PolinRider 是一个严重的供应链威胁
PolinRider 展示了以开发人员为中心的攻击如何不断发展。攻击者不仅发送虚假采访或恶意编码测试。他们还将加载器放入开发人员可能已经信任的存储库和包生态系统中。
这一策略使该活动的影响范围更广。如果受损的程序包进入项目,恶意代码可以在保存敏感凭据和内部访问权限的环境中运行。
与 DEV#POPPER 和 OmniStealer 的连接增加了另一个风险层。这DEV#POPPER 和 OmniStealer 报告展示了开发人员系统如何成为凭证盗窃和更深层次供应链妥协的目标。
FAQ
什么是PolinRider?
PolinRider 是一项与朝鲜相关的开源供应链活动,它将恶意 JavaScript 加载器隐藏在开发人员使用的存储库、软件包版本和扩展中。
哪些生态系统受到 PolinRider 的影响?
Socket 表示,PolinRider 活动涵盖 npm、Packagist、Go 模块和 Chrome 扩展。该活动包括 108 个独特的软件包和扩展中的 162 个恶意发布工件。
PolinRider 恶意软件如何运行?
该活动将混淆的 JavaScript 隐藏在配置文件或虚假字体文件中。在某些情况下,Visual Studio Code 任务文件可以在工作区文件夹打开时触发加载程序。
哪些恶意软件有效负载与 PolinRider 相关?
观察到的后续有效负载包括 DEV#POPPER 和 OmniStealer。这些有效负载可以支持远程访问、凭证盗窃、浏览器数据盗窃和加密货币钱包定位。
如果开发人员安装了受影响的软件包该怎么办?
开发人员应将环境视为可能受到损害的环境,保留取证证据,从已知良好的锁定文件进行重建,从干净的机器轮换暴露的秘密,并审核存储库中的可疑任务文件、配置更改和重写的 Git 历史记录。
