CVE-2024-10525 漏洞缓解措施

CVE-2024-10525 漏洞缓解措施

按照以下步骤进行排查是否存在风险并进行按照对应缓解措施进行处置。

第一步:排查是否开启相关服务并进行加固

  • 排查是否开启相关服务的方法:
    #查看是否使用 Mosquitto 代理(默认未启用) 
    $ systemctl  status  mosquitto 

    如果终端回显中显示:Active:active (running),证明 mosquitto 处于开启状态,有风险需处置,其他回显不处于风险状态。
    file

银河麒麟桌面操作系统-缓解措施-1 (设置 Mosquitto 代理的用户权限,禁止匿名访问)

  1. 创建 Mosquitto 密码文件
    使用 mosquitto_passwd 命令来创建和编辑密码文件。例如,创建一个用户名为 admin 的用户:

    sudo  mosquitto_passwd  -c  /etc/mosquitto/passwd  admin 
  2. 配置密码文件权限
    sudo  chown  mosquitto:mosquitto   /etc/mosquitto/passwd 
    sudo  chmod  640   /etc/mosquitto/passwd 
  3. 配置 Mosquitto 以使用密码文件,并开启禁止匿名访问
    编辑 Mosquitto 的配置文件 mosquitto.conf,文件位于 /etc/mosquitto/ 目录。

    sudo vim /etc/mosquitto/mosquitto.conf 

    在配置文件中,添加或确保以下行存在:

    listener  1883 
    password_file  /etc/mosquitto/passwd 
    allow_anonymous  false
  4. 重启 Mosquitto 服务生效
    sudo systemctl restart mosquitto 
  5. 验证配置
    使用客户端工具(如 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

    如果配置正确,应该能够成功连接并接收消息。

  6. 缓解措施1的影响
    会导致匿名用户无法访问 Mosquitto

银河麒麟桌面操作系统-缓解措施-2(添加防火墙白名单配置,禁止非白名单 ip 访问)

  1. 安装 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. 缓解措施2的影响
    非防火墙授权 ip 无法访问 Mosquitto。

银河麒麟服务器操作系统-缓解措施1 (设置 Mosquitto 代理的用户权限,禁止匿名访问)

  1. 创建 Mosquitto 密码文件
    使用 mosquitto_passwd 命令来创建和编辑密码文件。例如,创建一个用户名为 admin 的用户:

    sudo mosquitto_passwd -c /etc/mosquitto/passwd admin 
  2. 配置密码文件权限
    sudo chown mosquitto:mosquitto /etc/mosquitto/passwd 
    sudo chmod 640 /etc/mosquitto/passwd 
  3. 配置 Mosquitto 以使用密码文件,并开启禁止匿名访问
    编辑 Mosquitto 的配置文件 mosquitto.conf,文件位于 /etc/mosquitto/ 目录。

    sudo vim /etc/mosquitto/mosquitto.conf 

    在配置文件中,添加或确保以下行存在:

    listener 1883 
    password_file /etc/mosquitto/passwd 
    allow_anonymous false 
  4. 重启 Mosquitto 服务生效
    sudo systemctl restart mosquitto 
  5. 验证配置
    使用客户端工具(如 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 

    如果配置正确,应该能够成功连接并接收消息。

  6. 缓解措施的影响
    会导致匿名用户无法访问 Mosquitto。

服务器系统-缓解措施-2(添加防火墙白名单配置,禁止非白名单 ip 访问)

  1. 清空可能存在的旧规则(可选)以 1883 端口为例
    sudo  firewall-cmd  --remove-port=1883/tcp  --permanent 
  2. 创建 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 
  3. 应用 ipset 规则
    sudo  firewall-cmd  --permanent  --zone=public  --add-rich-rule='rule family="ipv4" source ipset=whitelist" port port="1883"  protocol="tcp" accept' 
  4. 批量更新无需要重启(示例添加新 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 
  5. 使配置立即生效
    sudo  firewall-cmd  --reload
  6. 验证删除结果(查看当前条目列表)
    sudo  firewall-cmd  --info-ipset=whitelist | grep  entries
  7. 缓解措施的影响
    非防火墙授权 ip 无法访问 Mosquitto

排查是否安装 libmosquitto 库,并进行规避

说明:在客户端存在 libmosquitto 库的情况下,只有明确有上层应用调用此库的情况下漏洞才可能被触发。

  1. 命令行执行以下命令:
    • 服务器系统: sudo rpm -qa |grep mosquitto
    • 桌面系统: sudo dpkg -l |grep mosquitto
      如有 libmosquitto 包输出,则漏洞对应库存在。如无输出,则漏洞对应库不存在。
  2. 银河麒麟桌面操作系统-缓解措施-1(说明性缓解)
    不使用 mosquitto 组件或使用 libmosquitto 库的客户端主动连接未授信的服务端或者代理服务。
  3. 银河麒麟服务器操作系统-缓解措施-1 (说明性缓解)
    不使用 mosquitto 组件或使用 libmosquitto 库的客户端主动连接未授信的服务端或者代理服务。
发表回复 0

Your email address will not be published.