同事说「Claude 额度刚刷新又空了,我没开过窗口」。密码经理里那一条还是上个月换的,手机验证码也没弹。过了两天,邮箱里出现 Anthropic 的通知:他们检测到异常用量,已经强制登出,并撤掉了保存的支付方式。信里写,问题不在 Claude 被攻破,而在这台电脑上的 infostealer 把登录会话一并拷走了。

上一篇写过把口令贴进 ChatGPT 或 Gemini 之前,哪些字必须先打码:那是「你主动把明文贴进对话框之后,训练开关和分享链还能不能再读到」。本文换问题:你已经登录之后,浏览器里那份证明「我是本人」的会话,还会留在哪些你能打开、也能被本机程序读走的地方。密钥如果改走阅后即焚,形态仍是 s.html?id=…#…,创建与阅读都不用注册。MyPassGen 的工具打开即用。下面不讲某种木马怎么传播,只对照 Okta 与 Anthropic 已经写进公开说明的数字,以及你能在会话列表里看见的东西。

先分清两件事

「我换过密码、开了验证码」挡住的是下一次登录框。已经发到浏览器里的会话 cookie、JWT,以及写在配置文件里的 API 密钥,并不自动跟着作废。先撤销会话、轮换密钥,再决定要不要继续用这台机器登录。不要用改密码代替「登出所有设备」。

改完密码,为什么账号还能被打开

网站不会在你点开每一页时都再问一次密码。登录成功后,浏览器会留下一份会话:可能是 cookie,可能是 JWT,单页应用还可能把令牌放进 localStorage 或 sessionStorage。之后每一次请求,服务器认的是这份还没过期的证明,不是你此刻能不能背出密码。Okta Threat Intelligence 在 2026 年 9 月 9 日的 Signing in without actually signing in 里把这种证明叫 skeleton key:把还有效的令牌再放进另一个浏览器,攻击者等于已经登录完成,用户名、密码和 MFA 挑战都不会再出现。

这和「密码被猜中」不是同一条路。Passkey、硬件密钥把登录框抬高了,Okta 也写:它们让用户名加密码的接管更难,但挡不住被偷走的会话令牌或 API 密钥。你在设置页改掉密码,通常只影响下一次走登录框的人;已经发出去的会话,要等过期、被服务端撤销,或你在「已登录设备」里把它们踢掉。只改密码、不看会话列表,等于换了大门钥匙,却把还有效的门卡留在桌上。

上一篇写剪贴板时,口令离开的是生成页,进了系统剪贴板,见复制密码之后,剪贴板还会被谁读走。会话令牌离开的是登录页,进了浏览器配置和内存。两份残留都在本机,都不等于「我已经点过复制 / 我已经登录成功,事情就结束了」。无痕窗口关掉之后,书签和下载仍可能留下完整焚链,见关掉无痕窗口之后,下载、书签和剪贴板里的口令还在;会话则更常见于你日常用的那个配置文件,关窗不等于作废。

Okta:一份 7 GB 日志里还活着的令牌

Okta 分析的是 2026 年 8 月 2 日某个 Telegram 频道放出的免费日志,体积约 7 GB,对应 5,871 台被感染的机器,分布在 162 个国家。他们只统计和认证有关的材料,并单独数「到发布当天仍未过期」的那一批——理论上这是会被优先拿去重放的。

按 Netscape cookie 格式数出的认证令牌,Google(含 Workspace 与消费账号)有 9,829 个唯一值,其中 9,213 个在发布日仍有效,出现在 4,144 台机器上。Microsoft(含 Entra 与消费账号)是 2,491 / 1,763 / 1,753。Anthropic 是 561 / 164 / 404。Cursor 是 32 / 16 / 26。同一张表里还有 Amazon、Gamma、Notion、Character.ai、Poe.com、Pika AI。Google、Microsoft、Amazon 用同一套单点登录门面,表里的数字是这道门发出来的主令牌,不是「这个产品更流行」的排名。

JWT 是另一叠。数据集里有 44,791 个唯一 JWT,其中 555 个被他们标成很可能用于 AI 服务认证。另有 2,937 个认证相关的 JWE,多数由 OpenAI 的 NextAuth.js 签发;没有解密密钥就读不出正文,但未过期时仍可能被原样重放。把 JWT 和 JWE 加在一起,发布当天仍未过期的是 1,843 个。Okta 还写:17.7% 的 JWT 正文里带有姓名、电话或邮箱这类明文个人信息。令牌过期之后,这段身份信息不会跟着消失,仍可用于钓鱼。

短寿命的访问令牌常常只有几分钟到一小时,由带 HttpOnly 的刷新令牌续命,用来防网页脚本直接读。Okta 写明:木马不受这条约束。单页应用把 JWT 放进 LocalStorage 或 SessionStorage 时,同样会被收走。他们在这份日志里没有看到被盗的 Okta 会话,但把「改 IP、换设备」之后的会话再评估写成企业侧的检测思路。个人账号没有这套闸,就只剩你自己去会话列表里点撤销。

Anthropic:登出旧会话,清不掉本机木马

2026 年 8 月底,Anthropic 开始给部分 Claude 用户发信。BleepingComputer、SecurityWeek、Help Net Security 和 Malwarebytes 都引过同一封通知。公司写:有人用常见 infostealer 从别人的电脑偷走 Claude 登录会话,再拿这些会话进账号、把额度用掉;若你看见额度像刚补满又在自己没使用时被抽空,多半就是这条路径。他们强调,没有理由认为木马和 Claude 有关、经 Claude 安装,或和你在 Claude 里做的事有关。Help Net Security 还引了一句:手机和平板看起来没有卷进这一波。

SecurityWeek 列出他们点名的家族:Windows 上的 Vidar、Lumma、StealC、RedLine、Acreed,以及少数 Mac 上的 Atomic Stealer(AMOS)。都是通用偷取器,通常跟着非官方下载或恶意应用进来,顺手拷浏览器里保存的密码、登录 cookie 和其他本机凭据。Claude 会话只是收成里的一项,后来才有人专门把这项拣出来用。

公司侧的动作是:强制登出受影响的会话,撤掉已保存的支付方式,并把认定的未授权扣费退回。通知里最要紧的一句是:把你从 Claude 登出,能停掉已经被偷走的那些会话,但不能清掉木马。机器还在,下一次登录会再留下一份新的会话,仍可能被同样的方式拿走。他们建议先处理本机,再改绑定邮箱的口令、打开双重验证,最后才把支付方式加回去。登出是撤门卡,不是给这台电脑消毒。

API 密钥、LocalStorage 和明文配置是另一层

会话 cookie 管的是网页登录。API 密钥管的是程序代你调用模型。Okta 用 TruffleHog 在同一份日志里找到 24 个发布时仍有效的密钥,分属 Google Gemini、OpenAI、Groq 和 OpenRouter。他们举过三笔被盗密钥造成的账单:一家机构接近 100 万美元,一名软件架构师 2.5 万美元,一家做 AI 测试的组织 60 万美元额度。密钥写在配置文件或环境变量里,是最快能跑起来的做法;被本机程序读走时,也是最快能换成别人额度的做法。OpenAI、Anthropic 等允许给密钥加用量上限和 IP 允许名单。没加这些闸,被拿走就按「已经可以代你扣费」处理。

更稳的做法是 OAuth 2.0:程序只拿到短寿命的访问令牌,刷新令牌放进系统钥匙串或密码管理器,并尽量收窄权限。Okta 把「不要把明文 API 密钥写进配置或环境变量」写成和密码同级的要求。密钥如果还要交给同事,不要写进会进 Git、会进网盘同步的明文文件,见把文件丢进网盘前,谁拿得到明文、口令该走哪条路。完整焚链写进配置,同样是一份凭证:# 后面那一段不进 HTTP 请求行,但本机文件和对象存储里仍是整段字,见一次性把口令发给同事时,为什么要把密钥放在网址的 # 后面。

浏览器自己也在补。Okta 提到 Google 2024 年的 App-Bound Encryption,以及把会话密码学绑定到设备上的 Device-Bound Session Credentials;他们写,ABE 很快出现了绕过,DBSC 则还早——网站要在服务端接,Chrome 145 的 Windows 版从 2026 年 3 月起能支持。在网站还没接 DBSC 之前,个人能核对的仍是:会话列表里有没有不是你的设备,密钥是不是还躺在明文文件里。

对照表:密码、验证码和会话各挡什么

用同一条测试账号、同一个你能控制的浏览器配置,分别走「只改密码」「撤销全部会话」「只撤网页会话、密钥文件不动」。你能打开的页面并不一样。下面按「你自己能点开的地方」来写,不按营销名称。

你做了什么 下一次登录框 别人常见结果
只改密码,不开「登出所有设备」 旧密码失效 未过期的 cookie / JWT 仍可能让对方保持已登录
开了 MFA 或 passkey,会话已被本机程序拷走 登录框会要第二因素 重放会话时通常不再出现登录框和验证码
服务端强制登出(如 Anthropic 通知后) 要重新登录 旧会话停用;本机未清理时,新会话仍可能再被拷走
网页会话都撤了,.env 里的 API 密钥没换 网页要重新登录 持有密钥的人仍可按接口扣你的额度
配置里只写焚链编号,密钥另走电话 与登录无关 日志和文件搜不到完整凭证;对半拼齐才能解密

第五行和前四行不要混。把完整 s.html?id=…#… 写进仓库或聊天,本机文件和 infostealer 日志里仍是一份凭证,只是托管密文的服务看不到密钥。编号和密钥拆开,全文搜索才搜不到能打开的完整链接。完整链接仍要当口令本身保管。

当场核对

下面这组步骤不依赖任何品牌承诺。全程使用不会登录真实工作账号的测试账号和测试口令,例如 orange-lake-7。不要拿正在使用的主密码、生产 API 密钥或真实焚链练手。

  1. 用测试邮箱注册或登录一个你能丢弃的 AI 或 Google 账号,在常用浏览器里保持登录。打开该服务的「已登录设备 / 会话 / 安全性」页面,记下当前这一条。再换一个浏览器或无痕窗口用同一账号登录,回到第一个窗口刷新列表:应能看到两条。在列表里撤销不是你正在用的那一条,第二个窗口刷新后应被踢回登录框。这一步核的是「会话列表是不是真能作废门卡」,不是木马。
  2. 仍在第一个窗口保持登录,只改密码,不要点「登出所有设备」。看第二个窗口:有的产品会立刻全踢,有的只让旧密码失效、已打开的会话继续活着。把结果记下来。不要用这个观察去猜所有产品;以你刚才刷新的那一页为准。
  3. 若你使用 Google 账号给 Gemini 或 Workspace 做门:打开 Google 账号的设备活动,核对有没有不是你的地点或浏览器。Google、Microsoft 在 Okta 那张表里是数量最高的两栏,因为一层 SSO 令牌能通向后面一串应用。撤销陌生设备后,再看 Gemini 或邮箱是否要重新登录。
  4. 若你使用 Claude、ChatGPT 或 Cursor:在账号设置里找会话、已登录客户端或 API 密钥列表。能撤销的撤销,能删的密钥删掉再新建。Anthropic 的通知写过:只被网站登出,不等于这台电脑干净。本机是否有偷取器,要用你自己的系统安全工具看,MyPassGen 不会代你扫描磁盘。
  5. 在本机搜测试用的密钥字符串:项目目录、.env、编辑器本地历史、终端历史。网页会话清完之后,明文文件仍是另一份。处理方式见文件加密那一篇,不要把搜到的生产密钥再贴进聊天。
  6. 另建一条 MyPassGen 阅后即焚链接,写入同一句测试口令,过期选 24 小时,阅读次数保持 1。聊天或工单里只贴井号前面的 s.html?id=…,密钥用电话或当面说。打开即用,无需注册。接收方只有编号时应看到链接不完整;两半凑齐才能解密。读完后覆盖剪贴板,不要把带 # 的地址存进会同步的浏览器配置。

公司账号再加半步:问清楚有没有强制 SSO、有没有会话风险检测、API 密钥有没有用量上限和 IP 允许名单。MyPassGen 不会代你判断某家网关有没有另存副本,核对结果以你刚才那几扇窗口为准。

必须交接密钥时怎么拆

一对一、对方能立刻打开时,不要把 API 密钥写进会进仓库、会进网盘、会长在聊天记录里的明文。在本机生成口令,再做成阅后即焚。MyPassGen 的密码生成器随机模式 6–128 位,默认 16,低于 8 位会提示较弱;打开即用,生成结果不作为业务数据上传。创建焚链时浏览器用 AES-256-GCM 加密,明文上限 32 KB,阅读次数默认 1、上限 10,过期可选 1 小时、24 小时、7 天,或只按次数、不设 TTL。服务端只暂存密文。

必须让仓库或工单里留个入口时,把通道拆开。文件只发负责人和编号,以及「密钥走电话」这一句。电话、当面或另一个即时消息账号只发 # 后面那一截。没有两半就解不开。这是用法,不是产品默认拆分;创建页生成的仍是一条完整链接,方便一对一交接。会生成预览卡片的频道,先用测试链接看预览会不会计数,见把阅后即焚链接发到 Slack 或微信,预览会不会先烧掉一次。

超过 32 KB 的密钥包或导出表,不要硬塞进焚链,走文件加密盒:浏览器里 AES-256-GCM 流式加密,单文件不超过 5 GB,输出 .lock / .enc,口令另发。本机先加密再同步,对面只看到密文。把未加密的 .env 推进网盘或留给浏览器扩展去读,和把会话 cookie 留给本机程序是同一类问题:证明「我是本人」的那一份离开了你以为的窗口。

做完「只改密码会不会踢掉第二条会话」和「会话列表里撤销之后另一个窗口是不是回到登录框」这两次核对,你就已经能回答本文的问题:口令换了、验证码也开了,浏览器里未过期的 AI 登录会话和明文 API 密钥仍可能让别人进得去。Anthropic 登出的是旧门卡;Okta 数到的是发布日还活着的那一批令牌。会话列表适合当核对入口,不适合假设「我改过密码就结束了」。

常见问题

我改完密码了,对方是不是也进不去了?

进不了登录框,不代表已经发出去的会话立刻作废。以你在「已登录设备」里刷新到的列表为准。Okta 把重放未过期令牌写成绕过密码和 MFA。先撤销会话,再换密码;两步都做,不要只做你记得住的那一步。

开了 MFA 或 passkey,能不能当阅后即焚?

不能等同。MFA 和 passkey 挡的是登录框。会话令牌证明的是「已经登录完成」。Anthropic 的通知也把问题写成偷会话,而不是猜密码。要核对「服务端有没有密文以外的东西」,用焚链加 Network,不要用「我开了验证码」代替。

把完整焚链写进 .env,比写 API 密钥原文好在哪?

服务端日志和只抓 HTML 的预览通常看不到 # 后面的密钥。本机文件、编辑器历史和 infostealer 日志里却仍可能留下整段网址。谁取出谁就能在焚毁前打开。更稳的是文件只发编号,密钥走另一条通道;密钥本身还是要能撤销、能加用量上限。

创建和阅读要注册吗?删错了有没有客服能找回?

不需要注册。创建与阅读都对访客公开。密文按次数或过期焚毁之后,没有服务端明文备份,也没有客服邮箱可以找回。发错通道就重新生成口令、另建一条链接,不要反复刷新同一条碰运气。