周二早上,财务把「费用与成本」里按天账单截图丢进群:周末单日按量抬升,多出一批非业务窗口开的 ECS。运维打开 RAM,找到一把给「本机记忆助手」联调用过的永久 AccessKey,最后使用时间正好落在那几天。
再对上公开安全通告:本地知识库工具 Basic Memory 在用 HTTP 类传输跑 MCP 时,恶意网页可经 DNS 重绑定触达本机未鉴权接口,搜索、读取甚至删除笔记。若你曾把阿里云 RAM AccessKey(AK/SK)、.env 片段或部署备忘写进这类本机笔记,就应按「密钥可能已被读走」处理:先停用或删除 AccessKey,再用 ActionTrail 查调用、费用与成本对账并补成本预警。下面按公开外证与阿里云官方文档,说明谁受损、三条边界与控制台止血清单。示例一律打码。
一、外证怎么读:本机笔记助手的传输面
Basic Memory 通告(只引官方已确认结论)
Basic Memory 维护方于 2026 年 10 月 23 日公开安全通告 GHSA-4gfv-c2mm-mvj2。目前能核对的结论如下:
- 受影响软件包:basic-memory(pip);受影响版本:低于 0.24.0;补丁版本:0.24.0
- 文档建议安装 0.24.1 或更高:0.24.0 在全新安装时可能遇到 FastAPI 导入问题,0.24.1 起对 FastAPI 做了固定
- 影响条件:以 MCP 的 sse 或 streamable-http 传输运行时,恶意网页可经 DNS 重绑定触达本机未鉴权 MCP,进而搜索、读取、删除笔记等
- 仅绑定 127.0.0.1 不够:缺的是对 Host / Origin 的校验,不是绑定地址本身
- 默认的 stdio 传输不受本次问题影响
- 0.24 起对 HTTP 类传输补上了重绑定防护,并把 streamable-http 默认绑定改为 127.0.0.1
通告:https://github.com/basicmachines-co/basic-memory/security/advisories/GHSA-4gfv-c2mm-mvj2
升级说明:https://docs.basicmemory.com/whats-new/v0-24 与 https://docs.basicmemory.com/whats-new/v0-24-upgrade
映射到阿里云:为什么是「账号买单」
阿里云官方文档写得很清楚(摘要转述,以文档为准):AccessKey 等于 AccessKey ID 加 AccessKey Secret,用于 API / CLI / SDK,不能登录控制台;但在权限范围内可创建、变更、删除资源,按量费用照样记在阿里云账号(主账号计费主体)上。官方建议:不要给阿里云账号(主账号)创建 AccessKey;日常用独立 RAM 用户;授予最小必要权限;程序身份优先 STS 临时凭证;不要把永久 AccessKey 嵌进代码或随手贴进笔记。
因此,若永久 AK/SK 曾作为「联调备忘」「环境变量片段」写进本机记忆助手的笔记库:HTTP 类传输下笔记可被网页侧触达后,名称与值可能一并落在攻击者手里;对方用编程方式调阿里云 API(在该 RAM 用户权限范围内),开按量资源或拉对象存储;费用与成本曲线抬升,钱记在主账号,跟本机助手窗口标题无关。
虚构打码示例(勿当真钥,仅供对照自家「最后使用时间」):
RAM 用户:ram-dev-notes-xxxx
AccessKey ID:LTAIxxxxxxxx3K7Q
状态:启用
出现位置:本机记忆助手笔记中的「部署备忘 / .env 片段」段落
权限画像:曾挂过偏宽的 ECS / 按量相关系统策略(应立即缩权)
最后使用时间:落在通告公开前后异常开资源窗口内(对照本账号真实记录)

二、谁受损:同一把钥匙,四种账
损失形态不一样,分开说。
财务 / 出纳方面,直接损失是按量账单陡升、可用额度被抽干、可能触发欠费停服;连带是对账周期被打乱。把通告公开日附近标成对账起点,不要等通知邮件齐了再动。
安全 / 合规方面,凭证失控面从「一台业务机上的配置文件」扩到「凡写进本机笔记库、且助手以 HTTP 类传输对外的内容」;审计若拿不出「密钥最后使用时间」与轮转记录,事后更难交代。同一把钥若还进了 CI、本地 .env 或另一台开发机,事件面会更宽。
业务与工程侧,欠费、资源争抢或紧急停钥都可能打到核心服务;「我只是把 AK 贴进笔记方便联调」挡不住账单上的 API 轨迹。本机助手方便检索,网页一旦能翻到笔记,事故也会扩散得更快。
研发 / 运维个人侧,开了本地记忆助手(sse / streamable-http)还把云密钥写进笔记的人是第一接触面;真正买单的仍是阿里云账单方。
止血顺序固定:升级或停用有风险的传输面,停用密钥,再缩权、清异常资源,再核对账单与告警,最后才复盘。
三、三条边界:RAM、AccessKey、账单
RAM 边界:人、策略、最小权限,不是「一个管理员密码」
对照阿里云访问控制 RAM 官方实践(摘要转述,以文档为准):
- 不要给阿里云账号(主账号)创建 AccessKey,主账号密钥接近整本账本,也难以用来源 IP、时间等条件约束。
- 日常运维用独立 RAM 用户,避免主账号登录做开发。
- 授予最小必要权限,慎用「AdministratorAccess」等过宽系统策略;开发机或联调用户应收紧到「本职所需产品与操作」。
- 程序身份优先 STS 临时凭证,或实例 / 服务角色自动取临时凭证,永久 AccessKey 只当作不得已的选项。
- 控制台用户开 MFA;对创建密钥、开高配资源等操作保留审计与变更窗。
- 不要把永久 AccessKey 嵌进代码,也不要随手写进本机笔记、共享文档或聊天记录,存放位置只改变泄露路径,不改变账单归属。

AccessKey 边界:永久 AK 和 STS 不是一回事
硬约束(以「创建 AccessKey」「禁用 / 删除 / 轮转 AccessKey」为准):
- AccessKey 等于 AccessKey ID 加 AccessKey Secret,用于 API / CLI / SDK / Terraform,不能登录控制台。
- 每个 RAM 用户最多 2 个永久 AccessKey;设计意图是「一把业务、一把轮转」。
- Secret 仅创建时显示一次;丢失只能新建再轮转。
- 禁用会立即阻断该密钥的 API 调用;删除通常需先禁用,再入回收站(回收站有保留期,误删可恢复;彻底删除不可恢复,以控制台与文档为准)。
- 也可配置闲置自动禁用。文档常见建议是约 90 天未使用自动禁用,以控制台实际设置为准。
与本场景的对照:HTTP 类传输下本机笔记可被网页侧触达;笔记里的永久 AccessKey,可在权限范围内调阿里云 API;费用记在主账号账单,不记在开发者个人支付渠道。默认 stdio 传输不受本次通告影响。若你已经开过 sse / streamable-http,仍应按「笔记内容可能已被读」盘点密钥。
账单边界:费用与成本看花了什么,预警看偏没偏
打开「费用与成本」里的账单管理:月账单概览、账单详情(消费明细)。异常当周盯按天应付金额,以及按产品、地域汇总的 Top 项。后付费明细常见有呈现延迟;未出账数据不要直接当最终对账依据。记下异常资源或实例 ID,供后续释放与审计。
成本预警可配高额消费预警(按产品日账单阈值)、资金可用额度预警、预算预警、异常检测预警等(见「成本预警」文档)。预算管理可按账号、产品等维度设年 / 季 / 月费用预算;每条预算最多约 5 组预警;超阈值后常见 T+1 发一次通知;费用预算创建后常见 T+2 才见实际值或预测值,适合当财务雷达,但不会限制资源使用。
异常检测用算法标疑似异常,不为资损负责,也不会自动关资源;开启后结果常见次日可见。严重异常提前预警按官方说法能缩短触达时间,仍不能替代禁用 AccessKey。


四、控制台逐步核对(费用到密钥到资源再到告警)
以下假设你具备账号或 RAM 管理员权限;生产环境请先开变更窗。先停可疑密钥,再清异常资源。
步骤 A|费用侧:偏了多少、偏在哪类产品
- 打开「费用与成本」→「账单管理」→「账单详情」,把时间调到通告公开日(2026-10-23)前后(至少覆盖至停钥之日),看是否单日陡升。
- 按产品类型、按量、地域过滤,记下 Top 资源或实例 ID。
- (可选)打开成本预警、预算管理、异常检测;没有记录不代表没有资损(注意 T+1 / T+2 时延)。
可自填核对(代入本账号真实导出):
- 异常日前 7 日日均:__ 元
- 异常日当日:__ 元
- 比值:__ 倍
- Top 产品(如 ECS 按量):__
- 嫌疑 AccessKey 最后使用时间:__(Asia/Shanghai)
步骤 B|身份侧:陡升对齐到哪把密钥、哪个用户
- 打开 RAM「身份管理」→「用户」:排查命名含「dev」「notes」「memory」「mcp」「tmp」「legacy」的用户,以及近期新建用户。
- 进入用户后的「凭证管理」里看 AccessKey:记录状态、创建时间、最后使用时间。
- 若最后使用时间落入通告公开前后的异常开资源窗口,将该钥视为优先嫌疑对象。
- 同步检查:主账号是否仍持有 AccessKey,若有,按官方建议评估后禁用并删除,业务迁到最小权限 RAM 用户或 STS。
- 有操作审计 ActionTrail 的,按 AccessKey ID 查询调用过的云服务与事件(见 ActionTrail「查询 AccessKey 日志」),交叉验证 IP、产品与资源变更。

步骤 C|权限侧:这把密钥本来能做什么
- 查看该 RAM 用户所属用户组及附加策略。
- 若存在「AdministratorAccess」、过宽的 FullAccess、或「所有资源」范围,泄露影响面接近账号级。
- 编程用用户尽量用自定义策略收到「刚好能完成工作」;控制台管理员与机机账号分离。
- 若该用户历史上挂过管理员类系统策略,先摘策略、再轮转密钥,不要只换一把同样过宽的新钥。
步骤 D|资源侧:停钥之后再清异常开出来的东西
- 先禁用嫌疑 AccessKey(删除通常先禁用;确认业务无影响,再删除或走回收站流程)。
- 每用户最多 2 把钥,可走「一主一备」:新建并切流,观察旧钥最后使用时间不再更新后禁用、删除。
- 按步骤 A 的资源 ID,在对应地域释放异常按量 ECS / 磁盘 / EIP;必要快照仅用于取证。
- 检查是否被新建 RAM 用户、新 AccessKey 或异常角色扮演;凡曾写入本机笔记的同源凭证(含备用钥、CI 副本),按「整组已暴露」轮转。

步骤 E|本机笔记与助手侧:别只盯控制台
- 列出过去一年内,所有曾把阿里云 AK/SK、数据库密码、签名密钥写进本机记忆助手、本地知识库或「联调备忘」笔记的项目。
- 在云厂商侧先撤销 / 禁用旧凭证,再清理笔记中的明文片段并改用密钥管理或临时凭证;只改笔记字符串、不先撤云侧旧钥,等于旧钥仍可用。
- 把 Basic Memory 升到 0.24.1 或更高;若必须使用 HTTP 类传输,按官方升级说明核对 Host / Origin 防护与绑定行为。能改回默认 stdio 的,优先改回。不要把永久云密钥再写回任何本机笔记或共享文档。
五、缓解清单
已发生或高度疑似泄露(小时级)
- 禁用嫌疑 RAM AccessKey;必要时同时缩权(细则以官方最佳实践与变更单为准)。
- 主账号若仍有 AccessKey:业务切到 RAM 用户最小权限钥或 STS 后,禁用并删除主账号 AK。
- 释放异常按量资源;确认费用与成本当日走势回落;高权限控制台用户开启 MFA。
- 通知财务自通告公开日附近起核对可用额度与欠费风险。
- 若密钥曾出现在本机笔记:按「所有曾写入该笔记库的同源凭证」轮转,不要只换一个项目。
- 升级 Basic Memory 到 0.24.1 或更高;暂停有风险的 sse / streamable-http 暴露,优先改回 stdio。
48 小时内(防止复发)
- 清点全部 RAM 用户 AccessKey:无「最后使用」、仅控制台登录的用户,删除多余 AK。
- 编程负载优先改为 STS 临时凭证或角色;必须用永久钥时:最小权限加定期轮转(双钥一主一备)。
- 代码仓、CI、共享盘、本机笔记 / 知识库检索永久凭证痕迹;凡出现过的一律视为已泄露并轮转。
- 配置费用与成本预算预警(例如月预算 80% 实际值 / 预测值)与高额消费预警;确认短信 / 邮件接收人有效。
- 开通并会用 ActionTrail 按 AccessKey 查日志;对「创建 AccessKey / 开 ECS」类事件设团队告警流程。
制度与架构(按迭代落地)
- 本机 AI / 记忆助手接入门禁:上线前检查「云密钥不得以永久明文进笔记库」;HTTP 类传输默认关闭或仅内网变更窗内短时开启。
- 用户组按职能拆分(只读 / 运维 / 费用 / 安全);自定义策略优先于过宽系统策略。
- 密钥轮转写入变更日历(例如每 90 天),轮转记录与「最后使用时间」截图一并归档;择机做一次「停用密钥,业务切流,账单回看」桌面推演。
- 开发机禁止落主账号凭证;生产变更只走角色扮演加变更单。
六、常见误区
「助手绑在 127.0.0.1,网页应该翻不到」
通告写明:缺的是 Host / Origin 校验,DNS 重绑定可以绕过「只绑本机」这类依赖。以官方补丁与升级说明为准。「我用的是默认 stdio,这篇可以跳过」
默认 stdio 不受本次问题影响。但若团队里有人改过 sse / streamable-http,或笔记里本来就有云密钥,仍应按「明文曾落盘」盘点与轮转。「开了 RAM 最小权限就等于密钥安全」
最小权限只降低爆炸半径;永久 AK 仍可能在权限范围内持续开资源。STS 与角色解决的是凭证生命周期。「费用异常检测或预算告警会替你刹车」
不会。官方写明预警不限制资源使用;异常检测也不为资损负责。告警只能当雷达,禁用 AccessKey 才是刹车。「删了密钥就万事大吉」
不完整。还需清异常资源、查新用户或新密钥、按同源凭证轮转、补 MFA 与预算告警,并改掉「永久云密钥写进本机笔记」的习惯。日常管理用已授权 RAM 用户,不要给主账号创建 AccessKey。
七、小结
本机记忆助手让本地笔记变成可被工具检索的知识面。在受影响的 HTTP 类传输版本上,网页侧触达笔记的路径,公开通告已经确认。笔记里若还躺着阿里云永久 AccessKey,安全事件会直接变成费用事件。
企业侧顺序应固定为:
- 升级助手、关掉有风险的 HTTP 类传输或改回 stdio
- 禁用或轮转 RAM AccessKey,缩权到最小
- 清异常按量资源,用费用与成本加 ActionTrail 对齐时间线
- 预算与成本预警托底,制度上禁止把永久 AK 写进本机笔记
谁受损、先做什么,写在篇首。内部故障报告里建议写清三组数字:日均费用对比异常日费用、密钥最后使用时间对比异常开资源时间、助手版本对比 0.24.1。
如果你平时还要把合同、简历或配置文档发给外部大模型处理,可以先在本地用青椒智能脱敏处理敏感字段再上传:https://qingjiaolab.com
八、参考(阿里云文档域 + 公开外证)
阿里云官方文档(help.aliyun.com)
- 创建 AccessKey:https://help.aliyun.com/zh/ram/user-guide/create-an-accesskey-pair
- 查看 RAM 用户 AccessKey 信息:https://help.aliyun.com/zh/ram/user-guide/view-the-accesskey-pairs-of-a-ram-user
- 禁用 RAM 用户的 AccessKey:https://help.aliyun.com/zh/ram/user-guide/disable-an-accesskey-pair-of-a-ram-user
- 删除 RAM 用户的 AccessKey:https://help.aliyun.com/zh/ram/user-guide/delete-an-accesskey-pair-of-a-ram-user
- 轮转 RAM 用户的 AccessKey:https://help.aliyun.com/zh/ram/user-guide/rotate-accesskey-pairs-of-ram-users
- 身份与权限最佳实践:https://help.aliyun.com/zh/ram/product-overview/best-practices-for-identity-and-access-control
- 成本预警:https://help.aliyun.com/zh/user-center/cost-alert
- 预算管理:https://help.aliyun.com/zh/user-center/how-to-manage-a-budget
- 异常检测:https://help.aliyun.com/zh/user-center/anomaly-detection
- 查询 AccessKey 日志(ActionTrail):https://help.aliyun.com/zh/actiontrail/user-guide/query-the-logs-of-an-accesskey-pair
公开外证
- GitHub Advisory GHSA-4gfv-c2mm-mvj2(Basic Memory DNS rebinding / 未鉴权 MCP HTTP 传输):
https://github.com/basicmachines-co/basic-memory/security/advisories/GHSA-4gfv-c2mm-mvj2 - Basic Memory v0.24 发布说明(含安全修复与安装建议):
https://docs.basicmemory.com/whats-new/v0-24 - Upgrade to v0.24(HTTP 传输绑定与 Host / Origin 防护):
https://docs.basicmemory.com/whats-new/v0-24-upgrade
(控制台路径以登录后实际菜单为准;文档与披露版本随上游更新,引用时请打开链接核对。)