背景:一次顺手的固件审计
一位安全研究员注意到 AXIS 正在推动摄像头便捷运行 Linux 应用,企业级监控摄像头的漏洞与凭据管理值得认真对待。这时有人向他提到韩华视觉(Hanwha Vision,前身是三星 Techwin{f10},他发现官网直接提供各型号摄像头的固件下载,于是一次深入的固件审计开始了。
逆向过程:Claude Code 代劳的晚上
固件解包后出现一个加密的 fwimage.tgz,passphrase 是 HTW 加上型号(如 HTWXNP-9300RW{f10},这一层沿用 Matt Brown 此前的方法即可解开。但内层还有一个不同加密方案的 fwimage.tgz。作者把外层的 fwupgrader 二进制扔进 Ghidra,然后指着 Claude Code 去分析,自己去做晚饭陪伴侣,回来时就拿到了解密后的完整根文件系统。Hanwha 的混淆手法是把 AES 密钥与二进制内一张静态密钥表 XOR 后在运行时重组,IV 直接明文存放,fwupgrader 甚至直接 shell 调用 openssl CLI,连命令片段都做了同样的 XOR 混淆。由于密钥和 IV 在全产品线硬编码且通用,作者选择直接公开。
重大发现:30 个文件里的 GitHub 管理员令牌
拿到 rootfs 后他跑了 trufflehog,立刻发现一个 GitHub token 在大约 30 个文件中重复出现。经查证,该 token 对 Hanwha GitHub 组织中数百个仓库拥有管理员权限。原因令人啼笑皆非:摄像头管理界面前端用 Vite 构建,构建时把某个变量设成了整个 process.env,导致 CI 任务的全部环境变量被打包进 JS 文件,其中就包括 GITHUB_NPM_TOKEN。这意味着任何访问这些摄像头管理界面的人都可能拿到这枚令牌。环境变量里还出现了几个属于美国国防部的 IP 地址,作者推测可能是集团层面共享 CI 平台所致;为排除偶然性,他抓取了约 500 个固件,62% 可用同样方法解开,其中 3 个含有同一枚 token。
披露与回应
作者向 Hanwha 的安全邮箱发送了简要说明,对方在 12 小时内响应并吊销了 token。他评价说这种响应速度在此类披露中相当罕见,但也感慨行业何时才能不再犯这种错误。
社区讨论
Hacker News 评论区里,有人分享了 OBD-II 诊断插头出厂同 MAC 地址的类似经历;有人认为固件里烧进美国国防部 IP 才是更大的新闻;最高赞的观点之一是“LLM 真正杀死了混淆,混淆过去只是靠让人极度烦躁才有效,而 AI 不在乎烦躁”;也有人批评厂商连不硬编码凭据这种最基本的安全基线都做不到。
原文:My security camera shipped a GitHub admin token in its login page