CVE-2024-10525 漏洞缓解措施
CVE-2024-10525 漏洞缓解措施
按照以下步骤进行排查是否存在风险并进行按照对应缓解措施进行处置。
第一步:排查是否开启相关服务并进行加固
- 排查是否开启相关服务的方法:
#查看是否使用 Mosquitto 代理(默认未启用) $ systemctl status mosquitto如果终端回显中显示:
Active:active (running),证明 mosquitto 处于开启状态,有风险需处置,其他回显不处于风险状态。

银河麒麟桌面操作系统-缓解措施-1 (设置 Mosquitto 代理的用户权限,禁止匿名访问)
- 创建 Mosquitto 密码文件
使用 mosquitto_passwd 命令来创建和编辑密码文件。例如,创建一个用户名为 admin 的用户:sudo mosquitto_passwd -c /etc/mosquitto/passwd admin - 配置密码文件权限
sudo chown mosquitto:mosquitto /etc/mosquitto/passwd sudo chmod 640 /etc/mosquitto/passwd - 配置 Mosquitto 以使用密码文件,并开启禁止匿名访问
编辑 Mosquitto 的配置文件 mosquitto.conf,文件位于 /etc/mosquitto/ 目录。sudo vim /etc/mosquitto/mosquitto.conf在配置文件中,添加或确保以下行存在:
listener 1883 password_file /etc/mosquitto/passwd allow_anonymous false - 重启 Mosquitto 服务生效
sudo systemctl restart mosquitto - 验证配置
使用客户端工具(如 mosquitto_sub 和 mosquitto_pub)验证配置是否生效。
例如,尝试连接到 Mosquitto 代理服务器而不提供用户名和密码,应该会失败:(需要安装:sudo apt install mosquitto-clients)mosquitto_sub -h localhost -t test/tp如果配置正确,应该会看到类似以下的错误信息:
Error: Connection refused: Not authorized.
然后,使用正确的用户名和密码连接:mosquitto_sub -h localhost -t test/tp -u admin -P your_password如果配置正确,应该能够成功连接并接收消息。
- 缓解措施1的影响
会导致匿名用户无法访问Mosquitto
银河麒麟桌面操作系统-缓解措施-2(添加防火墙白名单配置,禁止非白名单 ip 访问)
- 安装 ufw 防火墙
sudo apt install ufw通过 ufw 防火墙设置白名单来限制可以访问端口的 ip,以 mosquitto 服务默认使用的 1883 端口为例
sudo ufw allow from 192.168.33.0/24 to any port 1883设置后将只允许 192.168.33.0/24 访问 1883 端口
- 缓解措施2的影响
非防火墙授权 ip 无法访问 Mosquitto。
银河麒麟服务器操作系统-缓解措施1 (设置 Mosquitto 代理的用户权限,禁止匿名访问)
- 创建 Mosquitto 密码文件
使用 mosquitto_passwd 命令来创建和编辑密码文件。例如,创建一个用户名为 admin 的用户:sudo mosquitto_passwd -c /etc/mosquitto/passwd admin - 配置密码文件权限
sudo chown mosquitto:mosquitto /etc/mosquitto/passwd sudo chmod 640 /etc/mosquitto/passwd - 配置 Mosquitto 以使用密码文件,并开启禁止匿名访问
编辑 Mosquitto 的配置文件 mosquitto.conf,文件位于 /etc/mosquitto/ 目录。sudo vim /etc/mosquitto/mosquitto.conf在配置文件中,添加或确保以下行存在:
listener 1883 password_file /etc/mosquitto/passwd allow_anonymous false - 重启 Mosquitto 服务生效
sudo systemctl restart mosquitto - 验证配置
使用客户端工具(如 mosquitto_sub 和 mosquitto_pub)验证配置是否生效。例 如,尝试连接到 Mosquitto 代理服务器而不提供用户名和密码,应该会失败:mosquitto_sub -h localhost -t test/tp如果配置正确,应该会看到类似以下的错误信息:
Error: Connection refused: Not authorized.
然后,使用正确的用户名和密码连接:mosquitto_sub -h localhost -t test/tp -u admin -P your_password如果配置正确,应该能够成功连接并接收消息。
- 缓解措施的影响
会导致匿名用户无法访问 Mosquitto。
服务器系统-缓解措施-2(添加防火墙白名单配置,禁止非白名单 ip 访问)
- 清空可能存在的旧规则(可选)以 1883 端口为例
sudo firewall-cmd --remove-port=1883/tcp --permanent - 创建 ipset 集合(支持动态更新,示例 ip 段 192.168.1.0/24 和单独 ip10.10.8.5)
sudo firewall-cmd --permanent --new-ipset=whitelist --type=hash:ip sudo firewall-cmd --permanent --ipset=whitelist --add-entry=192.168.1.0/24 sudo firewall-cmd --permanent --ipset=whitelist --add-entry=10.10.8.5 - 应用 ipset 规则
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source ipset=whitelist" port port="1883" protocol="tcp" accept' - 批量更新无需要重启(示例添加新 IP)
sudo firewall-cmd --ipset=whitelist --add-entry=203.0.113.25 --permanent # 删除单个 IP 条目 sudo firewall-cmd --permanent --ipset=whitelist --remove-entry=203.0.113.25 - 使配置立即生效
sudo firewall-cmd --reload - 验证删除结果(查看当前条目列表)
sudo firewall-cmd --info-ipset=whitelist | grep entries - 缓解措施的影响
非防火墙授权 ip 无法访问 Mosquitto
排查是否安装 libmosquitto 库,并进行规避
说明:在客户端存在 libmosquitto 库的情况下,只有明确有上层应用调用此库的情况下漏洞才可能被触发。
- 命令行执行以下命令:
- 服务器系统:
sudo rpm -qa |grep mosquitto - 桌面系统:
sudo dpkg -l |grep mosquitto
如有 libmosquitto 包输出,则漏洞对应库存在。如无输出,则漏洞对应库不存在。
- 服务器系统:
- 银河麒麟桌面操作系统-缓解措施-1(说明性缓解)
不使用 mosquitto 组件或使用 libmosquitto 库的客户端主动连接未授信的服务端或者代理服务。 - 银河麒麟服务器操作系统-缓解措施-1 (说明性缓解)
不使用 mosquitto 组件或使用 libmosquitto 库的客户端主动连接未授信的服务端或者代理服务。