Kerentanan di VFS kernel Linux yang memungkinkan Anda meningkatkan hak istimewa Anda

Kerentanan (CVE-2022-0185) telah diidentifikasi di API Konteks Sistem File yang disediakan oleh kernel Linux, yang memungkinkan pengguna lokal mendapatkan hak akses root pada sistem. Peneliti yang mengidentifikasi masalah menerbitkan demonstrasi eksploitasi yang memungkinkan Anda mengeksekusi kode sebagai root pada Ubuntu 20.04 dalam konfigurasi default. Kode eksploitasi rencananya akan diposting di GitHub dalam waktu seminggu setelah distribusi merilis pembaruan yang memperbaiki kerentanan.

Kerentanan ada pada fungsi legacy_parse_param() di VFS dan disebabkan oleh kegagalan memeriksa dengan benar ukuran maksimum parameter yang disediakan pada sistem file yang tidak mendukung Filesystem Context API. Melewati parameter yang terlalu besar dapat menyebabkan meluapnya variabel integer yang digunakan untuk menghitung ukuran data yang akan ditulis - kode memiliki buffer overflow centang "if (len > PAGE_SIZE - 2 - size)", yang tidak berfungsi jika nilai ukuran lebih besar dari 4094. untuk integer overflow melalui batas bawah (integer underflow, saat casting 4096 - 2 - 4095 ke unsigned int, hasilnya adalah 2147483648).

Kesalahan ini memungkinkan, ketika mengakses image sistem file yang dirancang khusus, menyebabkan buffer overflow dan menimpa data kernel mengikuti area memori yang dialokasikan. Untuk mengeksploitasi kerentanan, Anda harus memiliki hak CAP_SYS_ADMIN, mis. kekuasaan administrator. Masalahnya adalah bahwa pengguna yang tidak memiliki hak istimewa dapat memperoleh izin tersebut dalam wadah yang terisolasi jika sistem memiliki dukungan untuk ruang nama pengguna yang diaktifkan. Misalnya, ruang nama pengguna diaktifkan secara default di Ubuntu dan Fedora, tetapi tidak diaktifkan di Debian dan RHEL (kecuali platform isolasi kontainer digunakan).

Masalahnya telah muncul sejak kernel Linux 5.1 dan telah diperbaiki pada pembaruan kemarin 5.16.2, 5.15.16, 5.10.93, 5.4.173. Pembaruan paket yang memperbaiki kerentanan telah dirilis untuk RHEL, Debian, Fedora, dan Ubuntu. Perbaikan belum tersedia di Arch Linux, Gentoo, SUSE dan openSUSE. Sebagai solusi keamanan untuk sistem yang tidak menggunakan isolasi kontainer, Anda dapat mengatur nilai sysctl "user.max_user_namespaces" ke 0: echo "user.max_user_namespaces=0" > /etc/sysctl.d/userns.conf # sysctl -p /etc/sysctl.d/userns.conf

Sumber: opennet.ru

Tambah komentar