Kerentanan dalam VFS kernel Linux yang membolehkan anda meningkatkan keistimewaan anda

Kerentanan (CVE-2022-0185) telah dikenal pasti dalam API Konteks Sistem Fail yang disediakan oleh kernel Linux, yang membolehkan pengguna tempatan mendapat keistimewaan root pada sistem. Penyelidik yang mengenal pasti masalah menerbitkan demonstrasi eksploitasi yang membolehkan anda melaksanakan kod sebagai akar pada Ubuntu 20.04 dalam konfigurasi lalai. Kod eksploitasi dirancang untuk disiarkan di GitHub dalam masa seminggu selepas pengedaran mengeluarkan kemas kini yang membetulkan kerentanan.

Kerentanan wujud dalam fungsi legacy_parse_param() dalam VFS dan disebabkan oleh kegagalan untuk menyemak dengan betul saiz maksimum parameter yang disediakan pada sistem fail yang tidak menyokong API Konteks Sistem Fail. Melepasi parameter yang terlalu besar boleh menyebabkan limpahan pembolehubah integer yang digunakan untuk mengira saiz data yang akan ditulis - kod tersebut mempunyai semakan limpahan penimbal "jika (len > PAGE_SIZE - 2 - saiz)", yang tidak berfungsi jika nilai saiz lebih besar daripada 4094. untuk limpahan integer melalui sempadan bawah (aliran bawah integer, apabila menghantar 4096 - 2 - 4095 kepada int tidak ditandatangani, hasilnya ialah 2147483648).

Ralat ini membenarkan, apabila mengakses imej sistem fail yang direka khas, menyebabkan limpahan penimbal dan menimpa data kernel mengikut kawasan memori yang diperuntukkan. Untuk mengeksploitasi kelemahan, anda mesti mempunyai hak CAP_SYS_ADMIN, i.e. kuasa pentadbir. Masalahnya ialah pengguna yang tidak mempunyai hak istimewa boleh mendapatkan kebenaran sedemikian dalam bekas terpencil jika sistem mempunyai sokongan untuk ruang nama pengguna didayakan. Sebagai contoh, ruang nama pengguna didayakan secara lalai pada Ubuntu dan Fedora, tetapi tidak didayakan pada Debian dan RHEL (melainkan platform pengasingan kontena digunakan).

Masalahnya telah muncul sejak kernel Linux 5.1 dan telah dibetulkan dalam kemas kini semalam 5.16.2, 5.15.16, 5.10.93, 5.4.173. Kemas kini pakej yang membetulkan kerentanan telah dikeluarkan untuk RHEL, Debian, Fedora dan Ubuntu. Pembaikan itu belum tersedia pada Arch Linux, Gentoo, SUSE dan openSUSE. Sebagai penyelesaian keselamatan untuk sistem yang tidak menggunakan pengasingan bekas, anda boleh menetapkan nilai sysctl "user.max_user_namespaces" kepada 0: echo "user.max_user_namespaces=0" > /etc/sysctl.d/userns.conf # sysctl -p /etc/ sysctl.d/userns.conf

Sumber: opennet.ru

Tambah komen