一键修复Squid代理服务器严重堆溢出漏洞(CVE-2025-54574)

一键修复Squid代理服务器严重堆溢出漏洞(CVE-2025-54574)

本项目提供了一个自动化Bash脚本,旨在帮助系统管理员和安全人员快速检测并修复 Squid 代理服务器中的一个严重堆溢出漏洞(CVE-2025-54574)。该漏洞影响 Squid 6.3 及更早版本,攻击者无需认证即可通过网络利用此漏洞,可能导致远程代码执行或服务拒绝。脚本通过简单的执行,即可完成版本检测、配置备份、规则添加和服务重启,从而应用临时缓解措施。

功能特性

  • 自动版本检测:脚本会自动检测当前系统安装的 Squid 版本,并与受漏洞影响的版本范围(≤ 6.3)进行比较。
  • 智能修复决策:仅在检测到易受攻击的版本时执行后续的修复操作,避免对已安全或更新的系统造成不必要的更改。
  • 安全配置备份:在修改配置文件 /etc/squid/squid.conf 之前,脚本会自动创建备份文件 (squid.conf.bak),以便在需要时快速回滚。
  • 一键应用缓解措施:通过在 Squid 配置文件中添加访问控制列表(ACL)规则,明确阻止所有以 urn: 开头的 URL 路径访问,从而切断漏洞利用途径。
  • 自动化服务重启:完成配置更改后,脚本会自动重启 Squid 服务,使新配置立即生效。

安装指南

系统要求

  • 操作系统:任何支持Bash脚本的Linux发行版(如 Ubuntu, Debian, CentOS, Kali Linux 等)。
  • 权限:需要 root 或具有 sudo 权限的用户来执行脚本,以便修改配置文件并重启服务。
  • 依赖项:
    • bash:用于运行脚本。
    • bc:用于脚本中的浮点数版本比较。
    • squid:目标软件,其配置文件需位于默认路径 /etc/squid/squid.conf

安装步骤

  1. 下载脚本:将提供的 CVE-2025-54574.sh 脚本保存到您的系统中,例如 /usr/local/bin/ 或您的主目录。
  2. 赋予执行权限
    chmod +x /path/to/CVE-2025-54574.sh
    
  3. 安装依赖项(如果缺失)
    在基于Debian的系统中(如Ubuntu、Kali),您可以使用以下命令安装 bc
    sudo apt update
    sudo apt install bc
    
    在基于Red Hat的系统中(如CentOS),可以使用:
    sudo yum install bc
    

使用说明

基础使用示例

root 权限运行脚本即可启动检测与修复流程:

sudo ./CVE-2025-54574.sh

典型使用场景

  1. 首次安全响应:当获悉Squid漏洞(CVE-2025-54574)时,立即在您的代理服务器上运行此脚本,作为即时缓解措施,为官方补丁升级争取时间。
  2. 批量服务器加固:将此脚本集成到自动化运维工具(如 Ansible、SaltStack)中,对多个Squid服务器进行快速统一的安全加固。
  3. 漏洞验证与修复:安全团队可以使用此脚本来快速验证环境中的Squid服务器是否受到漏洞影响,并一键修复。

脚本执行过程详解

当您运行脚本后,它将依次执行以下操作:

  1. 检查Squid版本:脚本首先检查Squid版本,如果版本安全,则自动退出。
    ./CVE-2025-54574.sh
    # 输出示例:
    # [*] Checking Squid version...
    #     Installed version: 6.3
    # [!] Vulnerable version detected (<= 6.3)
    # [*] Backing up original config to /etc/squid/squid.conf.bak
    # ...
    
  2. 备份并修改配置:如果版本存在漏洞,脚本会备份原配置文件,并追加以下规则来禁用URN访问:
    # CVE-2025-54574 mitigation - block URN access
    acl deny_urn urlpath_regex ^urn:
    http_access deny deny_urn
    
  3. 重启服务:最后,脚本会重启Squid服务以应用更改,并输出完成信息。
    # [*] Restarting Squid...
    # [:check_mark:] Mitigation complete.
    

回滚更改

如果需要撤销脚本所做的更改(例如,您之后升级到了已修复漏洞的Squid 6.4+),可以使用备份文件轻松恢复:

sudo cp /etc/squid/squid.conf.bak /etc/squid/squid.conf
sudo systemctl restart squid

核心代码

核心修复脚本 (CVE-2025-54574.sh)

此脚本是整个解决方案的核心,它包含了版本检测、配置备份和规则应用的全过程。

#!/bin/bash

SQUID_CONF="/etc/squid/squid.conf"
BACKUP_CONF="/etc/squid/squid.conf.bak"

echo "[*] Checking Squid version..."
squid_version=$(squid -v 2>/dev/null | grep Version | awk '{print $3}')
echo "    Installed version: $squid_version"

# Extract numeric version (e.g. 6.3)
ver_num=$(echo "$squid_version" | grep -oP '\d+\.\d+')

# Compare version using bc for floating point comparison
if [[ "$(echo "$ver_num <= 6.3" | bc -l)" -eq 1 ]]; then
    echo "[!] Vulnerable version detected (<= 6.3)"
else
    echo "[+] Version is not vulnerable. No action needed."
    exit 0
fi

# Backup the original configuration file before making any changes
if [ -f "$SQUID_CONF" ]; then
    echo "[*] Backing up original config to $BACKUP_CONF"
    cp "$SQUID_CONF" "$BACKUP_CONF"
else
    echo "[!] squid.conf not found at $SQUID_CONF"
    exit 1
fi

# Check if the URN access block is already present to avoid duplicates
if grep -q "acl deny_urn urlpath_regex ^urn:" "$SQUID_CONF"; then
    echo "[+] URN access already disabled."
else
    echo "[*] Adding URN access block to squid.conf..."

    # Append the mitigation rules to the configuration file
    cat <<EOL >> "$SQUID_CONF"

# CVE-2025-54574 mitigation - block URN access
acl deny_urn urlpath_regex ^urn:
http_access deny deny_urn
EOL

    echo "[+] URN access rule added."
fi

# Restart the Squid service to apply the new configuration
echo "[*] Restarting Squid..."
systemctl restart squid

echo "[:check_mark:] Mitigation complete."
```FINISHED
6HFtX5dABrKlqXeO5PUv/84SoIo+TE3firf/5vX8AZ4QO/9Cm0gVAvI017RzuFkP
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容