CNVD ID: CNVD-2026-25884
厂商: 深圳市吉祥腾达科技有限公司
产品: NVR_4H 网络录像机(硬件版本 CH3V2.1)
固件: V27.5.58.6
类别: CWE-321 — 使用硬编码加密密钥
NVR_4H 固件将其 ECDSA 密钥对存储于只读的 user-x.squashfs 分区中(挂载于 /opt/app/):私钥位于 /etc/privkey.pem,匹配的自签名证书位于 /etc/cacert.pem。两者均在构建时生成一次并固化到镜像中,因此所有运行 V27.5.58.6 的设备都携带相同的私钥。
该固件镜像可从腾达官网免费下载。任何解包该镜像的人都持有此版本所有 NVR_4H 设备 HTTPS 接口的有效私钥。同一网络中的攻击者(LAN、Wi-Fi 或面向互联网的设备)可通过 ARP 欺骗或 DNS 投毒,在管理员浏览器与 NVR 之间架设代理,使用提取的密钥出示真实的腾达证书,浏览器不会显示任何警告。随后整个会话可被实时读取和修改:管理员登录、会话令牌、摄像头 RTSP 凭据、设备配置。
| 文件 | 描述 |
|---|---|
/etc/privkey.pem | 302 字节 EC 私钥(P-256) |
/etc/cacert.pem | 802 字节自签名证书,O=Tenda, OU=Video Surveillance, CN=www.tenda.com.cn |
固件容器是位于偏移 0xBBB 处的 ZIP 归档:
# 1. unpack the firmware
binwalk -e ted.bin
cd ted.bin.extracted/BBB
# 2. strip the 64-byte proprietary header
dd if=user-x.squash.img of=pure_system.squashfs bs=1 skip=64
# 3. unpack the filesystem
unsquashfs pure_system.squashfs
# 4. locate the key material
find squashfs-root -name "*.pem"
# squashfs-root/etc/cacert.pem
# squashfs-root/etc/privkey.pem
要确认私钥属于随附的证书,可从两者导出公钥并进行比较:
openssl ec -in squashfs-root/etc/privkey.pem -pubout > pub_from_priv.pem
openssl x509 -in squashfs-root/etc/cacert.pem -pubkey -noout > pub_from_cert.pem
diff pub_from_priv.pem pub_from_cert.pem
# no output
sha256sum pub_from_priv.pem pub_from_cert.pem
# 80b6aa4b9e8f4cd30e857ff5b9bfcf7e0227e268f4d397efdaffe37d4b0e9bcc (both files)
该密钥也可直接从镜像中使用:
openssl s_server \
-key squashfs-root/etc/privkey.pem \
-cert squashfs-root/etc/cacert.pem \
-accept 4433 -www
# ACCEPT — TLS server starts with no errors
user-x.squashfs 是压缩的只读文件系统,因此其内容在每一台出厂设备上逐字节相同。
镜像中没有任何按设备配置的机制:没有 init 脚本,没有 openssl 二进制文件,没有首次启动时的密钥生成。整个文件系统中唯一与密钥生成相关的字符串来自 hostapd 和 wpa_supplicant,它们与 HTTPS 服务器毫无关系。
squashfs 内的 /etc/ 仅包含四个文件,其中两个就是此密钥材料。两者都带有 squashfs 构建时间戳,而非运行时时间戳。
该证书为 X.509 v1,自签名(颁发者 = 主体 = C=CN, ST=ZJ, L=HZ, O=Tenda, OU=Video Surveillance, CN=www.tenda.com.cn),有效期 1999-12-31 至 2049-12-18,无 SAN,无密钥用途扩展。序列号 1c:f2:13:a0:7b:e2:7c:91:63:f3:e0:0c:be:0f:0d:42:2e:6b:e8:69 固定不变,在所有设备上完全相同。
提取的私钥,可直接使用:
-----BEGIN EC PARAMETERS-----
BggqhkjOPQMBBw==
-----END EC PARAMETERS-----
-----BEGIN EC PRIVATE KEY-----
MHcCAQEEIHQLiI/KUzk/hXX4BZVuujlQMit341WWi3sTpLlGQVcaoAoGCCqGSM49
AwEHoUQDQgAEqFt550/3k/nGoYr4CFeRtvDf9HuZpHbb5FecKweJtFH7a5hBNFqq
qckxILVt8KefGENelZgPdEGNU6VcXyTORA==
-----END EC PRIVATE KEY-----
对于此固件版本上的每一台设备,整个 HTTPS 管理接口的机密性和完整性均已丧失,任何下载过公开镜像的人均可利用。目标侧无需任何权限,也无需用户交互——被动中间人攻击即可。窃取的管理员凭据可完全控制录像机及其摄像头。
在首次启动时为每台设备生成唯一的密钥对,并将其存储在可写分区上(例如 /opt/sav/ 下的 JFFS2 区域),同时将 privkey.pem 和 cacert.pem 从只读镜像中彻底移除。从长远来看,应在制造时签发每台设备专属的证书。