
gestor de parches
Ubuntu CVE-2019-14287 Patch Manager es una herramienta de laboratorio con interfaz gráfica (GUI) para comprobar, mitigar y verificar la protección contra CVE-2019-14287, una vulnerabilidad de escalada de privilegios en sudo.
Este proyecto se desarrolló para un entorno de laboratorio Ubuntu 19.04 amd64.
CVE-2019-14287 afecta a versiones antiguas de sudo. La vulnerabilidad permite que un usuario con una regla de sudoers que excluye a root omita la restricción utilizando un ID de usuario numérico manipulado, como -1 o 4294967295.
Ejemplo de regla sudoers de riesgo:
someuser ALL=(ALL, !root) /usr/bin/vim
En versiones vulnerables de sudo, esto podría explotarse con:
sudo -u#-1 id -u
sudo -u#4294967295 id -u
Si la salida es 0, el comando se ejecutó como root.
La aplicación proporciona dos capas de protección:
Parche real del paquete sudo
La herramienta puede ejecutar el comando oficial de actualización del paquete para actualizar sudo.
Mitigación mediante configuración de sudoers
La herramienta analiza los archivos de sudoers y desactiva las reglas de riesgo que contienen !root o !#0.
/etc/sudoers/etc/sudoers.d/*!root! root!#0! #0visudo -cfubuntu-cve-2019-14287-patch-manager/
├── app.py
├── scripts/
│ ├── check_system.sh
│ ├── apply_real_sudo_patch.sh
│ └── verify_patch.sh
├── assets/
├── README.md
├── .gitignore
├── logs/ generated at runtime
├── backups/ generated at runtime
├── package/ generated during .deb build
└── dist/ generated .deb output
Instala las dependencias:
sudo apt update
sudo apt install -y python3 python3-tk sudo
Ve a la carpeta del proyecto:
cd ~/projects/ubuntu-cve-2019-14287-patch-manager
Ejecuta la aplicación:
sudo python3 app.py
La aplicación debe ejecutarse como root porque necesita acceso a:
/etc/sudoers
/etc/sudoers.d/*
Desde la raíz del proyecto:
mkdir -p package/DEBIAN
mkdir -p package/usr/share/ubuntu-cve-2019-14287-patch-manager
mkdir -p package/usr/local/bin
mkdir -p dist
Copia los archivos de la aplicación:
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/
Crea las carpetas de ejecución:
mkdir -p package/usr/share/ubuntu-cve-2019-14287-patch-manager/logs
mkdir -p package/usr/share/ubuntu-cve-2019-14287-patch-manager/backups
Crea el lanzador:
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
Crea el archivo de control de 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: GUI patch manager for CVE-2019-14287 sudo vulnerability
A lab GUI tool for checking sudo version, applying the sudo package patch,
scanning sudoers files for risky !root or !#0 rules, disabling selected risky
rules safely, and verifying CVE-2019-14287 protection.
CONTROL
Compila:
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
Instala:
sudo dpkg -i dist/ubuntu-cve-2019-14287-patch-manager_1.0.0_all.deb
sudo apt --fix-broken install -y
Ejecuta después de instalar:
sudo ubuntu-cve-2019-14287-patch-manager
Check SystemApply Real Sudo PatchScan Sudoers RulesDisable Selected Risky RulesVerify ProtectionLa aplicación detecta cualquier línea activa de sudoers que contenga:
!root
! root
!#0
! #0
No depende de un nombre de usuario ni de una ruta de comando fijos.
Ejemplos de reglas de riesgo:
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
Cuando se desactiva, una regla de riesgo se convierte en:
# DISABLED by Ubuntu CVE-2019-14287 Patch Manager: john ALL=(ALL,!#0) /bin/bash
La aplicación verifica la protección mediante:
sudo -u#-1 id -u
sudo -u#4294967295 id -u
Resultado protegido:
The commands fail or do not return UID 0.
Resultado vulnerable:
0
Esta herramienta está pensada para uso en laboratorio y educativo.
Para sistemas de producción:
(ALL, !root).visudo.cd ~/projects/ubuntu-cve-2019-14287-patch-manager
cat >> README.md <<'EOF'
Ubuntu 19.04 ha llegado al final de su ciclo de vida, por lo que sus repositorios de paquetes predeterminados pueden dejar de proporcionar dependencias necesarias como python3-tk. Si el instalador falla con un error similar a:
Depends: python3-tk but it is not installable
Unable to correct problems, you have held broken packages
utiliza los pasos de recuperación que se indican a continuación.
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
Si apt install no acepta el archivo .deb local en Ubuntu 19.04, usa: