ΠΠΎΠΌΠΏΠ°Π½ΠΈΡ Qualys Π²ΡΡΠ²ΠΈΠ»Π° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡ (CVE-2025-6019) Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ libblockdev, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΡΡ ΡΠ΅ΡΠ΅Π· ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΠΈ Ρ ΡΠΎΠ½ΠΎΠ²ΡΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠΌ udisks ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΏΡΠ°Π²Π° root Π² ΡΠΈΡΡΠ΅ΠΌΠ΅. Π Π°Π±ΠΎΡΠ° ΠΏΡΠΎΡΠΎΡΠΈΠΏΠ° ΡΠΊΡΠΏΠ»ΠΎΠΈΡΠ° ΠΏΡΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠΎΠ²Π°Π½Π° Π² Ubuntu, Debian, Fedora ΠΈ openSUSE Leap 15.
ΠΡΠΎΡΠ΅ΡΡ udisks ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΠΎ Π²ΡΠ΅Ρ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π°Ρ Linux ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ D-Bus Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Ρ Π½Π°ΠΊΠΎΠΏΠΈΡΠ΅Π»ΡΠΌΠΈ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ ΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅. ΠΠ»Ρ ΡΠΎΠ²Π΅ΡΡΠ΅Π½ΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ Ρ Π½Π°ΠΊΠΎΠΏΠΈΡΠ΅Π»ΡΠΌΠΈ udisks Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ libblockdev. ΠΠΎΡΡΡΠΏ ΠΊ udisks ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΎΡΠΊΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ, ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΡ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ Β«allow_activeΒ», Ρ.Π΅. ΠΈΠΌΠ΅ΡΡΠΈΡ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈΠΉ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΡ ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΠ²ΡΠΈΡ ΡΡ ΡΠ΅ΡΠ΅Π· Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΠΊΠΎΠ½ΡΠΎΠ»Ρ ΠΈΠ»ΠΈ Π·Π°ΠΏΡΡΡΠΈΠ²ΡΠΈΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ΅Π°Π½Ρ. ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ, ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡΠΈΠ΅ΡΡ ΡΠ΄Π°Π»ΡΠ½Π½ΠΎ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎ ssh, Π½Π΅ ΠΏΠΎΠΏΠ°Π΄Π°ΡΡ Π² ΡΡΠΎΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΠΈ Π½Π°ΠΏΡΡΠΌΡΡ Π½Π΅ ΠΌΠΎΠ³ΡΡ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡ.
Untuk mengatasi batasan ini, Anda dapat menggunakan trik yang memungkinkan Anda menaikkan level autentikasi ke "allow_active" dengan memanipulasi peluncuran layanan pengguna oleh utilitas systemctl, yang akan dianggap polkitd sebagai tanda sesi lokal. Inti dari metode ini adalah polkitd menentukan keberadaan akses fisik dan menetapkan level "allow_active" berdasarkan tanda tidak langsung yang dapat dipengaruhi. Keterbatasan metode ini adalah untuk menipu polkitd, diperlukan sesi pengguna lokal dengan akses fisik yang sudah aktif dalam sistem.
ΠΡΠΎΡΡΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠ°Π² Β«allow_activeΒ» ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΡ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ (CVE-2025-6018) Π² PAM (Pluggable Authentication Modules), ΠΊΠΎΡΠΎΡΡΡ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΈΠ· Qualys Π²ΡΡΠ²ΠΈΠ»ΠΈ Π² Ρ ΠΎΠ΄Π΅ Π°Π½Π°Π»ΠΈΠ·Π° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ Π² libblockdev. Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π»ΡΠ±ΠΎΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΠ²ΡΠ΅ΠΌΡΡΡ ΠΏΠΎ SSH, Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ Β«allow_activeΒ». ΠΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½Π° Π΄Π»Ρ Π½Π°ΡΡΡΠΎΠ΅ΠΊ PAM Π² openSUSE Leap 15 ΠΈ SUSE Linux Enterprise 15, ΠΈ ΠΏΡΠΎΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΡΠΈΡ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π°Ρ .
Π ΠΌΠΎΠ΄ΡΠ»Π΅ pam_env Π² openSUSE ΠΈ SUSE ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΎ ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π° ~/.pam_environment. Π§Π΅ΡΠ΅Π· Π΄Π°Π½Π½ΡΠΉ ΡΠ°ΠΉΠ» ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΡΡΠ°Π²ΠΈΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ XDG_SEAT=seat0 ΠΈ XDG_VTNR=1, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ Π±ΡΠ΄ΡΡ Π²ΠΎΡΠΏΡΠΈΠ½ΡΡΡ ΠΊΠ°ΠΊ ΠΏΡΠΈΠ·Π½Π°ΠΊ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΡΠΈΡΡΡΡΡΠ²ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π²Ρ ΠΎΠ΄ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ½ ΠΏΠΎ SSH. ΠΠΎΠ΄ΡΠ»Ρ pam_env ΡΠ°ΠΊΠΆΠ΅ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΏΡΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ ΠΏΠΎ ssh Π² Debian 12 dan Ubuntu 24.04 (Π² Debian 13 dan Ubuntu 24.10+ ΠΎΠ½ ΠΎΡΠΊΠ»ΡΡΡΠ½), Π½ΠΎ Π²ΡΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ Π² Π΄Π°Π½Π½ΡΡ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π°Ρ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π΄Π»Ρ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΡΡΠΎΠ²Π½Ρ Π΄ΠΎΡΡΡΠΏΠ° Π΄ΠΎ Β«allow_activeΒ», ΡΠ°ΠΊ ΠΊΠ°ΠΊ pam_env Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ Π½Π° ΡΠΈΠ½Π°Π»ΡΠ½ΠΎΠΌ ΡΡΠ°ΠΏΠ΅ ΠΏΠΎΡΠ»Π΅ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΌΠΎΠ΄ΡΠ»Ρ pam_systemd ΠΈ Π²ΡΡΡΠ°Π²Π»Π΅Π½Π½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ Π½Π΅ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠ²Π»ΠΈΡΡΡ Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠ΅Π°Π½ΡΠ°.
Mengenai kerentanan dalam libblockdev, penyerang dapat memasang citra sistem berkas sembarangan dalam mode loop, menempatkan berkas yang dapat dieksekusi dengan tanda root SUID atau perangkat khusus (/dev/mem) untuk akses tingkat rendah ke disk atau memori dalam citra ini. Untuk memblokir serangan tersebut, citra FS dipasang oleh sistem dengan tanda nosuid dan nodev, tetapi kerentanan dalam libblockdev memungkinkan untuk memasang citra tanpa tanda nosuid dan nodev. Inti dari kerentanan ini adalah bahwa udisks memungkinkan pengguna dengan tingkat akses "allow_active" untuk mengubah ukuran sistem berkas mereka, dan libblockdev memasang FS untuk sementara tanpa menyetel tanda nosuid dan nodev selama operasi ini.
Maka, serangannya adalah dengan membuat perangkat loop berdasarkan citra sistem berkas XFS yang memuat berkas root suid, menginisiasi operasi untuk mengubah ukuran perangkat loop, dan memantau saat perangkat tersebut dipasang dalam direktori /tmp/blockdev*: victim> killall -KILL gvfs-udisks2-volume-monitor victim> udisksctl loop-setup βfile ./xfs.image βno-user-interaction Mapped file ./xfs.image as /dev/loop0.victim> while true; do /tmp/blockdev*/bash -c 'sleep 10; ls -l /tmp/blockdev*/bash' && break; selesai 2>/dev/null & korban> panggilan gdbus βsistem βtujuan org.freedesktop.UDisks2 βjalur-objek /org/freedesktop/UDisks2/block_devices/loop0 βmetode org.freedesktop.UDisks2.Filesystem.Resize 0 '{}' Kesalahan: GDBus.Error:org.freedesktop.UDisks2.Error.Failed: Kesalahan mengubah ukuran sistem berkas di /dev/loop0: Gagal melepas '/dev/loop0' setelah mengubah ukurannya: target sedang sibuk -r-sr-xr-x. 1 root root 1406608 18 Jun 09:42 /tmp/blockdev.RSM429/bash korban> /tmp/blockdev*/bash -p korban# id uid=65534(tak seorang pun) gid=65534(tak seorang pun) euid=0(root) grup=65534(tak seorang pun)
Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡΡ Π² libblockdev ΠΏΠΎΠΊΠ° ΡΡΡΡΠ°Π½Π΅Π½Π° ΡΠΎΠ»ΡΠΊΠΎ Π² Π²ΠΈΠ΄Π΅ ΠΏΠ°ΡΡΠ΅ΠΉ. ΠΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΈΠ»ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠΈ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π² Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π°Ρ ΠΌΠΎΠΆΠ½ΠΎ Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΡΡΡΠ°Π½ΠΈΡΠ°Ρ (Π΅ΡΠ»ΠΈ ΡΡΡΠ°Π½ΠΈΡΠ° Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½Π°, Π·Π½Π°ΡΠΈΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π° Π΅ΡΡ Π½Π΅ ΠΏΡΠΈΡΡΡΠΏΠΈΠ»ΠΈ ΠΊ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ): Debian, Ubuntu, Fedora, SUSE/openSUSE, RHEL, Gentoo ΠΈ Arch (1, 2). Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΠ±Ρ ΠΎΠ΄Π½ΡΡ ΠΏΡΡΠ΅ΠΉ Π΄Π»Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Β«org.freedesktop.udisks2.modify-deviceΒ» Π² polkit, ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ² Π² ΡΠ°ΠΉΠ»Π΅ /usr/share/polkit-1/actions/org.freedesktop.UDisks2.policy Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° Β«allow_activeΒ» Ρ Β«yesΒ» Π½Π° Β«auth_adminΒ».
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΌΠ΅ΡΠΈΡΡ ΡΠ°ΡΠΊΡΡΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°ΡΠΎΠ² Π½Π°Π·Π°Π΄ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡ (CVE-2025-6020) Π² ΠΏΠ°ΠΊΠ΅ΡΠ΅ linux-pam, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΏΡΠ°Π²Π° root. ΠΠΎΠ΄ΡΠ»Ρ pam_namespace Π΄ΠΎΠ»ΠΆΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π½Π΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ» ΡΠ°ΠΉΠ»ΠΎΠ²ΡΠ΅ ΠΏΡΡΠΈ, ΠΏΠΎΠ΄ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ»ΠΎ ΡΠ΅ΡΠ΅Π· ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΠΈ Ρ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΡΡΡΠ»ΠΊΠ°ΠΌΠΈ ΠΈ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Π³ΠΎΠ½ΠΊΠΈ Π΄ΠΎΠ±ΠΈΡΡΡΡ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΠΈ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
ΡΠ°ΠΉΠ»ΠΎΠ² Π² ΡΠΈΡΡΠ΅ΠΌΠ΅. Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡΡ ΡΡΡΡΠ°Π½Π΅Π½Π° Π² Π²ΡΠΏΡΡΠΊΠ΅ linux-pam 1.7.1. ΠΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΈΠ»ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠΈ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π² Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π°Ρ
ΠΌΠΎΠΆΠ½ΠΎ Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΡ
ΡΡΡΠ°Π½ΠΈΡΠ°Ρ
: Debian, Ubuntu, Fedora, SUSE/openSUSE, RHEL, Gentoo ΠΈ Arch (1, 2).
Sumber: opennet.ru
