
patch-manager
Ubuntu CVE-2019-14287 Patch Manager è uno strumento di laboratorio basato su GUI per verificare, mitigare e confermare la protezione contro CVE-2019-14287, una vulnerabilità di escalation dei privilegi in sudo.
Questo progetto è stato sviluppato per un ambiente di laboratorio Ubuntu 19.04 amd64.
CVE-2019-14287 colpisce le versioni meno recenti di sudo. La vulnerabilità consente a un utente con una regola sudoers che esclude root di aggirare la restrizione utilizzando un ID utente numerico appositamente predisposto come -1 o 4294967295.
Esempio di regola sudoers rischiosa:
someuser ALL=(ALL, !root) /usr/bin/vim
Nelle versioni vulnerabili di sudo, l'abuso può essere effettuato con:
sudo -u#-1 id -u
sudo -u#4294967295 id -u
Se l'output è 0, il comando è stato eseguito come root.
L'applicazione fornisce due livelli di protezione:
Patch reale del pacchetto sudo
Lo strumento può eseguire il comando di aggiornamento ufficiale del pacchetto per aggiornare sudo.
Mitigazione tramite configurazione sudoers
Lo strumento esegue la scansione dei file sudoers e disabilita le regole rischiose che contengono !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
Installa le dipendenze:
sudo apt update
sudo apt install -y python3 python3-tk sudo
Vai alla cartella del progetto:
cd ~/projects/ubuntu-cve-2019-14287-patch-manager
Esegui l'applicazione:
sudo python3 app.py
L'applicazione deve essere eseguita come root perché necessita dell'accesso a:
/etc/sudoers
/etc/sudoers.d/*
Dalla directory principale del progetto:
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 i file dell'applicazione:
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 le cartelle di runtime:
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 il launcher:
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 il file di controllo 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
Installa:
sudo dpkg -i dist/ubuntu-cve-2019-14287-patch-manager_1.0.0_all.deb
sudo apt --fix-broken install -y
Esegui dopo l'installazione:
sudo ubuntu-cve-2019-14287-patch-manager
Check SystemApply Real Sudo PatchScan Sudoers RulesDisable Selected Risky RulesVerify ProtectionL'applicazione rileva qualsiasi riga sudoers attiva contenente:
!root
! root
!#0
! #0
Non dipende da un nome utente o da un percorso comando fisso.
Esempi di regole rischiose:
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
Quando viene disabilitata, una regola rischiosa diventa:
# DISABLED by Ubuntu CVE-2019-14287 Patch Manager: john ALL=(ALL,!#0) /bin/bash
L'applicazione verifica la protezione utilizzando:
sudo -u#-1 id -u
sudo -u#4294967295 id -u
Risultato protetto:
The commands fail or do not return UID 0.
Risultato vulnerabile:
0
Questo strumento è pensato per l'uso in laboratorio e a scopo didattico.
Per i sistemi in produzione:
(ALL, !root).visudo.cd ~/projects/ubuntu-cve-2019-14287-patch-manager
cat >> README.md <<'EOF'
Ubuntu 19.04 ha raggiunto la fine del ciclo di vita, quindi i suoi repository di pacchetti predefiniti potrebbero non fornire più le dipendenze necessarie come python3-tk. Se il programma di installazione restituisce un errore simile a:
Depends: python3-tk but it is not installable
Unable to correct problems, you have held broken packages
utilizza i passaggi di ripristino di seguito.
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
Se apt install non accetta il file .deb locale su Ubuntu 19.04, usa:
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
Questa modifica ai repository è necessaria principalmente per le macchine di laboratorio con vecchio Ubuntu 19.04. Per i sistemi in produzione, usa una versione di Ubuntu attualmente supportata invece di fare affidamento su repository fuori supporto.
Dopo aver caricato il file .deb nella release più recente di GitHub, gli utenti possono installare l'applicazione con questo comando:
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