先记结论:图床登录密码的哈希,挡不住截图里已经变成文字的口令,也挡不住用 Image ID 拼出来的直链。改掉图床密码只处理这一家的登录;截图里出现过的活密钥,必须按原系统轮换。能当场核对的是:将要发出的像素里有没有可识别的口令,而不是公告里有没有「哈希」两个字。
一句话先回答搜索意图
把密码截进图床,危险不在「登录密码是不是哈希」,而在「画面本身以及从图里抽出来的文字」会不会作为独立字段离开你的电脑。哈希只覆盖账号口令这一列;OCR 文本、Image ID、上传 IP、User-Agent 和 EXIF 位置是另一组字段。后者一旦外泄,未公开截图不再靠「链接猜不到」,画面里的口令也不再需要先撞开哈希。
这篇文章给开发者、运维,以及习惯把报错、控制台、密码管理器窗口截进图床再转给同事的人。它不代替任何一家图床的事故通报,也不写成「怎么关掉截图」。你要带走的是:公告里的哈希覆盖哪一层、Image ID 让哪一种隐私模型失效、OCR 为什么比像素更容易被检索,以及上传前怎么对照将发出的内容。
这次图床披露拆开了哪几层
2026 年 9 月 16 日,Gyazo 运营方 Helpfeel 发布英文通报,并同期发布日文版。时间线写明:9 月 11 日,第三方利用图片上传服务器的漏洞执行任意命令;当晚发现异常,12 日凌晨前切断入侵路径并完成漏洞修复;14 日确认数据已外泄并暂停部分图片分发;15 日向日本个人情报保护委员会提交报告,并恢复「完成处置后新上传」图片的分发。
通报在 9 月 16 日确认的范围分两块。第一块是用户相关记录约 2362 万条,含用户自行填写的名称或昵称、邮箱、密码哈希、用户 ID、设备 ID、登录会话 ID、已连接时的 X 集成令牌、Google SSO 关联邮箱、资料、语言、注册与最近登录时间、订阅方案和计费状态。通报写明不含信用卡号等支付方式信息;这 2362 万条里也包括未登记邮箱的匿名账号,实际涉及人数仍在调查。
第二块是图片元数据。通报称,主要是 2019 年 1 月及更早登记的约 4.9 亿条(约占全部图片相关数据的 14.4%),另外还有按条件另行取出的约 240 万条。字段包括:构成图片 URL 的 Image ID、上传源 IP、User-Agent、图片内若存在则包含的 EXIF 位置、从图片抽出的 OCR 文本、图片标题、取得元 URL,以及非公开图片口令的哈希。通报里的「图片」包含截图、GIF 和视频。Helpfeel 与 Cosense 使用不同系统,截至该日未确认这两套系统外泄;在它们页面上嵌了 Gyazo 图的,可能因分发暂停而打不开。
这不是「又一家网站密码哈希被拖走」的重复新闻。哈希、会话 ID、Image ID、OCR 文本是四条平行通道。只改图床登录密码,只覆盖第一条,而且挡不住已经泄露的会话 ID——通报写明他们已对认证相关信息做失效和限制,并要求用户修改 Gyazo 密码以及在其他服务上复用的相同或相似密码。
登录密码哈希挡不住画面里的明文
密码哈希的设计目标是:库被拖走之后,攻击者不能直接读出登录口令,还要再花计算去撞。算法、盐、迭代次数决定这一层有多难,但不决定「你截进图里的另一串口令」安不安全。图床账号密码和截图里的生产库密码,从来不是同一列数据。
开发者把终端、浏览器密码框、云控制台或密码管理器窗口截下来,图床收到的是像素。许多图床会再跑一层文字识别,把像素收成可检索的 OCR 文本,方便搜索「那张写着报错的图」。识别结果一旦入库,口令、连接串、Token 就不再只活在图片字节里,而变成可以按关键词过滤的字段。这次通报把「图像的 OCR 文本」单独列进外泄元数据,说明它不是评论区的猜测,而是库里的正式列。
所以「密码是哈希保存的」只能支持很窄的结论:图床这一家的登录口令,在用户表里不是明文。它不能支持:截图里的 SSH 私钥还要先破解哈希;OCR 库里搜不到 BEGIN OPENSSH 或 AKIA;非公开图只有你打得开。后几句要另找证据:看元数据有没有 OCR 和 Image ID,以及你上传前画面上有没有可识别的秘密。
不要用真实口令、API Key 或未脱敏连接串做实验。准备一句只有这次才有的测试文本,或一张只含这句文本的截图。核对的是将发出的像素和请求里有没有这句金丝雀,不是把凭证再送进图床。
Image ID 为什么让「未公开链接」失效
不少图床把「不公开分享」做成:不把图片列进个人主页,只给你一条看起来像随机字符的直链。安全假设是:不知道 ID,就拼不出 URL。这是隐藏地址,不是访问控制。谁拿到 ID,谁就能按同一规则拼出地址。
Helpfeel 的通报把 Image ID 写成「用来构造图片 URL 的信息」,并写明第三者可能用这些信息访问对应图片。他们为此暂时关闭了部分图片的浏览。通报还确认,非公开图片的文件清单已被取走,不能完全排除部分非公开图已被查看。清单加 ID,等于把「只有我知道这条链接」这条假设拆掉。
非公开图即使另设了口令,通报列出的也是「哈希化的口令」。哈希让口令本身多走一步破解;它不让已经知道 ID、并且图床仍在按 ID 出图的人,自动失去像素。图床暂停分发,是运营侧的临时闸门,不是 ID 从未离开过数据库的证明。把「链接没发过群」写成「图不在库里」,是把产品界面的可见性和存储层的可见性混成一句。
EXIF 位置、上传 IP 和 User-Agent 是第三层上下文。手机拍的屏幕或工位环境照,可能带 GPS;上传请求会带出口地址和浏览器标识。即使像素里没有门牌号,元数据也能把「谁、从哪、用什么客户端传了一张图」拼回去。截图工具有的会去掉位置信息,有的不会;不能把「我用的是截图而不是相册」当成 EXIF 一定为空。
OCR 为什么比像素更容易被二次利用
一整张 PNG 要人工翻、要跑视觉模型,才能从杂乱桌面里找出密码框。OCR 文本是已经切好的字符串。外泄之后,检索 password、BEGIN 、sk- 或内网主机名,比翻 4.9 亿张图快一个数量级。通报没有公布识别准确率,也不需要:只要库里存了「从图抽出的文字」,攻击者面对的就是文本字段,不是只能看缩略图。
这也解释了为什么「我设了非公开」挡不住 OCR 这一层。可见性开关管的是产品页把不把图列出来;OCR 管的是图床有没有把画面收成字。两者可以同时为真:界面上未公开,库里却有标题、OCR 和 ID。拖库拿走的是库,不是你的分享按钮状态。
和阅后即焚里「对方截了你的屏幕」不是同一件事。上一篇写的是接收方设备上的副本,托管方删密文也擦不掉。这一篇写的是发送方自己把像素交给图床,图床再抽出文字、编上 ID。一边是「对方留下了」,一边是「你先交出去了」。两边都不能用「链接失效」或「密码已哈希」一笔勾掉。
| 你看见的说法 | 能支持的结论 | 不能支持的结论 |
|---|---|---|
| 公告写密码以哈希保存 | 图床登录口令在用户表里不是明文 | 截图里的口令也要先破解哈希 |
| 图片设为未公开、没发过分享 | 产品页多半没有把它列进公开列表 | 不知道 ID 的人永远拼不出直链 |
| 改掉了图床登录密码 | 这一家的登录口令已轮换 | 截图里的数据库口令和 API Key 也失效了 |
| 图床暂停了部分图片浏览 | 现在按部分 ID 暂时取不到像素 | OCR 文本和历史元数据从未离开过库 |
| 截的是报错界面,不是密码管理器 | 你以为画面里没有口令框 | OCR 一定抽不出 Token、连接串或内网地址 |
| 会话 ID 已由运营方失效 | 这一家当前会话可能已不能重放 | X 令牌、Google SSO 关联和复用密码都安全 |
当场对照:上传前看画面,发出后看请求
口号不能当证据。下面只核对应由你控制的两件事:将要离开本机的像素里有没有金丝雀;以及若你改走本地工具,请求体里应不应出现原文。不要把真实生产口令送进任何图床做验证。
- 准备一句可丢弃的金丝雀,例如
canary-fp-20260920-gyazo-ocr。把它打在一个空白记事本或本地 HTML 里,截图。不要混入真实主机名或密钥。 - 放大截图,按像素核对:金丝雀是否完整入画,周围有没有状态栏通知、另一个密码框、终端里的旧命令。能读出来的字,OCR 都可能收成文本。
- 若你仍要走图床:打开开发者工具的 Network,勾选 Preserve log,再上传。用金丝雀搜请求体。图床上传的是图片字节,金丝雀会进文件,不进「密码哈希」那一列。这恰好证明:哈希覆盖不了这张图。
- 对照另一条通道。打开 阅后即焚,把同一句金丝雀写成文本,生成链接。再搜 Network:
POST /secrets的请求体里应只有密文、过期时间和阅读次数,不应出现原文,也不应出现井号后的密钥。链接形态是s.html?id={id}#{key},密钥只在#后面;RFC 9110 规定请求目标 URI 不含 fragment。
前三步证明:截图通道上,秘密以像素(以及图床可能抽出的文字)离开本机。第四步证明:同一句金丝雀可以改走「本机 AES-256-GCM,只上传密文」。两条通道不要混用——不要先截进图床,再把图床直链贴进焚链;也不要把焚链的完整 URL 再截一张图传回图床。
完整链接和密文不要走同一条渠道。图床传的是像素,阅后即焚传的是密文加 # 密钥。把钥匙截进同一张图,或把 s.html?id=…#… 整串写进图片标题,井号后的保护对「能看见这张图或这条元数据的人」已经没了。
三种把「图床很安全」读过头的情况
第一,把「未公开」当成访问控制。界面不展示,只说明产品没有把它放进公开列表。Image ID 在库里,直链规则又是公开的,未分享过的图仍然可能被拼出来。通报里「非公开清单已被取走」是这条误读的反例,不是这一家独有的实现细节。
第二,把改密码当成轮换截图里的秘密。图床登录口令、会话 ID、第三方 OAuth 令牌、画面里的生产密钥,分属不同系统。官方要求修改 Gyazo 密码以及复用过的相同密码,只覆盖前几项。截过生产控制台的,还要去原系统作废密钥、轮换数据库账号、作废恢复码。本地 密码检测 只能对照公开高频弱口令名单,不能证明某串口令没进过图床 OCR。
第三,把「我截的是报错,不是密码」当成画面干净。终端里的连接串、浏览器地址栏里的 token=、通知里的验证码、隔壁窗口的邮箱,都会进同一张图。OCR 不按你的意图过滤。上传前只能逐像素看将发出的那一张,不能靠「文件名写成 error.png」。
常见问题
图床说密码是哈希存储,截图里的口令是不是也安全?
不是同一层。登录密码哈希保护的是账号口令本身,还要看算法和是否加盐。截图一旦上传,图床还可以另存 OCR 文本、Image ID、上传 IP 和 EXIF。画面里的口令、密钥、连接串,在 OCR 库里常常已经是可检索明文。
未公开、不分享的截图,是不是只有我打得开?
「未公开」通常只表示产品界面没有把它列进公开页,不等于别人拼不出地址。Image ID 是构成图片 URL 的信息。ID 一旦随元数据离开图床,未公开直链不再靠「猜不到」。运营方暂停分发,只说明现在部分 ID 暂时取不到像素,不说明历史元数据没被拷走过。
改掉图床登录密码,截图里的口令还要不要轮换?
要分开处理。改图床密码只切断这一家的登录口令,且挡不住已经泄露的会话 ID。截图里出现过的数据库口令、API Key、SSH 私钥和恢复码,必须按原系统轮换,不能用改图床密码代替。复用过的相同或相似密码,按官方建议一并改掉。
一次性口令能不能截图发给同事?
不要把活口令截进图床或聊天相册。短文本应在当前标签页用 AES-256-GCM 加密后走 阅后即焚,密钥放在链接的 # 后面,形态是 s.html?id={id}#{key}。创建和阅读都打开即用,无需账号。超过 32 KB 的材料改走 文件加密盒,单文件不超过 5 GB,输出 .lock / .enc,不要把焚链当网盘。
把同一句金丝雀改走打开即用的通道
若你希望用一个把计算边界写清楚的页面来练习,打开 FastPwd 的 阅后即焚 即可,无需注册。写入上面那句金丝雀,阅读次数留 1,生成后按第四节对照 Network:请求体里应只有密文,不应出现原文或井号后的密钥。必须把短口令交给同事时,才走这条通道,不要先截图。
画面里如果还有工单正文、手机号或证件号,先在 隐私清洗 里做规则脱敏,再决定要不要发出。清洗在本机完成,原文不作为业务数据上传,也不写入 analytics。随机口令可以先在 密码生成器 里本地生成,长度 6–128 位、默认 16 位;低于 8 位会提示安全性较低。生成过程不上传。整份截图文件若仍要外发,先在文件加密盒收成密文再传,口令单独走焚链,不要写进图床标题。
下次截图前记住三件事。第一,哈希覆盖的是图床登录口令,不是画面和 OCR。第二,Image ID 让「未公开直链」不再等于访问控制。第三,能重复的观察是上传前逐像素核对,以及改走密文通道时用金丝雀搜 Network。能写进交接说明的,只能是这三句,不能是「图床说密码是哈希,所以截图没事」。
延伸阅读
阅后即焚烧掉的是服务器上的密文,证明不了接收方没截图,见 阅后即焚能证明服务器删了密文,为什么证明不了对方没截图。网盘上传前只给压缩包加密码,挡不住文件名,也不是本机 AES-GCM,见 网盘上传前,压缩包密码能挡住什么,为什么它不是本机 AES-GCM。「本地加密、不上传」不能当证据,要用金丝雀搜 Network,见 浏览器本地加密怎么核对明文没有离开本机。