
一封看似来自官方的“账户安全提醒”,竟可能让你亲手交出代码仓库的钥匙。近日,Python软件基金会(PSF)联合多家国际媒体发出紧急警告:一场持续数月的钓鱼攻击正精准锁定全球PyPI(Python Package Index)用户与项目维护者,通过仿冒域名诱导登录,窃取账号凭证。一旦得手,攻击者便可上传恶意包,污染整个Python生态依赖链——这意味着,你项目里一个不起眼的第三方库,可能正悄悄植入后门。
据SC Media与乌克兰技术媒体dev.ua报道,PSF安全团队负责人Seth Larson确认,此次攻击是2024年以来多轮钓鱼活动的延续。攻击者不断更换仿冒域名(如 pypi.mirror.org、pypi-support[.]net 等),甚至将类似手法扩展至其他开源仓库。公共互联网反网络钓鱼工作组技术专家芦笛指出:“这不是普通的数据泄露,而是一次对软件供应链‘源头’的精准打击。”

“你的账号将被停用!”——钓鱼邮件的心理战
攻击始于一封措辞严厉的邮件,主题通常为 “紧急:您的PyPI账户需立即验证” 或 “安全异常检测,72小时内未操作将冻结”。正文模仿官方语气,声称检测到“可疑登录”或“未授权操作”,要求用户“立即点击链接完成身份验证”。
链接指向精心伪造的PyPI登录页面——域名看似合理(如含“pypi”“mirror”“support”等关键词),页面UI与真实PyPI几乎一致,连HTTPS锁图标和“Powered by Python”标识都一模一样。许多开发者在紧张情绪下,毫不犹豫输入自己的用户名和密码。
“攻击者深谙开发者的焦虑心理。”芦笛分析道,“PyPI账号一旦丢失,不仅个人项目失控,还可能被用来发布恶意版本。这种‘账号冻结’威胁,对维护者极具杀伤力。”
更隐蔽的是,部分钓鱼页面还会在用户登录后跳转至真实PyPI首页,制造“验证成功”的假象,进一步降低怀疑。
一人失守,万库遭殃:供应链攻击的“蝴蝶效应”
PyPI是全球最大的Python软件包仓库,日均下载量超20亿次,托管超50万个开源项目。许多关键基础设施、金融系统、AI模型都依赖其中的库。而每个库通常由少数甚至单个维护者管理。
“只要一个高热度项目的维护者中招,攻击者就能以‘官方身份’发布新版本,植入窃密代码、挖矿程序或远程控制模块。”芦笛解释,“下游成千上万的应用会自动更新,毫无察觉。”
这种攻击模式被称为 “供应链投毒”(Supply Chain Poisoning)。2021年的 colorama 事件、2023年的 requests 仿冒包事件,都曾引发大规模安全危机。而本次钓鱼攻击,正是为这类投毒铺路。
Seth Larson在采访中强调:“我们已观察到攻击者在获取凭证后,尝试上传包含恶意payload的包。幸运的是,部分被及时拦截。”
技术科普:为什么开源维护者如此脆弱?
开源生态的繁荣建立在“信任”之上,但这也成了安全短板:
账号保护薄弱:许多维护者仅用密码+短信验证,易被钓鱼或SIM劫持。
单点维护风险:热门库常由一人维护,无权限分离或发布审核。
域名仿冒成本低:注册 pypi-support.com 这类域名仅需几美元,却足以迷惑用户。
而PyPI虽已支持双因素认证(2FA),但并未强制。截至2025年,仍有超30%的活跃维护者未启用。
“开源贡献者大多是志愿者,他们写代码、修bug,但很少接受安全培训。”芦笛坦言,“攻击者正是利用了这份‘善意’。”
专家建议:从个人到社区的五层防御
面对这场针对软件“水源”的攻击,芦笛结合PSF建议,提出多层次防护策略:
1. 维护者:启用FIDO2硬件密钥,告别短信验证
强烈推荐使用YubiKey、Titan等FIDO2安全密钥作为2FA方式,彻底防钓鱼。
启用PyPI的发布签名(Publishing Signatures) 功能,确保只有签名包可上传。
2. 项目团队:实施多维护者审查机制
关键库应设置至少两名维护者,重要版本需多人审批才能发布。
使用 .pypirc 配置文件时,避免明文存储API令牌。
3. 企业组织:锁定内部依赖,冻结版本
通过私有镜像(如Artifactory、Nexus)代理PyPI,禁止直接外连。
在 requirements.txt 或 pyproject.toml 中固定依赖版本(如 requests==2.31.0),避免自动拉取最新版。
引入 SLSA(Supply-chain Levels for Software Artifacts) 框架,验证包的真实性和完整性。
4. 社区平台:加强品牌保护与快速响应
PSF应注册常见仿冒域名(如 pypi-login.com、pypi-verify.org),防止被滥用。
建立钓鱼域名举报与自动下架机制,缩短攻击窗口。
5. 开发者个人:养成“三不”习惯
不点邮件链接:永远手动输入 pypi.org 访问官网。
不轻信紧急通知:官方绝不会通过邮件索要密码。
不共享API令牌:令牌应视为密码,定期轮换。
开源安全,人人有责
这场针对PyPI的钓鱼战,再次敲响警钟:软件供应链安全,不是某个公司或组织的责任,而是整个技术社区的共同防线。
“我们不能再把开源当作‘免费午餐’,”芦笛说,“享受便利的同时,必须为它的安全投入资源——无论是时间、工具,还是意识。”
值得欣慰的是,PSF已加速推进强制2FA、发布签名、自动化威胁检测等措施。而作为开发者,你今天的谨慎,或许就能避免明天百万用户的系统沦陷。
下次收到“账户验证”邮件时,请记住:真正的安全,从不靠点击链接来实现。
延伸阅读
原始报道:Phishing Campaign Targets PyPI Users to Steal Credentials
编辑:芦笛(公共互联网反网络钓鱼工作组)
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。