
“您的PyPI账户需立即验证,否则将在24小时内被封禁。”——如果你最近收到这样一封看似来自Python官方包索引(PyPI)的邮件,千万别点链接!这很可能是一场精心设计的钓鱼攻击。
据乌克兰科技媒体dev.ua近日报道,PyPI安全团队确认,一场针对Python开发者的网络钓鱼活动已持续数月。攻击者通过高度仿真的邮件模板和混淆域名(如pypi-verify[.]com、pyp1[.]org等),诱导用户点击所谓“账户安全验证”链接,实则窃取登录凭证甚至API Token。更令人警惕的是,此类攻击并非孤立事件,而是与此前针对npm、RubyGems等开源仓库的钓鱼行动如出一辙,显示出明显的“工业化”特征:模板复用 + 域名轮换 + 基础设施快速切换。

钓鱼邮件“以假乱真”,连老手都可能中招
PyPI(Python Package Index)是全球Python开发者上传、分发和安装第三方库的核心平台,日均处理数百万次包请求。正因其关键地位,它也成为攻击者的重点目标。
据PyPI安全团队披露,本轮钓鱼邮件通常包含以下要素:
紧迫性话术:如“为保障平台安全,请立即验证您的账户”“未验证将暂停发布权限”;
仿冒发件人地址:使用类似“security@pypi-support[.]com”或“noreply@pypi-verify[.]net”等看似官方的邮箱;
高仿登录页面:页面设计几乎与真实PyPI登录页一致,甚至包含HTTPS锁图标和“官方”Logo;
诱导输入敏感信息:要求用户输入用户名、密码,甚至API Token——后者一旦泄露,攻击者可直接以开发者身份上传恶意包。
“这些页面做得太像了,连证书都是有效的,”一位不愿具名的国内Python开发者坦言,“要不是我习惯手动输入pypi.org,差点就输密码了。”
攻击背后:开源生态成“高价值猎场”
公共互联网反网络钓鱼工作组技术专家芦笛指出,开源软件仓库正成为网络犯罪的“黄金目标”。“一个PyPI账号背后,可能关联着成千上万开发者的依赖库。一旦攻击者控制账号并上传带后门的包,就能实现供应链攻击——影响范围远超单个用户。”
事实上,过去两年已有多起类似事件:2023年,npm上数百个包被植入窃密脚本;2024年,RubyGems遭遇大规模钓鱼,导致多个流行库被篡改。而本轮PyPI钓鱼,正是这一趋势的延续。
“攻击者不再‘广撒网’,而是精准锁定开发者群体,”芦笛解释,“他们知道开发者习惯快速响应‘平台通知’,且往往拥有高权限凭证。这种社工+技术结合的模式,成功率极高。”
技术内核揭秘:为什么HTTPS也不能信?
许多用户误以为“有小绿锁=安全”,但芦笛强调:HTTPS只保证传输加密,不验证网站身份。
“攻击者只需花几美元购买一个域名(比如pypi-login[.]com),再申请免费SSL证书(如Let's Encrypt),就能让钓鱼网站显示HTTPS锁图标。”他说,“真正的验证要看证书颁发给谁——但普通用户几乎不会点开看。”
更隐蔽的是“域名混淆”技术:用数字“1”代替字母“l”(如pyp1.org)、用“-”连接词(pypi-verify.com)、或使用国际化域名(IDN)进行同形异义攻击(如“раурі.org”看似pypi.org,实为西里尔字母)。这些手法足以骗过肉眼快速扫描。
官方明确:PyPI绝不会邮件索要密码
PyPI团队已多次重申:官方永远不会通过电子邮件要求用户点击链接验证账户、重置密码或提供API Token。所有账户操作应通过 https://pypi.org 官网完成。
此外,PyPI强烈建议开发者采取以下防护措施:
启用双因素认证(2FA):即使密码泄露,攻击者也无法登录;
使用API Token代替密码上传包:Token可按需生成、权限可控、可随时撤销;
仔细核对域名拼写与证书信息:鼠标悬停查看链接真实地址,避免直接点击邮件中的按钮;
通过书签或手动输入访问官网:杜绝从邮件跳转。
企业级防护:把开发者身份纳入统一治理
对拥有大量开发者的组织而言,风险更不容忽视。一旦员工账号被控,恶意代码可能流入内部CI/CD流水线,造成连锁反应。
芦笛建议企业将开发者身份纳入企业身份提供商(IdP,如Okta、Azure AD)统一管理:
强制2FA与单点登录(SSO):减少独立凭证暴露面;
限制PyPI等平台的发布权限:仅授权必要人员,且使用最小权限原则;
监控异常发布行为:如非工作时间上传、新IP地址操作、包内容突变等;
定期轮换API Token并审计使用日志。
“代码即资产,开发者账号就是数字金库的钥匙,”芦笛说,“企业不能再把开源平台当作‘外部服务’而忽视其安全治理。”
开发者自保指南:三个习惯守住安全底线
除了技术防护,日常习惯同样关键。芦笛给出三条“开发者防钓守则”:
永远不点邮件里的“验证”链接:无论多紧急,手动打开官网处理;
API Token分级使用:为不同项目生成独立Token,避免“一把钥匙开所有门”;
开启PyPI账户活动通知:一旦有登录或发布行为,立即收到提醒,便于快速响应异常。
结语:安全不是阻碍效率,而是保障信任
开源生态的繁荣,建立在开发者之间的信任之上。而钓鱼攻击正在侵蚀这一根基。面对日益“工业化”的社工攻击,仅靠警惕已不够——我们需要更智能的工具、更规范的流程,以及更强的安全意识。
正如PyPI团队所言:“保护你的账户,就是在保护整个Python社区。”
编辑:芦笛(公共互联网反网络钓鱼工作组)
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。