
patch-manager
Ubuntu CVE-2019-14287 パッチマネージャーは、sudo 権限昇格の脆弱性である CVE-2019-14287 に対する保護状態の確認、緩和、検証を行う GUI ベースのラボ用ツールです。
このプロジェクトは、Ubuntu 19.04 amd64 ラボ環境向けに開発されました。
CVE-2019-14287 は、旧バージョンの sudo に影響します。この脆弱性により、root を除外した sudoers ルールを持つユーザーが、-1 や 4294967295 のような細工された数値ユーザー ID を使用して制限を回避できるようになります。
危険な sudoers ルールの例:
someuser ALL=(ALL, !root) /usr/bin/vim
脆弱な sudo バージョンでは、次のように悪用される可能性があります:
sudo -u#-1 id -u
sudo -u#4294967295 id -u
出力が 0 の場合、コマンドは root として実行されたことになります。
このアプリケーションは、2 層の保護を提供します:
実際の 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/ generated at runtime
├── backups/ generated at runtime
├── package/ generated during .deb build
└── dist/ generated .deb output
依存関係をインストール:
sudo apt update
sudo apt install -y python3 python3-tk sudo
プロジェクトフォルダに移動:
cd ~/projects/ubuntu-cve-2019-14287-patch-manager
アプリケーションを実行:
sudo python3 app.py
このアプリケーションは、次のファイルへのアクセスが必要なため、root として実行する必要があります:
/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 の最新リリースにアップロードすると、ユーザーは次のコマンドでアプリケーションをインストールできます:
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