补丁管理器
Ubuntu CVE-2019-14287 补丁管理器是一个基于 GUI 的实验室工具,用于检查、缓解和验证针对 CVE-2019-14287(一个 sudo 权限提升漏洞)的防护。
该项目是为 Ubuntu 19.04 amd64 实验室环境开发的。
CVE-2019-14287 影响较旧的 sudo 版本。该漏洞允许具有排除 root 的 sudoers 规则的用户,通过使用构造的数字用户 ID(如 -1 或 4294967295)绕过限制。
有风险的 sudoers 规则示例:
someuser ALL=(ALL, !root) /usr/bin/vim
在易受攻击的 sudo 版本中,可以通过以下方式利用:
sudo -u#-1 id -u
sudo -u#4294967295 id -u
如果输出为 0,则表示命令以 root 身份执行。
该应用提供两层保护:
实际 sudo 包补丁
该工具可以运行官方包升级命令来更新 sudo。
Sudoers 配置缓解
该工具扫描 sudoers 文件并禁用包含 !root 或 !#0 的危险规则。
/etc/sudoers/etc/sudoers.d/*!root! root!#0! #0visudo -cf 验证更改ubuntu-cve-2019-14287-patch-manager/
├── app.py
├── scripts/
│ ├── check_system.sh
│ ├── apply_real_sudo_patch.sh
│ └── verify_patch.sh
├── assets/
├── README.md
├── .gitignore
├── logs/ 运行时生成
├── backups/ 运行时生成
├── package/ .deb 构建过程中生成
└── dist/ 生成的 .deb 输出目录
安装依赖项:
sudo apt update
sudo apt install -y python3 python3-tk sudo
进入项目文件夹:
cd ~/projects/ubuntu-cve-2019-14287-patch-manager
运行应用:
sudo python3 app.py
应用必须以 root 身份运行,因为它需要访问以下路径:
/etc/sudoers
/etc/sudoers.d/*
从项目根目录执行:
mkdir -p package/DEBIAN
mkdir -p package/usr/share/ubuntu-cve-2019-14287-patch-manager
mkdir -p package/usr/local/bin
mkdir -p dist
复制应用文件:
cp app.py package/usr/share/ubuntu-cve-2019-14287-patch-manager/
cp -r scripts package/usr/share/ubuntu-cve-2019-14287-patch-manager/
cp -r assets package/usr/share/ubuntu-cve-2019-14287-patch-manager/
创建运行时文件夹:
mkdir -p package/usr/share/ubuntu-cve-2019-14287-patch-manager/logs
mkdir -p package/usr/share/ubuntu-cve-2019-14287-patch-manager/backups
创建启动器:
cat > package/usr/local/bin/ubuntu-cve-2019-14287-patch-manager <<'LAUNCHER'
#!/bin/bash
cd /usr/share/ubuntu-cve-2019-14287-patch-manager
exec python3 app.py
LAUNCHER
chmod +x package/usr/local/bin/ubuntu-cve-2019-14287-patch-manager
创建 Debian 控制文件:
cat > package/DEBIAN/control <<'CONTROL'
Package: ubuntu-cve-2019-14287-patch-manager
Version: 1.0.0
Section: utils
Priority: optional
Architecture: all
Depends: python3, python3-tk, sudo
Maintainer: Hivin Manju Sri <[email protected]>
Description: 用于 CVE-2019-14287 sudo 漏洞的 GUI 补丁管理器
一个实验室 GUI 工具,用于检查 sudo 版本、应用 sudo 包补丁、
扫描 sudoers 文件中危险的 !root 或 !#0 规则、安全禁用选中的危险
规则,并验证 CVE-2019-14287 防护。
CONTROL
构建:
chmod 755 package/DEBIAN
chmod 644 package/DEBIAN/control
dpkg-deb --build package dist/ubuntu-cve-2019-14287-patch-manager_1.0.0_all.deb
安装:
sudo dpkg -i dist/ubuntu-cve-2019-14287-patch-manager_1.0.0_all.deb
sudo apt --fix-broken install -y
安装后运行:
sudo ubuntu-cve-2019-14287-patch-manager
检查系统应用实际 sudo 补丁扫描 sudoers 规则禁用选中的危险规则验证防护该应用检测任何活跃的 sudoers 行中包含以下内容:
!root
! root
!#0
! #0
它不依赖于固定的用户名或命令路径。
危险规则示例:
testone ALL=(ALL, !root) /usr/bin/vim
john ALL=(ALL,!root) /bin/bash
admin ALL=(ALL, !#0) /usr/bin/python3
%developers ALL=(ALL,!#0) /any/path
禁用后,危险规则变为:
# DISABLED by Ubuntu CVE-2019-14287 Patch Manager: john ALL=(ALL,!#0) /bin/bash
该应用使用以下命令验证防护:
sudo -u#-1 id -u
sudo -u#4294967295 id -u
受保护的结果:
命令失败或未返回 UID 0。
易受攻击的结果:
0
该工具仅供实验室和教学用途使用。
对于生产系统:
(ALL, !root) 这样的宽泛 sudoers 规则。visudo 验证 sudoers 文件。cd ~/projects/ubuntu-cve-2019-14287-patch-manager
cat >> README.md <<'EOF'
Ubuntu 19.04 已停止支持,因此其默认软件包仓库可能不再提供所需依赖项,例如 python3-tk。如果安装程序出现类似错误:
Depends: python3-tk but it is not installable
Unable to correct problems, you have held broken packages
请使用下面的恢复步骤。
sudo dpkg --remove ubuntu-cve-2019-14287-patch-manager 2>/dev/null || true
sudo apt --fix-broken install -y
sudo dpkg --configure -a
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup.$(date +%F_%H-%M-%S)
sudo sed -i -E 's|http://([a-z]{2}\.)?archive.ubuntu.com/ubuntu|http://old-releases.ubuntu.com/ubuntu|g' /etc/apt/sources.list
sudo sed -i -E 's|http://security.ubuntu.com/ubuntu|http://old-releases.ubuntu.com/ubuntu|g' /etc/apt/sources.list
sudo apt update
sudo apt install -y python3-tk
wget -O ubuntu-cve-2019-14287-patch-manager_1.0.0_all.deb "https://github.com/HivinManjuSri/ubuntu-cve-2019-14287-patch-manager/releases/latest/download/ubuntu-cve-2019-14287-patch-manager_1.0.0_all.deb" && sudo apt install -y ./ubuntu-cve-2019-14287-patch-manager_1.0.0_all.deb
如果 apt install 在 Ubuntu 19.04 上不接受本地的 .deb 文件,请使用:
wget -O ubuntu-cve-2019-14287-patch-manager_1.0.0_all.deb "https://github.com/HivinManjuSri/ubuntu-cve-2019-14287-patch-manager/releases/latest/download/ubuntu-cve-2019-14287-patch-manager_1.0.0_all.deb" && sudo dpkg -i ./ubuntu-cve-2019-14287-patch-manager_1.0.0_all.deb && sudo apt --fix-broken install -y
sudo ubuntu-cve-2019-14287-patch-manager
此仓库更改主要针对旧的 Ubuntu 19.04 实验室机器。对于生产系统,请使用当前受支持的 Ubuntu 版本,而不是依赖已停止支持的仓库。
将 .deb 文件上传到 GitHub 的 最新发行版 后,用户可以使用以下命令安装该应用程序:
wget -O ubuntu-cve-2019-14287-patch-manager_1.0.0_all.deb "https://github.com/HivinManjuSri/ubuntu-cve-2019-14287-patch-manager/releases/latest/download/ubuntu-cve-2019-14287-patch-manager_1.0.0_all.deb" && sudo apt install -y ./ubuntu-cve-2019-14287-patch-manager_1.0.0_all.deb
Hivin Manju Sri