JetBrains Marketplace供应链攻击:15个恶意插件窃取7万+开发者AI API密钥
JetBrains Marketplace遭遇大规模供应链攻击,15个伪装为AI编码助手的恶意插件通过7个供应商账户潜入,累计安装量超过7万次。这些插件静默窃取OpenAI、DeepSeek和SiliconFlow的API密钥,将开发者的AI配额在暗网上转售。攻击持续8个月未被发现。
事件始末:8个月的静默窃取

2026年6月,安全公司Aikido和BleepingComputer联合披露了一起针对JetBrains Marketplace的大规模供应链攻击事件。15个恶意插件通过7个不同的供应商账户发布,伪装为AI编码助手、代码审查工具、Git辅助工具、Bug查找器和单元测试工具,累计安装量超过70,000次。
这不是一次仓促的攻击。最早可追溯的恶意插件发布于2025年10月31日——一个名为"DeepSeek Junit Test"(org.sm.yms.toolkit)的插件。随后在11月1日和11月9日,又分别发布了"DeepSeek Git Commit"(com.json.simple.kit)和"DeepSeek FindBugs"(org.bug.find.tools)。攻击者采用渐进式发布策略,每次新增1-2个插件,避免一次性大规模发布引起注意。
这些插件的核心恶意行为是:从插件设置中读取用户配置的AI API密钥,然后将其外泄到一个硬编码的远程服务器。目标明确——OpenAI、DeepSeek和SiliconFlow这三个在开发者工具中最广泛使用的AI API。被盗的API密钥在暗网上被转售,让攻击者可以免费消耗受害者的配额,而受害者继续为账单买单。
从2025年10月到2026年6月,这场攻击持续了整整8个月。在这段时间里,70,000多名开发者安装了这些插件,其中有多少人的API密钥被窃取,目前尚无确切数字。但考虑到这些插件的功能描述——AI编码助手、代码审查、Git提交——安装这些插件的开发者几乎必然配置了AI API密钥。
攻击手法解析:如何在Marketplace投毒

JetBrains Marketplace的插件审核机制与VS Code Marketplace类似——依赖自动化扫描和社区举报。攻击者利用了几个关键弱点:
1. 供应商身份伪造
攻击者创建了7个看似合法的供应商账户,使用了与知名AI工具相似的名称和描述。这些账户没有历史记录,但在JetBrains Marketplace上,新供应商并不罕见——大量独立开发者通过Marketplace发布插件。
2. 功能描述与实际行为差异
恶意插件在功能描述中声称提供AI辅助编码能力。它们确实包含部分合法功能(例如基本的代码格式化),但核心恶意代码隐藏在深层调用链中。当用户在插件设置中配置API密钥时,密钥会被静默读取并外泄。
3. 外泄端点统一
所有15个恶意插件使用同一个外泄端点。这意味着攻击者可以通过单一服务器收集所有被盗密钥。安全研究人员通过逆向分析插件代码发现了这个端点——但在此之前,70,000次安装已经完成。
4. 渐进式发布规避检测
攻击者没有一次性发布15个插件,而是跨越8个月分批发布。每次发布1-2个插件,间隔数周到数月。这种策略有效规避了Marketplace的异常检测机制——单个新插件的发布不会触发警报。
受影响插件与供应商

| 伪装功能 | 插件ID示例 | 发布日期 | 目标API |
|---|---|---|---|
| AI单元测试 | org.sm.yms.toolkit | 2025-10-31 | DeepSeek |
| Git提交助手 | com.json.simple.kit | 2025-11-01 | DeepSeek |
| Bug查找器 | org.bug.find.tools | 2025-11-09 | DeepSeek |
| 代码审查助手 | 多个变体 | 2025-12至2026-06 | OpenAI, SiliconFlow |
| AI编码助手 | 多个变体 | 2026-01至2026-06 | OpenAI, DeepSeek, SiliconFlow |
供应商账户: 7个独立账户,名称模仿知名AI工具品牌
总安装量: 70,000+
攻击持续时间: 2025年10月31日 — 2026年6月(约8个月)
检测与清理
检查是否安装了恶意插件:
# 在JetBrains IDE中检查已安装插件
# File → Settings → Plugins → Installed
# 或通过命令行检查插件目录
find ~/.config/JetBrains/ -name "*.jar" -path "*/plugins/*" | while read jar; do
echo "=== $jar ==="
unzip -p "$jar" META-INF/MANIFEST.MF 2>/dev/null | grep -i "vendor\|name\|version"
done
# 检查是否有到已知外泄端点的网络连接
# (具体端点信息需参考安全厂商的IOC报告)
netstat -an | grep -i "ESTABLISHED" | grep -v "127.0.0.1"
如果已安装恶意插件,立即执行:
# 1. 卸载所有可疑插件
# 在IDE中: Settings → Plugins → 选择可疑插件 → Uninstall
# 2. 轮换所有AI API密钥
# OpenAI: https://platform.openai.com/api-keys
# DeepSeek: https://platform.deepseek.com/api_keys
# SiliconFlow: https://cloud.siliconflow.cn/account/ak
# 3. 检查API使用记录是否有异常消费
# 查看API dashboard中的调用量和费用
# 4. 检查项目中是否有其他凭证泄露
grep -r "sk-\|api_key\|secret" ~/.config/JetBrains/ --include="*.xml" --include="*.json"
开发者供应链安全的系统性问题
这次攻击暴露的不仅是个别插件的问题,而是整个IDE插件生态的系统性安全风险。
问题一:插件审核机制薄弱
JetBrains Marketplace和VS Code Marketplace都面临同样的困境——插件数量增长快于审核能力。开发者期望Marketplace有丰富的插件生态,但审核每个插件的代码行为需要大量资源。攻击者利用了这个矛盾。
问题二:API密钥的明文存储
大多数IDE插件将API密钥存储在明文配置文件中。当插件请求读取这些配置时,IDE不会进行额外的权限验证——插件可以访问其权限范围内的所有数据。这与移动App的权限模型形成鲜明对比——Android和iOS至少会显示"此应用请求访问您的位置"之类的提示。
问题三:AI API密钥的经济价值被低估
一个被盗的OpenAI API密钥可以让攻击者免费使用GPT-4级别的模型,而受害者继续为账单买单。这创造了一个活跃的暗网市场——被盗API密钥的转售价格远低于正常订阅费用。随着AI API的使用量增长,这类攻击的经济激励只会更强。
问题四:信任链的脆弱性
开发者信任JetBrains Marketplace上的插件,就像他们信任npm包或Docker镜像一样。但每一次信任传递都增加了攻击面。当一个70,000人安装的插件被证明是恶意的,受损的不仅是这70,000个开发者,还有整个生态系统的信任基础。
与近期供应链攻击的对比
| 攻击事件 | 平台 | 攻击向量 | 影响范围 | 持续时间 |
|---|---|---|---|---|
| JetBrains恶意插件 | JetBrains Marketplace | 伪装AI助手插件 | 7万+安装 | 8个月 |
| Axios npm供应链 | npm | 朝鲜黑客投毒 | 1亿+下载量 | 数月 |
| n8n供应链攻击 | npm | 恶意社区节点 | OAuth令牌窃取 | 数月 |
| Nx s1ngularity | npm/GitHub | AI驱动恶意软件 | 2,180账户 | 数天 |
| Mastra供应链攻击 | npm | 140+恶意包 | 广泛 | 数天 |
| Shai-Hulud蠕虫 | npm | 自我传播 | 自动化供应链攻击 | 数周 |
防御建议
个人开发者:
- 仅安装经过验证的插件,优先选择官方或知名开发者维护的插件
- 使用环境变量或密钥管理器存储API密钥,而非IDE插件设置
- 定期审查已安装插件列表,移除不再使用的插件
- 启用API密钥的使用量告警,及时发现异常消费
企业团队:
- 实施插件白名单制度,仅允许经过安全审查的插件
- 使用集中式密钥管理(如HashiCorp Vault),避免API密钥分散在各开发者机器上
- 监控API密钥的使用模式,检测异常调用来源
- 考虑使用企业级IDE配置,限制Marketplace访问
# API密钥使用量异常检测脚本
import json
from datetime import datetime, timedelta
def check_api_anomaly(api_usage_log, threshold_multiplier=3):
"""检测API密钥使用量是否异常"""
recent = [u for u in api_usage_log
if u['timestamp'] > datetime.now() - timedelta(hours=24)]
baseline = [u for u in api_usage_log
if u['timestamp'] <= datetime.now() - timedelta(hours=24)]
if not baseline:
return False
avg_daily = sum(u['tokens'] for u in baseline) / len(baseline)
recent_total = sum(u['tokens'] for u in recent)
if recent_total > avg_daily * threshold_multiplier:
print(f"[ALERT] API usage anomaly: {recent_total} tokens in 24h "
f"(baseline avg: {avg_daily:.0f})")
return True
return False
数据来源与参考文献
- StepSecurity. "15 Malicious JetBrains Plugins Stole AI API Keys." stepsecurity.io, 2026.
- Penligent. "Malicious JetBrains Plugins Are a Developer Supply Chain Problem." penligent.ai, 2026.
- Navanem. "JetBrains Malicious Plugins Steal AI API Keys: 70K Installs." navanem.com, June 17, 2026.
- Satyam Rastogi. "JetBrains Malicious Plugins: AI API Key Harvesting Attack." satyamrastogi.com, 2026.
- Cyber Security News. "Malicious JetBrains and VS Code Extensions Steal API Keys." cybersecuritynews.com, 2026.
- The Hacker News. "Coordinated Malware Campaign on JetBrains Marketplace." thehackernews.com, June 17, 2026.
更新时间:2026-06-25
评论