
patch-manager
O Gerenciador de Patch CVE-2019-14287 do Ubuntu é uma ferramenta de laboratório baseada em GUI para verificar, mitigar e verificar a proteção contra CVE-2019-14287, uma vulnerabilidade de escalonamento de privilégios no sudo.
Este projeto foi desenvolvido para um ambiente de laboratório Ubuntu 19.04 amd64.
CVE-2019-14287 afeta versões antigas do sudo. A vulnerabilidade permite que um usuário com uma regra sudoers que exclui root contorne a restrição usando um ID de usuário numérico modificado, como -1 ou 4294967295.
Exemplo de regra sudoers arriscada:
someuser ALL=(ALL, !root) /usr/bin/vim
Em versões vulneráveis do sudo, isso poderia ser abusado com:
sudo -u#-1 id -u
sudo -u#4294967295 id -u
Se a saída for 0, o comando foi executado como root.
O aplicativo fornece duas camadas de proteção:
Patch real do pacote sudo
A ferramenta pode executar o comando oficial de atualização do pacote para atualizar o sudo.
Mitigação da configuração sudoers
A ferramenta escaneia arquivos sudoers e desabilita regras arriscadas contendo !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/ gerado em tempo de execução
├── backups/ gerado em tempo de execução
├── package/ gerado durante a compilação .deb
└── dist/ saída .deb gerada
Instale as dependências:
sudo apt update
sudo apt install -y python3 python3-tk sudo
Vá para a pasta do projeto:
cd ~/projects/ubuntu-cve-2019-14287-patch-manager
Execute o aplicativo:
sudo python3 app.py
O aplicativo deve ser executado como root porque precisa de acesso a:
/etc/sudoers
/etc/sudoers.d/*
A partir da raiz do projeto:
mkdir -p package/DEBIAN
mkdir -p package/usr/share/ubuntu-cve-2019-14287-patch-manager
mkdir -p package/usr/local/bin
mkdir -p dist
Copie os arquivos do aplicativo:
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/
Crie pastas de tempo de execução:
mkdir -p package/usr/share/ubuntu-cve-2019-14287-patch-manager/logs
mkdir -p package/usr/share/ubuntu-cve-2019-14287-patch-manager/backups
Crie o lançador:
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
Crie o arquivo de controle 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: Gerenciador de patch GUI para a vulnerabilidade sudo CVE-2019-14287
Uma ferramenta de laboratório GUI para verificar a versão do sudo, aplicar o patch do pacote sudo,
escanear arquivos sudoers em busca de regras arriscadas !root ou !#0, desabilitar regras arriscadas
selecionadas com segurança e verificar a proteção contra CVE-2019-14287.
CONTROL
Compile:
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
Instale:
sudo dpkg -i dist/ubuntu-cve-2019-14287-patch-manager_1.0.0_all.deb
sudo apt --fix-broken install -y
Execute após a instalação:
sudo ubuntu-cve-2019-14287-patch-manager
Check SystemApply Real Sudo PatchScan Sudoers RulesDisable Selected Risky RulesVerify ProtectionO aplicativo detecta qualquer linha ativa do sudoers contendo:
!root
! root
!#0
! #0
Não depende de um nome de usuário ou caminho de comando fixo.
Exemplos de regras arriscadas:
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 desabilitada, uma regra arriscada se torna:
# DISABLED by Ubuntu CVE-2019-14287 Patch Manager: john ALL=(ALL,!#0) /bin/bash
O aplicativo verifica a proteção usando:
sudo -u#-1 id -u
sudo -u#4294967295 id -u
Resultado protegido:
Os comandos falham ou não retornam UID 0.
Resultado vulnerável:
0
Esta ferramenta é destinada a uso em laboratório e educacional.
Para sistemas de produção:
(ALL, !root).visudo.cd ~/projects/ubuntu-cve-2019-14287-patch-manager
cat >> README.md <<'EOF'
O Ubuntu 19.04 atingiu o fim da vida útil, portanto seus repositórios de pacotes padrão podem não fornecer mais as dependências necessárias, como python3-tk. Se o instalador falhar com um erro semelhante a:
Depends: python3-tk but it is not installable
Unable to correct problems, you have held broken packages
use as etapas de recuperação abaixo.
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 o apt install não aceitar o arquivo .deb local no Ubuntu 19.04, use:
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
Esta alteração no repositório é necessária principalmente para máquinas de laboratório antigas com Ubuntu 19.04. Para sistemas de produção, use uma versão suportada do Ubuntu em vez de depender de repositórios de fim de vida útil.
Após enviar o arquivo .deb para o último release do GitHub, os usuários podem instalar o aplicativo com este 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