漏洞概述 1. CVE-2025-63236 - NULL Pointer Dereference in sol (MQTT broker) - 描述: 在sol MQTT broker中发现了一个空指针解引用漏洞。该漏洞发生在处理非CONNECT数据包(如SUBSCRIBE)时,违反了MQTT v3.1.1规范,导致服务器崩溃。 - 实际行为: 服务器在处理第一个数据包后没有验证其是否为CONNECT,导致发送SUBSCRIBE时引发空指针或坏指针解引用,触发SIGSEGV。 - 触发和崩溃: 服务器未检查第一个消息就直接处理,导致错误。 2. CVE-2025-63237 - Authentication Bypass in sol (MQTT broker) - 描述: 在sol MQTT broker中发现了一个协议违规漏洞(认证绕过)。服务器在收到CONNECT之前接受并处理数据包,违反了MQTT v3.1.0-1规范。 - 实际行为: sol服务器不强制要求客户端的第一个数据包是CONNECT,允许客户端绕过认证阶段,直接发送PUBLISH或SUBSCRIBE数据包。 - 触发和崩溃: 通过发送PUBLISH数据包,服务器会接受并处理,导致未认证客户端的消息被传递给订阅者。 3. CVE-2025-63234 - Use After Free in sol (MQTT broker) - 描述: 在sol MQTT broker中发现了一个使用后释放漏洞,涉及对长Client ID的不当处理,违反了MQTT v3.1.1规范。 - 实际行为: 服务器错误地强制实施23字节的Client ID长度限制,截断更长的ID,导致段错误。 - 触发和崩溃: 使用两个具有相同前缀的Client ID建立连接后,第二个连接被误认为是第一个连接,当其中一个客户端断开连接时,服务器访问已释放的资源,触发段错误。 4. CVE-2025-63235 - Resource Exhaustion in sol (MQTT broker) - 描述: 在sol MQTT broker中发现了一个协议合规性问题及潜在的拒绝服务(DoS)漏洞,涉及处理CONNECT数据包时的资源耗尽。 - 实际行为: 当sol收到无效的CONNECT数据包时,不遵循MQTT v3.1.1的错误处理规则,导致连接状态在内存中持续存在,最终耗尽系统资源。 - 触发和崩溃: 通过创建大量TCP连接并发送无效的CONNECT数据包,sol会耗尽所有可用内存和文件描述符,最终被Linux OOM killer终止。 5. CVE-2025-63233 - Memory Leak in sol (MQTT broker) - 描述: 在sol MQTT broker中发现了一个规范合规性漏洞,涉及处理保留的QoS-0消息时的内存泄漏。 - 实际行为: 当sol收到带有RETAIN=1的QoS-0 PUBLISH数据包时,不会释放旧消息的内存,导致内存无限增长。 - 触发和崩溃: 通过发送带有RETAIN=1的QoS-0 PUBLISH数据包,sol会不断分配新消息对象而不释放旧消息,最终导致内存耗尽。 影响范围 受影响版本: sol commit 373d848 操作系统: Kali GNU/Linux Rolling 2023.4 漏洞类型: 空指针解引用、认证绕过、使用后释放、资源耗尽、内存泄漏 攻击类型: 远程 影响: 拒绝服务(DoS)、未授权消息访问、内存泄漏 修复方案 具体修复方案: 页面中未提供具体的修复方案,建议参考sol项目的官方更新或补丁。 POC代码 CVE-2025-63236 - NULL Pointer Dereference in sol (MQTT broker) CVE-2025-63237 - Authentication Bypass in sol (MQTT broker) CVE-2025-63234 - Use After Free in sol (MQTT broker) CVE-2025-63235 - Resource Exhaustion in sol (MQTT broker) CVE-2025-63233 - Memory Leak in sol (MQTT broker) 总结 该网页截图中详细描述了sol MQTT broker中的五个漏洞,包括空指针解引用、认证绕过、使用后释放、资源耗尽和内存泄漏。每个漏洞都有具体的描述、实际行为、触发和崩溃情况,并附有POC代码。受影响版本为sol commit 373d848,操作系统为Kali GNU/Linux Rolling 2023.4。建议参考sol项目的官方更新或补丁进行修复。