
패치 관리자
Ubuntu CVE-2019-14287 패치 관리자는 sudo 권한 상승 취약점인 CVE-2019-14287에 대한 확인, 완화 및 보호 검증을 위한 GUI 기반 실습 도구입니다.
이 프로젝트는 Ubuntu 19.04 amd64 실습 환경을 위해 개발되었습니다.
CVE-2019-14287은 오래된 sudo 버전에 영향을 미칩니다. 이 취약점으로 인해 루트를 제외하는 sudoers 규칙을 가진 사용자가 -1 또는 4294967295와 같이 조작된 숫자 사용자 ID를 사용하여 제한을 우회할 수 있습니다.
위험한 sudoers 규칙 예시:
someuser ALL=(ALL, !root) /usr/bin/vim
취약한 sudo 버전에서는 다음과 같이 악용될 수 있습니다:
sudo -u#-1 id -u
sudo -u#4294967295 id -u
출력이 0이면 명령이 루트로 실행된 것입니다.
이 애플리케이션은 두 가지 보호 계층을 제공합니다:
실제 sudo 패키지 패치
이 도구는 공식 패키지 업그레이드 명령을 실행하여 sudo를 업데이트할 수 있습니다.
Sudoers 구성 완화
이 도구는 sudoers 파일을 스캔하고 !root 또는 !#0을 포함하는 위험한 규칙을 비활성화합니다.
/etc/sudoers 스캔/etc/sudoers.d/* 스캔!root! root!#0! #0visudo -cf를 사용하여 변경 사항 검증ubuntu-cve-2019-14287-patch-manager/
├── app.py
├── scripts/
│ ├── check_system.sh
│ ├── apply_real_sudo_patch.sh
│ └── verify_patch.sh
├── assets/
├── README.md
├── .gitignore
├── logs/ 실행 시 생성됨
├── backups/ 실행 시 생성됨
├── package/ .deb 빌드 시 생성됨
└── dist/ 생성된 .deb 출력
의존성 설치:
sudo apt update
sudo apt install -y python3 python3-tk sudo
프로젝트 폴더로 이동:
cd ~/projects/ubuntu-cve-2019-14287-patch-manager
애플리케이션 실행:
sudo python3 app.py
애플리케이션은 다음에 접근해야 하므로 루트로 실행해야 합니다:
/etc/sudoers
/etc/sudoers.d/*
프로젝트 루트에서:
mkdir -p package/DEBIAN
mkdir -p package/usr/share/ubuntu-cve-2019-14287-patch-manager
mkdir -p package/usr/local/bin
mkdir -p dist
애플리케이션 파일 복사:
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/
런타임 폴더 생성:
mkdir -p package/usr/share/ubuntu-cve-2019-14287-patch-manager/logs
mkdir -p package/usr/share/ubuntu-cve-2019-14287-patch-manager/backups
런처 생성:
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
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
빌드:
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
설치:
sudo dpkg -i dist/ubuntu-cve-2019-14287-patch-manager_1.0.0_all.deb
sudo apt --fix-broken install -y
설치 후 실행:
sudo ubuntu-cve-2019-14287-patch-manager
Check System 클릭Apply Real Sudo Patch 클릭Scan Sudoers Rules 클릭Disable Selected Risky Rules 클릭Verify Protection 클릭이 애플리케이션은 다음을 포함하는 모든 활성 sudoers 줄을 탐지합니다:
!root
! root
!#0
! #0
고정된 사용자 이름이나 명령 경로에 의존하지 않습니다.
위험한 규칙 예시:
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
비활성화되면 위험한 규칙은 다음과 같이 됩니다:
# DISABLED by Ubuntu CVE-2019-14287 Patch Manager: john ALL=(ALL,!#0) /bin/bash
애플리케이션은 다음을 사용하여 보호를 확인합니다:
sudo -u#-1 id -u
sudo -u#4294967295 id -u
보호된 결과:
명령이 실패하거나 UID 0을 반환하지 않음
취약한 결과:
0
이 도구는 실습 및 교육 목적으로 사용됩니다.
프로덕션 시스템의 경우:
(ALL, !root)를 사용한 광범위한 sudoers 규칙을 피하십시오.visudo를 사용하여 sudoers 파일을 검증하십시오.cd ~/projects/ubuntu-cve-2019-14287-patch-manager
cat >> README.md <<'EOF'
Ubuntu 19.04는 수명이 종료되었으므로 기본 패키지 저장소에서 python3-tk와 같은 필수 의존성을 더 이상 제공하지 않을 수 있습니다. 설치 프로그램이 다음과 유사한 오류로 실패하는 경우:
Depends: python3-tk but it is not installable
Unable to correct problems, you have held broken packages
아래 복구 단계를 사용하십시오.
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
Ubuntu 19.04에서 apt install이 로컬 .deb 파일을 허용하지 않는 경우 다음을 사용하십시오:
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
이 저장소 변경은 주로 오래된 Ubuntu 19.04 실습 시스템에 필요합니다. 프로덕션 시스템의 경우 수명이 종료된 저장소에 의존하지 말고 현재 지원되는 Ubuntu 릴리스를 사용하십시오.
.deb 파일을 GitHub latest release에 업로드한 후 사용자는 다음 명령으로 애플리케이션을 설치할 수 있습니다:
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