我的安全摄像头在其登录页面中内置了一个GitHub管理员令牌

Hacker News Top 新闻

摘要

一位安全研究人员发现,Hanwha安全摄像头的固件中包含一个GitHub管理员令牌,该令牌在摄像头的登录页面中暴露,原因是构建过程将整个CI环境嵌入到了UI代码中。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/07/24 14:01

# 我的安防摄像头在登录页面中泄漏了一个 GitHub 管理员令牌 来源:https://hhh.hn/hanwha-github-token/ 我最近又思考了一下安防摄像头的事情,因为 **AXIS** 开始大力推动他们的每款摄像头都能轻松运行 Linux 应用程序(https://www.axis.com/products/acap),在企业环境中它们是更严肃的目标,需要像对待漏洞和凭据管理等一样进行管理。有人向我提到了一家对我而言比较陌生的公司——**Hanwha (Vision.)**。我查看了他们的网站,发现每个型号的摄像头都有可访问的固件包,这总是令人愉快。 ### 探查与测试 我拿了一个固件镜像扔给 `binwalk`,希望它能直接是 rootfs 或其他什么,但里面有一个单独的压缩包,包含一些用于摄像头的 AI 相关文件,还有一个 `fwimage.tgz`,binwalk 标记为已加密。我在网上搜索时看到了 **Matt Brown** 关于这些摄像头的分析文章(https://brownfinesecurity.com/blog/hanwha-firmware-file-decryption),基本思路是密码是 `HTW` + 型号,所以 `HTWXNP-9300RW` 可以用。不过现在似乎有了更多变化,因为在这个压缩包里面又有另一个 `fwimage.tgz`,仍然加密,但加密方式不一样,所以我们不能直接复用 Matt Brown 的方法。我原本以为可能要放弃了,觉得 Hanwha 用了更高级的手段,比如将密钥烧录进硬件(当然这也并非万无一失,但至少你需要拥有摄像头才能开始)。 无论如何,外层压缩包中有一个 `fwupgrader` 二进制文件,我把它扔进 Ghidra 开始探查。好吧,如果还是 2023 年,我可能会自己慢慢分析,但这次我把它指向了 Claude Code,然后去做了顿美味的晚餐,陪伴了我的伴侣,过了一阵子回来,得到了一个描述和一个完整的 rootfs。Hanwha 在 `fwupgrader` 中加入了一些混淆,以隐藏它们如何解密实际的 rootfs。AES 密钥与二进制文件中的一个小型静态密钥表进行 XOR 操作,并在运行时重新组装(IV 只是明文放在里面)。`fwupgrader` 只是调用了 `openssl` 命令行,甚至连命令片段也进行了相同的 XOR 混淆。重构后的命令如下所示: `` openssl enc -md sha256 -aes-256-cbc -d \ -K -iv -in -out `` 由于密钥和 IV 只是硬编码(同一型号系列共用),我将它们公布如下: `` KEY = dfa049bb922e63e2decc764af5628068e5b7a2662e479a615b14643e567579b0 IV = 53f926801b81454a4f889c9a390db6e6 `` 有了这些,我们就获得了完整的 rootfs,可以正常深入研究了。 ### 松露(TruffleHog) 既然终于能直接查看文件了,我立即运行了 TruffleHog,看看有没有明显的问题,结果发现一个 GitHub 令牌重复出现在大约 30 个文件中……我检查了这个令牌可以访问哪些仓库,发现它对组织中的数百个仓库拥有管理员权限。这并非我第一次遇到组织在固件中泄露 GitHub 令牌的情况……但那是另一篇博客的内容了。为什么这个组织要把这个令牌放到大概 30 个文件里呢?看起来他们是用 Vite 构建摄像头的 UI,并且其中一个变量在构建时被设置成了 `process.env` 的全部内容,这意味着 CI 作业的整个环境都被写入了这些文件。 `` var W = { DATAPORT: "9090", GIT_LFS_SKIP_SMUDGE: "1", npm_command: "run-script", KUBERNETES_SERVICE_PORT_HTTPS: "443", GITHUB_NPM_TOKEN: ":ghp_...已编辑...", npm_config_userconfig: "/home/docker/.npmrc", // 等等 } `` 我手上没有这些摄像头用来测试,但 **我认为** 这意味着任何访问这些摄像头管理界面的用户,都可能通过传输收到了这个 GitHub 令牌,而且(希望)没有恶意人员注意到。不过也有可能它实际上并未被服务器发送,只是留存在磁盘上。 环境中还有一些……有趣的数据:有包含 IP 地址的环境变量,但这些 IP 分配给了美国国防部: - **SWARM_MASTER_NFS_ADDRESS**:55.101.212.23 - **OTEL_ELASTIC_URL**:http://55.101.212.21:5601/ - **CIMIP**:55.101.211.213 嗯……这仅仅是巧合,还是那种人们明知永远不会与这些 IP 交互却将其用于内部服务的怪异情况(顺便说一句,这种做法非常疯狂……)?又或者 Hanwha 与美国国防部有更直接的联系?让我们看一下 Hanwha Vision 的维基百科页面(https://en.wikipedia.org/wiki/Hanwha_Vision): > **Hanwha Vision**(韩语:한화비전),前身为 **Samsung Techwin**,是一家视频监控公司。它是 Hanwha Group(https://en.wikipedia.org/wiki/Hanwha_Group)的子公司。 > **曾推出的产品** K9 Thunder(https://en.wikipedia.org/wiki/K9_Thunder)自行火炮、K10 弹药补给车(https://en.wikipedia.org/wiki/K10_ammunition_resupply_vehicle)、K2 Black Panther(https://en.wikipedia.org/wiki/K2_Black_Panther)的子系统、哨戒机器人 SGR-A1(https://en.wikipedia.org/wiki/Samsung_SGR-A1)。 哦……好吧……我记得上高中时读过关于 SGR-A1 的文章(https://www.nbcnews.com/tech/security/future-tech-autonomous-killer-robots-are-already-here-n105656),但我从未想过会在职业生涯后期偶然发现通向制造商王国的钥匙……我的生活有时确实有点奇怪…… #### *警告:以下为推测* 即便如此,这些也不是美国设备或类似的东西。为什么 Hanwha Vision 需要任何与美国国防部相关的东西?有没有可能他们的 CI 是由其母公司 Hanwha 的某个中央团队提供的,而其姊妹公司 **Hanwha Aerospace** 的需求导致共享平台上出现了这些环境变量条目?或者是因为另一家姊妹公司 **Hanwha Defense USA(https://hanwhadefenseusa.com/)**,专门制造其他大型可怕的钢铁机器,例如由 Hanwha Defense USA 生产的 K9 Moukari 自行榴弹炮。 我想确认这不是偶然事件,以及固件中没有数百个其他不同的 GitHub 令牌。于是我爬取了 Hanwha 网站,下载了能找到的所有摄像头的固件,最终获得了大约 500 个固件(摄像头大约有 600 多种,但并非所有都有固件列表),并成功用相同方法解压了其中 62% 的固件。只有三个固件包含 GitHub 令牌,而且都是同一个令牌。不太确定为什么其他固件没有成功,但已经足够让我满意了。 ### 披露 我写了一封简短邮件,提供了足够的信息来定位令牌所在,并发送给了 Hanwha。他们有一个不错的公开邮箱用于报告安全问题,并且在 12 小时内回复了我,通知我令牌已被撤销。当然,他们一开始就不该在固件中包含 GitHub 令牌,但我从未遇到过如此迅速的回应和解决方案。我们真的必须停止频繁犯这类错误,不然我怎么才能安睡?谢谢计算机,下次再见。

相似文章

GitLost:我们诱骗GitHub的AI代理泄露私有仓库

Hacker News Top

Noma Labs发现GitHub的Agentic Workflows中存在一个严重的提示注入漏洞,允许未经身份验证的攻击者通过在同一组织的公共仓库中发布精心构造的GitHub Issue,从私有仓库中窃取数据。

Grafana Labs内部源代码遭访问

Hacker News Top

Grafana Labs披露,一名未经授权的用户获取了访问其GitHub环境的令牌,使得该威胁行为者能够下载公司的代码库。

全面披露:通过VSCode漏洞一键窃取GitHub令牌

Lobsters Hottest

一名安全研究人员披露了VSCode webview中的一个严重漏洞,攻击者可通过诱骗用户点击链接来窃取具有完全访问权限的GitHub OAuth令牌。该漏洞影响github.dev网页编辑器。