窃密木马盯上AI编程助手:.claude.json与config.toml成新目标

Aoki木马新样本窃取AI编程助手凭证,开发者需自查本地文件并轮换密钥。
Symantec报告称,信息窃取木马Aoki的新样本开始针对AI编程助手的凭证文件,包括Claude Code的`.claude.json`、Codex的`config.toml`与`.env`,以及Cursor、Codeium、Gemini等工具的token和AWS凭证。报告未说明入侵途径或受害者数量,但明确指出问题不在agent自身漏洞:Aoki是在以用户身份运行后读取磁盘上已存在的文件。文章建议开发者用命令自查凭证文件,将Codex的`cli_auth_credentials_store`设为`keyring`、用环境变量名替代字面token、为Claude Code配置`apiKeyHelper`,并在怀疑感染时优先在源头吊销和轮换API key。agent的token本质是一种身份,被盗后可被用于操作仓库、云服务和CI/CD,或被转售刷用量。
AI编程助手正在成为恶意软件的新猎物。Symantec威胁猎人团队发布报告称,一款名为Aoki的信息窃取木马(Infostealer)在最新样本中加入了针对AI编程助手凭证文件的能力,点名了.claude.json、Codex的config.toml等配置文件。对于日常使用Claude Code、Codex、Cursor等工具的开发者来说,这不再是一个遥远的安全新闻,而是一份需要立即核对的本地文件清单。

Symantec发现了什么,又没说什么
根据Symantec的报告,Aoki的新样本会窃取AI编程助手的凭证与会话文件,覆盖Claude、OpenAI的Codex、Cursor、Codeium和Gemini等工具。按文件名来看,它包括.claude.json、Claude桌面版cookie、ChatGPT cookie,以及Codex的config.toml和.env文件。此外,GitHub Copilot、Cursor、Google Gemini、JetBrains AI Assistant和Kiro的token,以及AWS凭证,也都在它的清单上。
报告指出这一能力是近期才加入的:早期版本的Aoki并不针对AI相关文件。同时,它仍然保留着传统的窃取目标——数十种浏览器、加密钱包、密码管理器、通讯应用以及VPN和FTP客户端。
说个细节报告留出的空白。它没有说明Aoki如何进入受害机器,没有点名背后的组织,也没有给出受害者数量(Infosecurity Magazine的报道同样没有补充这些信息)。更重要的是,报告没有描述Claude Code、Codex或任何agent自身的漏洞:Aoki只是在你已经以你的身份运行它之后,读取磁盘上已经存在的文件。这一点决定了后续所有防护动作的方向——问题不在工具本身,而在于凭证以什么形式落在哪里。
这些文件里到底装了什么
不同agent存储登录状态的方式不同,官方文档写明了位置。
Claude Code。 在macOS上,登录信息存放在加密的macOS Keychain中;在Linux上是~/.claude/.credentials.json(文件权限0600),Windows上则是%USERPROFILE%\.claude\.credentials.json。Anthropic文档还提到,当Keychain拒绝写入时(例如SSH会话中Keychain被锁定),macOS会回退到该文件。而Symantec点名的~/.claude.json,是Claude Code保存本地或用户级MCP服务器配置的地方。文档建议对"不希望进入版本控制的凭证服务器"使用local scope——这能把token挡在git之外,却挡不住它留在你的主目录里。
Codex。 OpenAI文档明确写道,Codex会把登录信息缓存在~/.codex/auth.json这个明文文件中,或存放在操作系统特定的凭证存储里,并提醒"像对待密码一样对待~/.codex/auth.json:它包含访问令牌"。Symantec清单里写的是Codex的config.toml而非auth.json。在config.toml中,stdio MCP服务器的env表会为该服务器进程设置环境变量,因此以字面值直接写在那里的密钥,就是明文躺在文件里。
一个细节值得留意:两份文件的暴露面并不相同。auth.json存的是登录令牌本身,而config.toml里可能藏着你自己粘贴进去的第三方API key。前者是"平台替我存的",后者往往是"我图省事写死的"——后者恰恰更常见,也更容易被忽视。
**信息窃取木马(Infostealer)**是一种以窃取用户凭证、会话令牌、浏览器保存的密码、cookie、加密钱包等敏感数据为主要目标的恶意软件。与勒索软件不同,Infostealer通常不会加密或破坏文件,而是静默地将数据外传至攻击者控制的C2服务器。它的典型传播渠道包括钓鱼邮件附件、伪装成破解软件的安装包、恶意广告(malvertising)以及供应链攻击。由于窃取的数据可以直接在地下市场变现,Infostealer已成为当前黑产中回报率最高的恶意软件类别之一。Aoki即属于这一类,其新样本将AI编程助手的配置文件纳入了窃取清单。
两条命令自查本地文件
不需要猜测。以下命令只读取和打印,先列出凭证文件是否存在,再在Symantec点名的两个配置文件中查找token形态的字符串:
ls -l ~/.claude/.credentials.json \
~/.codex/auth.json 2>/dev/null
grep -nE 'Bearer |sk-|ghp_|github_pat_|_KEY|_TOKEN' \
~/.claude.json ~/.codex/config.toml 2>/dev/null
在Linux上,ls列出.credentials.json是Claude Code登录的预期位置;在macOS上出现它,则意味着Keychain写入失败、登录回退到了文件。出现auth.json则说明Codex正在用文件缓存登录状态,下一节会讲怎么改。
grep的输出会故意很"吵":像GITHUB_TOKEN这样的变量名后面没有值,是正常的;紧跟一个长字面值,才是需要处理的对象。建议对项目里的.env文件跑同样的grep,因为Symantec的清单里也包含.env。
把找到的东西当作清理清单,而不是感染证据。这些文件对你的用户可读是正常状态,风险只在有恶意程序以你的身份运行时才成立——而这正是报告描述的场景。
把token从明文文件里挪走
对Codex来说,修复只是一个设置项。cli_auth_credentials_store控制CLI缓存凭证的位置,可选file、keyring、auto或ephemeral。keyring会使用操作系统凭证存储,且在其不可用时直接失败:
**操作系统凭证存储(keyring)**是操作系统提供的加密凭证管理服务,macOS上为Keychain,Linux上通常由Secret Service API(GNOME Keyring或KWallet)提供,Windows上为Credential Manager。应用将密钥交由系统凭证存储保管后,静态数据由操作系统加密,访问通常需要用户会话解锁。相比明文文件,keyring提高了攻击者直接读取磁盘文件的门槛,但并非绝对安全:恶意程序若以用户身份运行,仍可能通过系统API请求读取。因此keyring是降低暴露面的一环,而非终点,源头轮换仍是凭证泄露后的必要动作。
**LLMjacking**指攻击者盗用他人云账户或AI服务凭证,以受害者身份和额度调用大语言模型API的行为。攻击者的动机包括免费获得昂贵的模型推理能力、转售API访问权,或通过刷用量造成受害者账单暴涨。由于LLM API按token计费且单价不低,被盗凭证可在短时间内产生显著费用。LLMjacking通常与Infostealer配合:先窃取云服务或AI平台的API key,再用于调用模型。这与Symantec报告中“被盗的AI密钥可以直接变现”的判断一致。
# ~/.codex/config.toml
cli_auth_credentials_store = "keyring"
改完之后运行codex logout再codex login,下一个token就会落进keyring而不是auth.json。
对MCP服务器,别再粘贴字面token。Codex的bearer_token_env_var接收的是环境变量的名字而非token本身。Claude Code方面,如果远程服务器使用带预配置客户端凭证的OAuth,client secret会存放在系统keychain(macOS)或凭证文件中,而不是配置文件里。
但环境变量不是保险箱。如果你在~/.zshrc里export这个key,你只是把明文挪到了另一个文件。Claude Code自身的API key则可以通过apiKeyHelper设置——它运行一个返回密钥的脚本,让密钥来自keychain而非shell配置文件。
怀疑机器已被感染时怎么办
轮换优先于清理。token一旦离开机器,删文件毫无作用。登出也有局限:它清除的是本机上的副本,两家厂商的文档都没有说它能杀掉已经被拿走的副本。真正有效的一步是在源头吊销API key。
- Anthropic:在Claude Console吊销并重新签发API key;在Claude Code中运行
/logout后重新登录。如果你用Pro或Max套餐登录并怀疑被盗,联系Anthropic支持询问如何终止其他会话。 - Codex:
codex logout清除本机存储的凭证;在platform.openai.com轮换OpenAI API key,并向OpenAI支持咨询可能被复制的ChatGPT登录。 - GitHub:在token设置中吊销个人访问令牌,并检查已授权的OAuth应用和GitHub Apps。Symantec的清单包含Copilot token。
- AWS:Symantec同样列出AWS凭证,相应访问密钥也应轮换。
- 清单上的其余项(Cursor、Gemini、JetBrains AI Assistant、Kiro,以及Claude桌面版和ChatGPT浏览器会话):在各账户设置中登出所有会话,再重新登录。
如果需要做网络侧排查,Symantec公布了17个文件哈希和以下C2域名,可与DNS日志比对:dobeqnesmot[.]cc、hjazfioe[.]surf、neihite[.]cc。
这对AI编程工具生态意味着什么
这起事件标志着一个转折:编程agent的token已经具备独立的经济价值。Symantec在报告中解释得很直接——被窃的token"可以让攻击者以合法用户身份和API配额执行操作",并能触达与之关联的仓库、云服务和CI/CD流水线;"被盗的AI密钥可以直接变现,无论是转售还是在受害者账户上刷用量"。Infosecurity Magazine将后者与LLMjacking(盗用LLM额度)联系起来。
换句话说,agent的token本质上是一种身份。谁持有它,谁就能以你的名义、花你的配额、动你的仓库运行agent。这也解释了为什么攻击者会把AI配置文件加进清单——它们和浏览器密码、加密钱包一样,是可以直接兑现的资产。
对开发者而言,实际结论并不复杂:不要假设工具厂商会替你兜底,凭证最终以什么形式存在磁盘上,是你自己的选择。把Codex切到keyring、用环境变量名替代字面token、给Claude Code配上apiKeyHelper,这些动作成本很低,但能把"明文躺在主目录里"这一最常见的问题关掉。剩下的,就是定期自查和轮换的习惯。
相关推荐

房产经纪人用AI提效的5个实操方法(2026版)
房产经纪人如何用AI提效?结合YouTube实操演示,拆解ChatGPT写房源描述、Canva做营销物料、表单管理开放日线索、Zapier自动跟进、卖家面谈准备5个方法,并提示公平住房法规、照片真实性与定价核实等风险边界。

Grok Bot vs ChatGPT Agent:两大AI代理谁更强?
Grok Bot 与 ChatGPT Agent 有何区别?本文对比两者的工作方式:Grok Bot 拥有云端计算机、可常驻工具内自动执行多步任务;ChatGPT Agent 在浏览器中操作网页,通用任务更成熟。附选型建议。

Walmart Agent Gateway:AI帮你自动购物,亚马逊为何反其道而行?
沃尔玛推出Agent Gateway,允许ChatGPT、Gemini等AI助手直接接入商品库替用户搜索比价加购,并设消费限额与逐笔审批三道安全阀。亚马逊则封堵外部AI代理,两大零售巨头走向相反路线。功能目前仅限美国,印度市场或随后跟进。