Kerentanan pada subsistem eBPF yang memungkinkan eksekusi kode di tingkat kernel Linux

Kerentanan (CVE-2021-4204) telah diidentifikasi di subsistem eBPF, yang memungkinkan Anda menjalankan penangan di dalam kernel Linux di mesin virtual khusus dengan JIT, memungkinkan pengguna lokal yang tidak memiliki hak istimewa untuk mencapai peningkatan hak istimewa dan mengeksekusi kode mereka di tingkat kernel Linux. Masalahnya telah muncul sejak kernel Linux 5.8 dan masih belum diperbaiki (termasuk rilis 5.16). Status pembaruan yang dihasilkan untuk memperbaiki masalah distribusi dapat dilacak di halaman berikut: Debian, RHEL, SUSE, Fedora, Ubuntu, Arch. Telah diumumkan bahwa eksploitasi yang berfungsi telah dibuat, yang rencananya akan dipublikasikan pada 18 Januari (pengguna dan pengembang diberi waktu seminggu untuk memperbaiki kerentanan).

Kerentanan ini disebabkan oleh kesalahan verifikasi program eBPF yang dikirimkan untuk dieksekusi. Subsistem eBPF menyediakan fungsi tambahan, yang kebenaran penggunaannya diverifikasi oleh verifikator khusus. Beberapa fungsi memerlukan penerusan nilai PTR_TO_MEM sebagai argumen, dan untuk mencegah kemungkinan buffer overflows, pemverifikasi harus mengetahui ukuran memori yang terkait dengan argumen tersebut. Untuk fungsi bpf_ringbuf_submit dan bpf_ringbuf_discard, data tentang ukuran memori yang ditransfer tidak dilaporkan ke verifikator, yang dapat digunakan untuk menimpa area memori di luar batas buffer saat menjalankan kode eBPF yang dirancang khusus.

Untuk melakukan serangan, pengguna harus dapat memuat program BPF miliknya sendiri, dan banyak distribusi Linux terbaru memblokir kemampuan ini secara default (termasuk akses tanpa hak istimewa ke eBPF sekarang dilarang secara default di kernel itu sendiri, dimulai dengan rilis 5.16). Misalnya, kerentanan dapat dieksploitasi dalam konfigurasi default di Ubuntu 20.04 LTS, tetapi di lingkungan Ubuntu 22.04-dev, Debian 11, openSUSE 15.3, RHEL 8.5, SUSE 15-SP4 dan Fedora 33 hanya muncul jika administrator telah menetapkan parameter kernel.unprivileged_bpf_disabled ke 0. Sebagai solusi untuk memblokir kerentanan, Anda dapat mencegah eksekusi program BPF oleh pengguna yang tidak memiliki hak istimewa dengan perintah β€œsysctl -w kernel.unprivileged_bpf_disabled=1”.

Sumber: opennet.ru

Tambah komentar