Masalah keamanan pada patch yang diusulkan oleh karyawan Huawei untuk melindungi kernel Linux

Pengembang proyek Grsecurity menggambar memperhatikan adanya kerentanan sepele yang dapat dieksploitasi dalam set patch HKSP (Perlindungan Diri Kernel Huawei), beberapa hari yang lalu diajukan untuk meningkatkan keamanan kernel Linux. Situasinya mengingatkan kasus dengan Samsung, di mana upaya untuk meningkatkan keamanan sistem menyebabkan munculnya kerentanan baru dan mempermudah penyusupan perangkat.

Patch HKSP diterbitkan oleh karyawan Huawei, menyertakan penyebutan Huawei di profil GitHub, dan menggunakan kata Huawei dalam nama proyek (HKSP - Huawei Kernel Self Protection). Pada saat yang sama, perwakilan Huawei membantah keterkaitan proyek HKSP dengan perusahaan dan menyatakan bahwa kode tersebut dikembangkan atas inisiatif pribadi karyawan, bukan merupakan proyek resmi Huawei dan tidak digunakan dalam produk perusahaan. Pada halaman GitHub HKSP berlaku surut setelah penemuan kerentanan juga telah ditambahkan perhatikan bahwa proyek ini sedang dikembangkan di waktu luang saya untuk tujuan penelitian.

HKSP mencakup perubahan seperti pengacakan offset dalam struktur kredibilitas, perlindungan terhadap serangan pada namespace pengidentifikasi pengguna (pid namespace), pemisahan tumpukan proses dari area mmap, deteksi panggilan ganda ke fungsi kfree, pemblokiran kebocoran melalui pseudo -FS /proc (/proc/ {modules, key, key-users}, /proc/sys/kernel/* dan /proc/sys/vm/mmap_min_addr, /proc/kallsyms), peningkatan pengacakan alamat ruang pengguna, Ptrace tambahan perlindungan, perlindungan smap dan smep yang ditingkatkan, kemampuan untuk melarang pengiriman data melalui soket mentah, memblokir alamat yang salah di soket UDP dan memeriksa integritas proses yang berjalan. Ini juga mencakup modul kernel Ksguard, yang ditujukan untuk mendeteksi upaya untuk memperkenalkan rootkit biasa.

атчи ditelepon Greg Kroah-Hartman, yang bertanggung jawab untuk menjaga kestabilan cabang kernel Linux, tertarik dan meminta penulis untuk memecah patch monolitik menjadi beberapa bagian untuk menyederhanakan peninjauan dan promosi ke kernel utama. Kees Cook, kepala proyek pada promosi teknologi perlindungan aktif di kernel Linux juga secara positif menanggapi tambalan dan, di antara masalahnya, menarik perhatian pada pengikatan ke arsitektur x86 dan sifat pemberitahuan dari banyak mode, yang hanya mencatat informasi tentang masalah, tetapi tidak mencoba memblokirnya.

Sebuah studi tentang patch yang dilakukan oleh pengembang Grsecurity mengungkapkan banyak kesalahan dan kelemahan dalam kode, dan juga menunjukkan tidak adanya model ancaman yang memungkinkan mereka menilai kemampuan proyek secara memadai. Untuk menunjukkan dengan jelas bahwa kode tersebut ditulis tanpa menggunakan metode pemrograman yang aman, diberikan contoh kerentanan sepele pada penangan.
file /proc/ksguard/state, yang dibuat dengan hak 0777, menyiratkan bahwa setiap orang memiliki akses tulis. Fungsi ksg_state_write, digunakan untuk mengurai perintah yang ditulis ke /proc/ksguard/state, membuat buffer tmp[32] tempat data ditulis berdasarkan ukuran operan yang diteruskan, tanpa memperhitungkan ukuran buffer target dan tanpa memeriksa parameter dengan ukuran string. Itu. Untuk menimpa bagian tumpukan kernel, penyerang hanya perlu menulis baris yang diformat khusus ke /proc/ksguard/state.

ssize_t statis ksg_state_write(file struct *file, const char __pengguna *buf,
ukuran_t len, loff_t *offset)
{
nilai u64;
karakter tmp[32];
ukuran_t n = 0;

jika (copy_from_user(tmp, buf, len))
kembali -1;

nilai = simple_strtoul(tmp, '\0', 10);
...

Eksploitasi prototipe:

karakter buf[4096] = {};
int fd = buka(“/proc/ksguard/state”, O_WRONLY);
jika (fd >= 0) {
tulis(fd, buf, ukuran(buf));
tutup(fd);
}

Sumber: opennet.ru

Tambah komentar