深翼判例库DeepWing Case Library · INC-046 · 门禁层Access Control);次层:盯梢层

Moltbook 数据库未启用行级安全:约 150 万个 agent 认证令牌与全部数据表可经前端密钥未授权读写,负责披露后 3 小时 12 分修复。 一句话(英):Moltbook ran its database with row level security off: about 1.5 million agent API tokens and every table were open to unauthorised read and write with the frontend key, and the hole was closed 3 hours 12 minutes after responsible disclosure.Moltbook ran its database with row level security off: about 1.5 million agent API tokens and every table were open to unauthorised read and write with the frontend key, and the hole was closed 3 hours 12 minutes after responsible disclosure.

主失效层Primary failure layer:门禁层Access Control);次层:盯梢层 | 证据状态Evidence:一手已核Primary-source verified | 披露日期Disclosed:2026-01-31 | 核查日期Checked:2026-10-30

时间线Timeline

2026-01-31Wiz 在前端 JavaScript 里找到数据库连接信息,确认行级安全未启用
2026-01-31 21:48 UTCWiz 经 X 私信向维护者负责披露
2026-02-01 01:00 UTC全部数据表堵住,距披露 3 小时 12 分
2026-01-31Wiz finds the database connection details in the frontend JavaScript and confirms row level security is off
2026-01-31 21:48 UTCWiz discloses responsibly to the maintainers by X direct message
2026-02-01 01:00 UTCAll tables closed, 3 hours 12 minutes after disclosure

已证实事实Confirmed facts

Moltbook 是一个只供 AI agent 发帖、评论与投票的社交平台,2026 年 1 月底迅速走红,自称注册 agent 达 150 万个。2026 年 1 月 31 日,云安全公司 Wiz 的研究者在前端 JavaScript 里找到 Moltbook 的 Supabase 连接信息,并确认其生产数据库未启用行级安全(Row Level Security,RLS):任何持有该前端密钥的人,无需登录即可对全部数据表做未授权读写。此类密钥按 Supabase 的设计本就供浏览器端使用,单独出现并不构成失效,真正的失效是后端授权策略从未启用,未授权请求被数据库当作管理员请求直接放行。暴露面包括:agents 表内每个 agent 的 api_key、claim_token、verification_code 三件套,共约 1,500,000 个 API 认证令牌可读;owners 表 17,000 余名用户的个人信息;observers 表 29,631 个邮箱;agent_messages 表 4,060 段 agent 间私信对话,其中部分对话含 agent 互发的第三方凭据明文,包括 OpenAI API 密钥;经 PostgREST 报错信息与 GraphQL 自省枚举,全库约 4,750,000 条记录可达。150 万个注册 agent 背后只有约 17,000 名人类所有者,比例为 88 比 1;注册无速率限制,也无机制核验一个 agent 究竟是 AI 还是人跑的脚本。Wiz 于 2026-01-31 21:48 UTC 经 X 私信向 Moltbook 维护者负责披露,双方多轮修复:首轮只堵敏感表的读访问,公开表的写访问仍开放,Wiz 实测可改动线上帖子;GraphQL 自省又枚举出新表;至 2026-02-01 01:00 UTC 全部数据表堵住,共 3 小时 12 分。Wiz 声明其在研究与修复验证期间取得的全部数据已经删除,未报告恶意利用迹象。同一配置问题此前已被安全研究者 Jameson O'Reilly 独立发现,404 Media 于 1 月 31 日先行报道。创始人 Matt Schlicht 此前在 X 公开表示自己没有为 Moltbook 写过一行代码,只有技术架构的构想,AI 把它变成了现实(Wiz 博文引其原帖)。

分项口径说明:Wiz 博文概要称 35,000 个邮箱,正文分项为 owners 表 17,000 余名用户个人信息加 observers 表 29,631 个邮箱,合计高于概要数,原文未说明两口径关系,本条只写分项数字。有报道称平台曾临时下线并重置全部 agent API 密钥(404 Media 报道,经 Wikipedia 转述),Wiz 博文未提及,此点按媒体转述存档,不进事实句。

Moltbook is a social platform where only AI agents post, comment and vote. It went viral at the end of January 2026, claiming 1.5 million registered agents. On January 31, 2026, researchers at cloud security company Wiz found Moltbook's Supabase connection details in its frontend JavaScript and confirmed that row level security (RLS) was never enabled on the production database: anyone holding the frontend key could read and write every table without logging in. Keys of this kind are public by Supabase's design and are not a failure on their own; the failure is that the backend authorisation policy was never switched on, so unauthorised requests were treated as administrator requests. The exposure covered about 1,500,000 API authentication tokens (each agent's api_key, claim_token and verification_code stored together in the agents table), personal information of more than 17,000 users in the owners table, 29,631 email addresses in the observers table, and 4,060 agent to agent message threads in the agent_messages table, some containing third party credentials in plaintext, including OpenAI API keys agents had sent each other. Counting via PostgREST error messages and GraphQL introspection, about 4,750,000 records were reachable. Behind the 1.5 million registered agents stood only about 17,000 human owners, a ratio of 88 to 1; signups had no rate limit and no mechanism checked whether an agent was an AI or a human run script. Wiz disclosed responsibly to Moltbook's maintainers by X direct message at 21:48 UTC on January 31. The fix took several rounds: the first round closed reads on the sensitive tables while writes on public tables stayed open (Wiz verified it could edit live posts), and GraphQL introspection surfaced further tables; all tables were closed by 01:00 UTC on February 1, 3 hours 12 minutes after first contact. Wiz states that all data it obtained during research and fix verification was deleted, and reported no sign of malicious use. The same misconfiguration had been found independently by security researcher Jameson O'Reilly, reported by 404 Media on January 31. Founder Matt Schlicht had posted on X that he had not written a single line of code for Moltbook, that he had the idea for the technical architecture and AI turned it into reality (quoted in the Wiz post).

Note on figures: the Wiz post's summary cites 35,000 email addresses while its body itemises more than 17,000 owners and 29,631 observer emails, a sum above the summary figure; the post does not explain the relationship, so this entry carries the itemised figures only. Reports that the platform briefly went offline and reset all agent API keys (404 Media, via Wikipedia) are not mentioned in the Wiz post and are held as media relay, outside the fact sentences.

失效机制Failure mechanism深翼分析DeepWing analysis

这是门禁关失效的标准形态,且失效方式与 AI 代写代码直接相关。一,失效点是配置默认值,不是代码漏洞:AI 生成的应用脚手架跑通了发帖、投票、私信全部功能,却没有启用 RLS 这一项安全默认配置,生成速度跑赢了配置核查,中间没有任何内部环节拦住。二,安全边界容易被误读:把「密钥出现在前端」当成事故本身会开错药方,本案要查的是每一个把凭据交到前端的系统,其后端授权策略是否逐项实测过。三,一个平台的门禁失效会沿 agent 生态外溢:私信里 agent 互发的第三方 API 密钥随本案一并暴露,受害面越出 Moltbook 自身。四,处置节奏合格,但修复分三轮才堵全,先读后写再冒出新表,说明当事方对自己数据面的清单并不完整,这本身也是门禁账的一部分。五,88 比 1 的 agent 与人类比例、无注册速率限制、无 agent 身份核验,与数据库门禁失效同属一个问题:平台先有了规模,再补门禁,而门禁账要在规模到来之前立。

This is the standard shape of an access control failure, and the failure mode is directly tied to AI written code. First, the failure point is a configuration default, not a code bug: the AI generated scaffold ran posting, voting and messaging end to end, but never enabled RLS, and no internal step checked the configuration before scale arrived. Second, the security boundary is easy to misread: treating a frontend key as the incident itself prescribes the wrong remedy; the question for every system that ships credentials to the frontend is whether its backend authorisation policy has been tested item by item. Third, one platform's access failure spills across the agent ecosystem: third party API keys that agents had sent each other in private messages were exposed with it, beyond Moltbook's own perimeter. Fourth, the response pace was sound, yet the fix took three rounds, reads first, then writes, then newly surfaced tables, showing the operator's own inventory of its data surface was incomplete, which is itself part of the access ledger. Fifth, the 88 to 1 agent to human ratio, no signup rate limit and no agent identity check belong to the same problem as the database failure: the platform took scale first and access control later, while the access ledger has to be opened before scale arrives.

工程启示Engineering lessons

后端授权逐项实测:前端凭据公开是设计常态,失效与否只看后端授权策略是否启用并逐项实测过。

数据面清单先行:先有自己全部数据表与访问路径的清单,修复才不会分三轮才堵全。

门禁账在规模之前立:注册速率限制、agent 身份核验与权限边界要在规模到来之前设好。

Test backend authorisation item by item:a public frontend key is normal by design; failure turns only on whether the backend authorisation policy was enabled and tested item by item.

Inventory the data surface first:with a full inventory of your own tables and access paths, a fix does not take three rounds to close.

Open the access ledger before scale:signup rate limits, agent identity checks and permission boundaries belong in place before scale arrives.

你的系统里,Agent 的对外动作有人盯着吗?Is anyone watching what your agents do outside your system?

做 17 题免费自检Take the free 17-question self-check

回到判例库Back to the Case Library →