
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 :
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
Ce changement de dépôt est principalement nécessaire pour les anciennes machines de laboratoire sous Ubuntu 19.04. Pour les systèmes de production, utilisez une version d'Ubuntu actuellement prise en charge plutôt que de vous appuyer sur des dépôts en fin de vie.
Après avoir téléversé le fichier .deb dans la dernière version GitHub, les utilisateurs peuvent installer l'application avec cette commande :
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