
patch-manager
Ubuntu CVE-2019-14287 Patch Manager est un outil de laboratoire à interface graphique (GUI) permettant de vérifier, d'atténuer et de confirmer la protection contre CVE-2019-14287, une vulnérabilité d'élévation de privilèges dans sudo.
Ce projet a été développé pour un environnement de laboratoire Ubuntu 19.04 amd64.
CVE-2019-14287 affecte les anciennes versions de sudo. Cette vulnérabilité permet à un utilisateur disposant d'une règle sudoers excluant root de contourner la restriction en utilisant un identifiant utilisateur numérique spécialement conçu tel que -1 ou 4294967295.
Exemple de règle sudoers risquée :
someuser ALL=(ALL, !root) /usr/bin/vim
Dans les versions de sudo vulnérables, cela peut être exploité avec :
sudo -u#-1 id -u
sudo -u#4294967295 id -u
Si la sortie est 0, la commande s'est exécutée en tant que root.
L'application fournit deux niveaux de protection :
Véritable patch du paquet sudo
L'outil peut exécuter la commande officielle de mise à niveau du paquet pour mettre à jour sudo.
Atténuation via la configuration sudoers
L'outil analyse les fichiers sudoers et désactive les règles risquées contenant !root ou !#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
Installer les dépendances :
sudo apt update
sudo apt install -y python3 python3-tk sudo
Accédez au dossier du projet :
cd ~/projects/ubuntu-cve-2019-14287-patch-manager
Exécutez l'application :
sudo python3 app.py
L'application doit être exécutée en tant que root car elle nécessite l'accès à :
/etc/sudoers
/etc/sudoers.d/*
Depuis la racine du projet :
mkdir -p package/DEBIAN
mkdir -p package/usr/share/ubuntu-cve-2019-14287-patch-manager
mkdir -p package/usr/local/bin
mkdir -p dist
Copier les fichiers de l'application :
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/
Créer les dossiers d'exécution :
mkdir -p package/usr/share/ubuntu-cve-2019-14287-patch-manager/logs
mkdir -p package/usr/share/ubuntu-cve-2019-14287-patch-manager/backups
Créer le lanceur :
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
Créer le fichier de contrôle 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
Construction :
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
Installation :
sudo dpkg -i dist/ubuntu-cve-2019-14287-patch-manager_1.0.0_all.deb
sudo apt --fix-broken install -y
Exécution après installation :
sudo ubuntu-cve-2019-14287-patch-manager
Check SystemApply Real Sudo PatchScan Sudoers RulesDisable Selected Risky RulesVerify ProtectionL'application détecte toute ligne sudoers active contenant :
!root
! root
!#0
! #0
Elle ne dépend ni d'un nom d'utilisateur fixe ni d'un chemin de commande.
Exemples de règles risquées :
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
Lorsqu'elle est désactivée, une règle risquée devient :
# DISABLED by Ubuntu CVE-2019-14287 Patch Manager: john ALL=(ALL,!#0) /bin/bash
L'application vérifie la protection à l'aide de :
sudo -u#-1 id -u
sudo -u#4294967295 id -u
Résultat protégé :
The commands fail or do not return UID 0.
Résultat vulnérable :
0
Cet outil est destiné à un usage en laboratoire et à des fins pédagogiques.
Pour les systèmes de production :
(ALL, !root).visudo.cd ~/projects/ubuntu-cve-2019-14287-patch-manager
cat >> README.md <<'EOF'
Ubuntu 19.04 est en fin de vie, ses dépôts de paquets par défaut peuvent donc ne plus fournir les dépendances requises telles que python3-tk. Si le programme d'installation échoue avec une erreur similaire à :
Depends: python3-tk but it is not installable
Unable to correct problems, you have held broken packages
utilisez les étapes de récupération ci-dessous.
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 n'accepte pas le fichier .deb local sur Ubuntu 19.04, utilisez :