
现代功能,例如云驱动的管理、分析和检测,已经为基于 IP 的视频监控带来了新的架构时代。视频监控仍然是企业、制造设施、军事基地,甚至公寓和小型企业的重要安全保障。过去依赖本地网络录像机(NVR)、本地存储阵列和局域网管理系统的世界,如今已演变为一个主要在云端运行的互联环境。
云的引入带来了集中化的管理面板、远程访问门户、自动更新等功能,为这些关键系统带来了更好的安全性和效率。然而,每一个新功能也同时引入了新的风险和暴露面。视频监控设备和其他智能物联网设备一样,带来了新的复杂性,必须加以管理,因为攻击者会不断探测暴露的设备以破坏业务,甚至进一步渗透到敏感网络中。
在我们对现代云启用的监控生态系统的持续研究中,我们将注意力转向了监控领域的一家主要厂商——IDIS。IDIS 是一家总部位于韩国的全球视频监控制造商,提供端到端的监控解决方案,包括 IP 摄像机、网络录像机(NVR)和视频管理软件(VMS)。除了本地设备,IDIS 还提供一个名为 IDIS Cloud Manager (ICM) 的云管理解决方案。
我们的研究发现了 IDIS Cloud Manager (ICM) Viewer 中的一个新漏洞:攻击者可以开发一个利用程序,如果用户点击了不受信任的链接,攻击就会在运行 ICM Viewer 的主机上执行。
点击不受信任的链接被广泛认为是不良习惯,用户也经常被教育要避免这样做。然而,在正常情况下,即使受害者被诱骗访问了攻击者控制的网站,攻击者通常也只能在受害者浏览器的沙箱环境中执行 JavaScript。
然而,这个漏洞允许攻击者突破浏览器沙箱,在主机上实现代码执行,从而带来严重的安全风险。这使得该漏洞成为一个“一键远程代码执行(RCE)”漏洞,攻击者可以通过鱼叉式钓鱼轻易将其转化为对受害者计算机的全面攻陷,从而进入受害者的网络。
如果被利用,该漏洞可能允许攻击者在主机环境中执行任意代码。IDIS ICM 运行在 Windows 主机上,用于连接云端查看实时视频、录像和搜索图像。一旦攻击成功,攻击者就能完全控制该主机,执行代码,甚至将其作为跳板进行横向移动,进一步攻陷网络中的其他终端,包括其他监控摄像机。
IDIS 要求继续使用 ICM Viewer 的用户必须升级到 v1.7.1,否则应立即卸载。
这篇博客从客户端角度深入探讨了该云解决方案的实现。工程师们为了提升用户体验做出了一个有趣的设计选择,但这也引入了一个意想不到的攻击向量。我们将分析攻击者如何利用这一点在受害者计算机上实现代码执行。
IDIS 的云架构由 IDIS 云平台、设备(摄像机和 NVR)以及 ICM Viewer(桌面和移动端)组成。本文重点深入分析 PC 端的 ICM Viewer(Web 客户端)。

桌面版 IDIS Web Client 由两个独立组件组成:

ICM Viewer:仅安装在 Windows 设备上的程序。安装包含两个组件:

CWGService.exe (ICMViewer Launcher):一个 Windows 服务,监听本地主机端口 localhost:16140,并等待命令以适当参数启动 ICM Viewer,例如 JWT 令牌、语言等。启动 Viewer 的命令通过点击 Web Portal 上的 “Run Viewer” 按钮来完成。

连接与认证流程
以下是用户登录 Web Portal 并运行 ICM Viewer 时执行的步骤:
此时,用户可以访问管理面板。在面板中,用户可以添加、编辑和删除用于云管理的设备。
当资产添加完成后,用户可以点击 “Run Viewer” 按钮(如果安装不存在或版本过旧,系统会提示安装程序)。点击 “Run Viewer” 后,执行以下流程:

当 CWGService 接收到这条消息时,会执行以下流程:
WCMViewer.exe --url="https://icm.idisglobal.com" --token=base64(JWT.Token) --mode=w --language=en-US
此时,ICM Viewer 会启动并执行其所有子进程。
CVE-2025-12556
当 WCMViewer.exe 启动时,会带上多个参数:URL、Token、Mode 和 Language。看起来 URL 和 Token 是直接从 WebSocket 接收到的消息中传递过来,没有经过额外处理。
由此引出了一个问题:我们是否可以向 WCMViewer.exe 注入自己的参数?
如前所述,WCMViewer.exe 是一个基于 Chromium 的应用程序,它使用了 CEF 库,允许在应用程序中直接嵌入 Chromium 浏览器。这带来了一个有趣的问题:WCMViewer.exe 是否会接受除预期参数之外的额外 Chromium 命令行标志?
Chromium 的命令行标志是一种强大的机制,可以在运行时改变浏览器行为,让开发者无需修改应用程序即可调整功能。然而,大多数标志是无害的,但其中一部分可能被滥用来实现代码执行。
其中一个标志是 --utility-cmd-prefix,主要用于调试。例如,在 Chromium 命令行中传递 --utility-cmd-prefix="strace" 会导致浏览器及其子进程被 strace 包裹,从而启用详细的运行时跟踪。
接下来我们要验证:是否可以在 CWGService 执行的命令行中注入参数。为此,需要向 CWGService 发送一个经过精心构造的消息(包含参数注入)。步骤如下:
下面是我们概念验证(PoC)利用的伪代码:

结果是:
CWGService 会将注入的参数追加到执行的命令行中:

攻击者的目标是实现在受害者系统上的代码执行。由于 CWGService 仅监听本地接口,攻击者可以通过客户端执行来实现这一点:攻击者在其控制的网页中嵌入 JavaScript,该脚本会向 localhost:16140 发送精心构造的 WebSocket 消息。
当受害者被诱骗访问这个攻击者控制的页面时,JavaScript 会在受害者的浏览器环境中执行,并将恶意消息传递给本地服务,从而在受害者主机上实现代码执行。

点击不受信任的链接被广泛认为是不良习惯,用户也经常被教育要避免这样做。然而,在正常情况下,即使受害者被诱骗访问了攻击者控制的网站,攻击者通常也只能在受害者浏览器的沙箱环境中执行 JavaScript。
相比之下,这个漏洞允许攻击者突破浏览器沙箱,在主机上实现代码执行,从而带来严重的安全风险。
该漏洞已披露给 IDIS,并在披露后很快得到厂商确认。CISA 已发布编号 CVE-2025-12556 的漏洞公告,并给出 CVSS v4 评分 8.7。建议所有客户尽快为系统打补丁。CISA 公告可在其官网查阅。
新架构或新功能的引入,意味着链条中的每一步都必须经过严格检查。我们的研究与利用之所以成为可能,是因为以下缺陷:
攻击者总会寻找产品中新设计所带来的攻击面。我们鼓励研究人员也去发现这些暴露点,并在发现后尽快披露漏洞。同时,我们也鼓励用户了解自己所使用的设备,并及时为其打补丁。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。