与朝鲜有关的攻击者将与 OTTERCOOKIE 一致的恶意软件隐藏在通过虚假开发人员编码测试分发的 SVG 国家/地区标志文件中。恶意代码在目标启动所提供的电子商务项目时执行,而不是在某人仅查看图像时执行。
该活动(编号为 REF9403)利用社会工程而非软件漏洞。攻击者冒充招聘人员或项目所有者,向开发人员提供工作机会,并说服他们下载并运行功能编码评估。
Elastic 安全实验室发现 REF9403攻击者在公司社区 Slack 工作区中发布了开发人员机会后。 Elastic 将此次行动与“传染性采访”联系起来,这是一项由与朝鲜结盟的演员发起的长期活动。
假编码测试如何影响开发人员
2026 年 5 月 26 日,一位名为“Maxwell”的 Slack 用户在招聘频道中发帖,声称需要帮助实现电子商务平台的现代化。感兴趣的开发人员被转移到私人消息中,并被要求完成编码评估。
所提供的项目看起来是合法的。它使用熟悉的网络开发技术,并在安装后保持功能,帮助存储库看起来像一个真正的技术测试。
这种方法利用了开发人员对招聘工作流程的信任。候选人希望在评估期间克隆存储库、安装依赖项、检查代码并启动本地服务器,从而为攻击者提供请求潜在危险操作的合理理由。
该项目包含显示国旗的 SVG 图像。文件如AE.svg和AF.svg正常渲染,但其源代码包含 HTML 风格的注释块,其中包含 Base64 编码的恶意软件片段。
SVG 是一种基于 XML 的图像格式,可以包含文本、元数据和注释。在这种情况下,攻击者并没有通过更改图像像素来隐藏代码。他们将编码文本直接放置在图像查看器会忽略的注释中。
名为的 JavaScript 文件serverValidation.js收集 SVG 文件,按字母顺序对它们进行排序,提取注释并连接片段。然后它解码并执行重构的 JavaScript 有效负载。
| 攻击阶段 | 观察到的活动 |
|---|---|
| 招聘诱惑 | 通过 Slack 发布的虚假开发人员机会 |
| 私人联系方式 | 感兴趣的目标已转移到直接消息中 |
| 项目交付 | 提供功能性电子商务编码评估 |
| 有效负载存储 | Base64 片段放置在 SVG 标志文件内的注释中 |
| 重建 | serverValidation.js读取并连接片段 |
| 执行 | 每当项目服务器启动时,恢复的 JavaScript 就会运行 |
| 数据盗窃 | 收集的凭证、钱包、文件和剪贴板数据 |
| 远程访问 | Socket.IO通道允许交互式命令执行 |
有效负载在服务器启动时运行
该项目的server/index.js文件在设置其初始中间件后调用恶意验证例程。两个都npm run dev和npm start启动此服务器文件。
因此,每次本地开发服务器启动时,恶意软件都会运行。仅关注安装脚本的包管理器控件可能不会停止此执行路径。
这也意味着 SVG 预览本身不会感染系统。观察到的攻击要求目标运行项目并激活服务器端 JavaScript,以重建隐藏的有效负载。
为什么研究人员称之为“OTTERCOOKIE-Aligned”
Elastic 发现恢复的 JavaScript 和 OTTERCOOKIE 之间存在相似之处,包括匹配的字符串、代码结构、行为和 API 端点。然而,该样本包含了先前在相关恶意软件家族中划分的修改和组合功能。
这微软传染性访谈分析将 OTTERCOOKIE 描述为模块化 JavaScript 后门,可以执行命令、搜索加密货币密钥、加载附加模块和窃取数据。
Elastic 表示,OTTERCOOKIE 和 BEAVERTAIL 之间的界限已经变得不太清晰。 REF9403 有效负载作为一个一体化工具包运行,没有一些早期传染性访谈感染中出现的 Python 阶段。
设备上运行的四个恶意软件模块
重构后的 JavaScript 启动了四个主要组件。它们共同提供凭据盗窃、文件收集、剪贴板监控和远程访问。
第一个组件针对 Windows、macOS 和 Linux 上的浏览器凭据、自动填充数据库和加密货币钱包扩展。它将其进程标题更改为npm-cache看起来就像一个普通的 Node.js 进程。
其他组件搜索文件系统、创建 Socket.IO 命令通道并收集剪贴板内容。在 Windows 上,恶意软件还可以尝试从攻击者控制的基础设施下载其他可执行文件。
| 模块 | 主要能力 | 支持的平台 |
|---|---|---|
| 浏览器和钱包盗窃者 | 收集保存的浏览器数据和加密货币钱包扩展数据库 | Windows、macOS 和 Linux |
| 文件窃取者 | 搜索文档、源代码、凭证和配置文件 | Windows、macOS 和 Linux |
| Socket.IO RAT | 提供系统注册和交互式shell命令执行 | Windows、macOS 和 Linux |
| 剪贴板窃取者 | 监控并上传不断变化的剪贴板内容 | Windows 和 macOS |
| 有效负载投放器 | 尝试下载并执行其他文件 | 视窗 |
浏览器凭证和加密货币钱包成为目标
凭证模块搜索属于 Chrome、Edge、Brave、Opera 和 LT Browser 等浏览器的配置文件。确切的浏览器路径因操作系统而异。
它的目标数据库可以包含保存的登录信息、自动填充信息和扩展数据。这些样本还包含 25 个加密货币钱包浏览器扩展的硬编码列表,包括 MetaMask、Phantom、Rabby、Trust Wallet、TronLink、OKX Wallet 和 Coinbase 相关替代品。
在 macOS 上,该模块还尝试收集用户的登录钥匙串数据库。即使受害者更改了一个帐户密码,被盗的浏览器会话或钱包扩展数据也可能仍然有用。
文件窃取程序搜索开发人员目录
文件窃取组件会搜索环境文件、私钥、shell 历史记录、文档、源代码、配置文件和图像。在 Windows 上,它会在扫描之前枚举已安装的驱动器。
在 macOS 和 Linux 上,搜索重点是用户的主目录。路径包含.aws,.azure,.config,.ssh,.bash_history或者.zsh_history受到特别关注。
这种定位会带来严重的组织风险。开发人员计算机通常包含云凭据、存储库令牌、SSH 密钥以及对 CI/CD 系统的访问权限,这些系统可以支持更广泛的妥协。
- 包含应用程序机密的环境文件
- AWS 和 Azure 凭证
- SSH私钥和配置
- Shell 命令历史记录
- 源代码文件和项目文档
- 浏览器登录数据库
- 加密货币钱包扩展数据
- macOS 登录钥匙串数据
Socket.IO 后门为攻击者提供了交互式 Shell
远程访问模块连接到controller.rightwidth[.]dev通过 HTTPS 上的 Socket.IO。它注册受感染的系统并将识别主机信息发送到控制器。
操作员可以通过通道提交shell命令。该恶意软件使用 Node.js 运行它child_process.exec()并返回输出,提供对受感染机器的交互式访问。
该模块检查 VMware、VirtualBox、QEMU 和其他虚拟化环境的迹象。积极的结果会在注册信息中添加虚拟机标签,但恶意软件会继续运行。
剪贴板监控每半秒运行一次
在 Windows 和 macOS 上,剪贴板组件每 500 毫秒检查一次新内容。任何更改都可以发送到攻击者的基础设施。
Windows 系统使用重复的隐藏 PowerShell 命令运行Get-Clipboard。在 macOS 上,恶意软件使用pbpaste命令。分析样本中的 Linux 实现没有收集剪贴板内容。
此功能可能会泄露开发人员在日常工作期间复制的密码、API 令牌、钱包地址、恢复短语或私人消息。
Windows 组件尝试额外下载
仅适用于 Windows 的 dropper 尝试下载三个伪装为.txt扩展。它将它们重命名为hostService.exe,printSvc.exe和dhcpSvc.exe执行前。
Elastic 无法检索这些文件,因为服务器在分析期间不可用。因此,它们的确切功能尚未得到证实,并且不应从其文件名中推断出来。
失败的检索并不能使受感染的系统变得安全。凭证盗窃、文件收集、剪贴板监控和远程访问模块已经可以暴露敏感信息,而无需这些额外的有效负载。
多年来,传染性采访一直针对开发人员
传染性面试至少从 2022 年 12 月开始运作。攻击者通常冒充加密货币、技术或人工智能公司的招聘人员,并引导受害者完成令人信服的招聘流程。
Unit 42 的传染性访谈研究此前有记录显示,与朝鲜有关的假招聘人员向技术求职者发送 BEAVERTAIL 和 InvisibleFerret 恶意软件。

REF9403 活动改变了包装,但社会工程目标保持不变。攻击者需要目标信任该分配并在包含有价值凭据的环境中执行代码。
与 REF9403 相关的指标
安全团队应结合文件、网络和行为指标。存档名称可以轻松更改,而合法项目可能会巧合使用通用名称,例如ecommerce-main.zip.
| 类型 | 指标 | 报告目的 |
|---|---|---|
| 文件 | serverValidation.js | 从 SVG 注释重建有效负载 |
| 文件 | AE.svg和AF.svg | 包含编码片段的标志文件示例 |
| 流程标题 | npm-cache | 恶意软件进程伪装 |
| 领域 | rightwidth[.]dev | 剪贴板和命令基础设施 |
| 领域 | ldb.rightwidth[.]dev | 浏览器和钱包数据收集 |
| 领域 | upload.rightwidth[.]dev | 被盗文件上传 |
| 领域 | controller.rightwidth[.]dev | Socket.IO远程访问控制器 |
| 领域 | file.rightwidth[.]dev | Windows有效负载下载 |
| IPv4 | 195.26.248[.]212 | 报告的指挥基础设施 |
| IPv4 | 188.40.64[.]61 | 报告的指挥基础设施 |
开发人员如何检查编码评估
开发人员应该将每个未经请求的编码测试视为不受信任的代码。完善的界面、有效的依赖关系和工作功能并不能证明存储库是安全的。
执行前,审查人员应检查package.json、服务器启动文件、任务配置和读取资产目录的脚本。 SVG、HTML 或其他静态文件中的长编码注释也值得调查。
这Microsoft 缓解指南建议使用隔离的非持久虚拟机进行编码测试,并避免使用有权访问生产系统、存储库或云帐户的主工作站。
- 通过独立渠道验证招聘人员和公司。
- 检查存储库和发件人帐户的年龄和历史记录。
- 检查所有启动和任务配置文件。
- 搜索
eval()、动态函数构造和shell执行。 - 检查 SVG、HTML 和其他静态资源中的注释。
- 使用没有个人或公司凭据的一次性虚拟机。
- 在测试未知项目时限制出站网络访问。
- 请勿应招聘人员的要求禁用安全工具。
运行可疑存储库后该怎么办
任何运行匹配项目的人都应该断开设备与网络的连接,并联系相关的安全团队。清理前应保留存储库、终端历史记录、进程信息和网络日志。
凭证应从单独的受信任设备轮换。团队应撤销浏览器会话、存储库令牌、npm 凭据、云密钥和受影响帐户可用的其他机密。

Elastic 的 REF9403 指标可以支持狩猎,但响应者还应该调查行为证据,例如广泛的文件枚举、重复的剪贴板访问、可疑的 Node.js 进程和意外的 Socket.IO 连接。
- 隔离可疑的开发人员设备。
- 保留存储库并记录其来源和提交信息。
- 收集正在运行的进程、终端历史记录和网络日志。
- 搜索已知的文件名、域、IP 地址和存档哈希值。
- 从干净的设备撤销活动会话。
- 轮换 GitHub、GitLab、npm、SSH、云和 CI/CD 凭据。
- 检查加密货币钱包并转移资金(如果可能存在风险)。
- 检查源代码控制和云审核日志是否存在未经授权的访问。
- 调查通过设备上存储的凭据可访问的其他系统。
- 当响应者无法确定完整范围时重建端点。
开发人员端点需要更强的隔离
开发人员需要能够执行代码、安装包和访问外部服务的工具。这些功能使他们的系统成为有价值的目标,并可能削弱为普通办公设备设计的控制。
较早的Unit 42 针对开发者的调查结果展示了虚假采访如何在 Windows 和 macOS 系统上放置跨平台恶意软件。 REF9403 将该模式扩展到开发人员可能认为无害的资产。
组织应为候选人评估、开源测试和不熟悉的存储库提供专用环境。短期凭证、秘密保险库和严格的访问边界可以减少开发人员运行恶意代码的影响。
FAQ
什么是 REF9403 活动?
REF9403 是 Elastic Security Labs 跟踪与朝鲜有关的传染性采访活动的名称,该活动向软件开发人员分发恶意编码评估。
查看受感染的 SVG 图像是否会运行 OTTERCOOKIE 恶意软件?
当某人仅仅查看标志图像时,观察到的 REF9403 感染不会开始。当受害者启动所提供的项目并且其服务器端 JavaScript 重建并执行存储在 SVG 注释中的 Base64 片段时,恶意软件就会运行。
恶意软件可以窃取哪些信息?
该恶意软件可以收集浏览器凭据、自动填充数据、加密货币钱包扩展数据库、云凭据、SSH 文件、环境文件、文档、源代码、shell 历史记录和剪贴板内容。
哪些操作系统受到影响?
主要凭证、文件窃取和远程访问模块支持 Windows、macOS 和 Linux。在分析的示例中,剪贴板集合适用于 Windows 和 macOS,而其他可执行文件下载则针对 Windows。
开发人员在运行可疑的编码测试后应该做什么?
开发人员应隔离设备、保存证据并通知安全团队。应从单独的干净设备中撤销或轮换暴露的会话和凭据,包括源代码控制令牌、云密钥、SSH 密钥和加密货币钱包机密。
