安防摄像头「裸奔」:百亿美元巨头私密代码全泄露

安防摄像头「裸奔」:百亿美元巨头私密代码全泄露

securityiotsupply-chaininfrastructure

数据源:HN + original research · HN

2026年7月24日,一位独立安全研究员买了一个韩华(Hanwha)的安防摄像头,型号叫 Wisenet XNP-9300RW,想看看里面的固件到底安不安全。几个小时后,他发现自己的手上握着这家公司全部私密代码的钥匙——一个完整有效的 GitHub 管理员令牌,可以访问韩华整个 GitHub 组织下数百个私有仓库,包括所有的源码、CI/CD 流水线配置、内部文档。而这一切,是从摄像头的登录页面里翻出来的。

韩华 Wisenet XNP-9300RW 安防摄像头实物图 图注:韩华 Wisenet XNP-9300RW,一款4K分辨率、30倍光学变焦的户外PTZ安防摄像头。它同时也是本次事件的”主角”。

这个发现迅速在技术社区炸开了锅。在 Hacker News 上,这个帖子拿到了 480多分和 160多条评论。但真正让人不安的是它揭示了一个极其普遍、却又几乎没有人认真对待的问题:你买回家的每一台联网设备,都可能是一把通往厂商内部系统的钥匙——厂商自己不锁门的那种。

私密代码是怎么”跑”进摄像头的?

先说说最基本的逻辑。一个安防摄像头,本质是一台小型嵌入式 Linux 电脑。它有自己的处理器、内存、操作系统(通常是 Linux 的精简版),以及一个用来给管理员配置参数的网页后台。这个后台的界面是用 JavaScript 写的,就像你去访问任何一个网站,浏览器会下载前端代码一样。

问题就出在这里。

这位研究员解压了摄像头的固件(你可以理解为它的”操作系统安装包”),找到了这个后台网页的 JavaScript 文件。打开一看,里面躺着一个完整的 GitHub 令牌(token),在将近 30 个不同的文件里反复出现。

这里需要用一个比喻来理解:GitHub 令牌,本质上是一把”保险柜钥匙”。 这把钥匙一旦签发,持有它的人就可以用签发时赋予的权限访问对应的资源——在这个案例里,是韩华整个公司的全部私有代码。理论上,这把钥匙只应该掌握在少数核心工程师手里,而且应当在用完即销毁。

但它却出现在几百万台出货的安防摄像头的网页后台里。

任何人只要能访问这台摄像头的管理页面——也就是说,任何能连上摄像头 IP 地址的人——理论上都能拿到这把钥匙。

到底是哪个环节出了问题?

笔者顺着研究员的分析往下看,发现这起事故的原因可以用一句话概括:一家年营收超百亿美元的安防巨头,用了一套极其草率的软件构建流程。

韩华用了一个叫 Vite 的前端构建工具来打包摄像头的管理后台页面。这个工具在构建时会把当前环境中的所有变量(即 process.env——所有正在运行的进程能访问的环境变量)一股脑地全部写入最终的前端代码中。而当时运行构建任务的 CI(持续集成)服务器上,恰好设置了那个拥有管理员权限的 GitHub 令牌作为环境变量。

于是,整个 CI 环境的”环境变量大礼包”——包括 GitHub 管理员令牌、Kubernetes 集群地址、npm 密钥、各种内部服务的域名和端口——全部被写进了摄像头的网页代码里,然后被打包进固件,发往全球各地的客户手中。

这就好比一家五星级酒店的安保部门,把总保险柜的密码本印在了客房门卡的说明书上。

更让人后背发凉的”彩蛋”

除了 GitHub 令牌,研究员还在固件中发现了一些不太寻常的 IP 地址。查了一下,这些 IP 地址属于**美国国防部(DoD)**的地址段。

看到这里,笔者需要介绍一下韩华这家公司。大多数人知道它是因为安防摄像头,但韩华的母公司——韩华集团——是韩国排名前十的财阀,业务覆盖军工、航天、金融、能源等多个领域。它的姊妹公司包括:

  • 韩华航空航天(Hanwha Aerospace)
  • 韩华防务美国(Hanwha Defense USA)
  • 制造了 K9 自行榴弹炮、K2 黑豹主战坦克、SGR-A1 哨兵机器人等武器装备

韩华集团制造的 K9 "雷霆"自行榴弹炮 图注:韩华集团不仅做安防摄像头,还生产军用装备。图为芬兰陆军装备的韩华 K9 “雷霆”自行榴弹炮。来源:Wikimedia Commons

也就是说,你的安防摄像头内部,可能藏有与美国国防部相关的内部服务地址。研究员推测,这可能是韩华集团内部的共享 CI 平台——做安防的部门、做军工的部门、做航天的部门,可能用的是同一套基础设施。一个安防摄像头的漏洞,理论上可能成为进入军工系统的跳板。

当然,这部分是推测,笔者不做定论。但这件事本身已经足够说明问题。

这是偶发事件,还是行业通病?

遗憾的是,这绝对不是韩华一家的问题。整个 IoT(物联网)行业在安全问题上,基本上是在”裸奔”。

以下是安全社区多年来的共识:

  • 固件签名验证缺失:很多 IoT 设备的固件没有做数字签名校验,攻击者可以制作篡改过的固件,骗过设备完成更新。
  • 硬编码凭据:大量设备出厂时使用固定的用户名和密码(比如 admin/admin),用户改不改全凭自觉。
  • 固件更新不加密:更新包在网络上明文传输,任何人都可以拦截和篡改。
  • 秘密嵌入前端代码:这条是本次事故的核心——把 API 密钥、数据库密码、甚至内部系统的完整令牌硬编码进前端代码中,在 Web 开发领域已经是一个被反复提醒、反复犯错的老问题了。

但把 GitHub 管理员令牌直接嵌入摄像头登录页面的 JavaScript 里——这在所有”反面教材”中,仍然算得上教科书级别。

普通用户应该怎么办?

如果你家里或公司安装了韩华的安防摄像头(品牌可能是 Hanwha Vision、Wisenet、或者旧的 Samsung Techwin),你唯一能做的实际上是”提升自己的安全姿势”。

因为厂商那边的漏洞——CI 流程把令牌写进了固件——你已经无能为力。韩华方面在收到报告后 12 小时内吊销了那个令牌,但令牌已经在固件中”裸奔”了多久?在研究员发现它之前,有没有其他人已经拿到?这些问题的答案可能永远没有人知道。

安全社区的共识建议如下:

第一,把安防摄像头放在隔离网络中。 如果你家里的路由器支持”访客网络”或 VLAN 功能,把所有 IoT 设备(摄像头、智能音箱、智能电视)单独放在一个网络里,与你的主力电脑和手机隔离开。这样即使摄像头被入侵,攻击者也无法直接访问你的其他设备。

第二,选择支持 ONVIF 协议的摄像头。 ONVIF 是一个通用的摄像头通信标准。使用支持该标准的摄像头搭配开源录像软件,你可以不用依赖厂商的封闭软件和网页后台。但这要求你有一定的技术动手能力。

第三,不要默认信任联网设备。 每一台接入你家网络的设备,都应该被视为一个潜在的安全风险点。不是要你变成偏执狂,但起码要知道:你买的不仅是一个硬件,还附带了它背后的整个软件供应链。

写在最后

笔者写这篇文章时,最让自己感到不安的不是韩华的疏忽。疏忽在任何公司都会发生。真正的问题在于:一个百亿美元市值的安防巨头,在构建自己的核心产品时,竟然没有任何一道防线拦住一个管理员令牌被写进消费级固件。

如果连韩华都做不到,那些你叫不出名字的杂牌摄像头呢?

在 IoT 时代,“买了一个摄像头”和”拿到了一把厂商保险柜钥匙”之间的界限,可能只隔着一次粗心的构建。

参考链接:

  • HHH: My security camera shipped a GitHub admin token in its login page(原始文章)
  • Hacker News 讨论帖(ID: 49034292)
  • El Solitario: GitHub Token Leaked in Hanwha Cameras
  • Wikipedia: Hanwha Group
  • Hanwha Vision 官网