CVE-2025-12790CVE-2025-12790是Ruby生态中广泛使用的MQTT客户端库Rubygem MQTT的一个高危安全漏洞。该漏洞源于库在默认配置下未对SSL/TLS连接进行主机名(hostname)验证,导致攻击者可以实施中间人(Man-in-the-Middle, MITM)攻击。在MQTT协议广泛应用于物联网(IoT)设备通信、工业控制系统和消息队列场景的背景下,此漏洞可能影响大量使用该库进行安全敏感通信的应用程序。攻击者通过在客户端与服务器之间的网络路径上拦截和篡改流量,可以窃取传输中的敏感数据、冒充合法服务器或修改消息内容,对系统的机密性和完整性造成严重威胁。由于MQTT协议常用于传输设备控制指令、传感器数据和系统状态信息,此类攻击可能导致设备被恶意控制、数据泄露或业务流程被干扰。
Rubygem MQTT库在建立SSL/TLS连接时,默认配置下跳过了主机名验证步骤。主机名验证是SSL/TLS证书验证的关键环节,用于确保客户端连接的目标服务器确实是其声称的合法实体,而不是攻击者伪装的恶意服务器。该漏洞存在于MQTT连接的初始化过程中,当使用加密连接(MQTTS)时,库未能正确验证服务器证书中的Common Name (CN)或Subject Alternative Names (SAN)与连接目标主机名是否匹配。攻击者可以部署伪造的MQTT服务器,使用自签名证书或被盗取的合法证书,在客户端发起连接时成功完成SSL握手。由于缺少主机名验证,客户端无法检测到服务器身份的真实性,从而建立了看似安全实则存在风险的加密通道。攻击者随后可以在此通道上窃听通信内容、篡改MQTT消息(PUBLISH包)或注入恶意控制指令。