Linux Kernel 4.4.x (Ubuntu 16.04) - Use-After-Free Local Root Exploit

 ( trey | 2016. május 6., péntek - 20:41 )

Idézet:
In Linux >=4.4, when the CONFIG_BPF_SYSCALL config option is set and the kernel.unprivileged_bpf_disabled sysctl is not explicitly set to 1 at runtime, unprivileged code can use the bpf() syscall to load eBPF socket filter programs. These conditions are fulfilled in Ubuntu 16.04. [...] This exploit was tested on a Ubuntu 16.04 Desktop system.

[ exploit részletek | PoC ]

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

Ennek köze van ehhez?

commit adbe236b953f4537f9e5ce86d1c7ace613dec38c
Author: Tony Luck <tony.luck>
Date:   Wed Apr 6 10:05:16 2016 +0200

    x86/mce: Avoid using object after free in genpool
    
    commit a3125494cff084b098c80bb36fbe2061ffed9d52 upstream.
    
    When we loop over all queued machine check error records to pass them
    to the registered notifiers we use llist_for_each_entry(). But the loop
    calls gen_pool_free() for the entry in the body of the loop - and then
    the iterator looks at node->next after the free.
    
    Use llist_for_each_entry_safe() instead.


tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Nem véletlenül nem engedélyeztem. Várható volt. Ami érthetetlen, hogy alapból miért van bekapcsolva egy mezei Ubuntuban?
Vannak még egyébként jó opciók, például: CONFIG_KPROBES...

"Jegyezze fel a vádhoz - utasította Metcalf őrnagy a tizedest, aki tudott gyorsírni. - Tiszteletlenül beszélt a feljebbvalójával, amikor nem pofázott közbe."

Ha jol latom a libpcap --> tcpdump,wireshark a varhato hasznaloi ennek a sycall-nak,
talan nem kell ilyesmi egy mezi ubuntuba ?
Hol van ez tenylegesen hasznalva ?

AFAIK KPROBES root only.


Amit nem lehet megirni assemblyben, azt nem lehet megirni.

> AFAIK KPROBES root only.

Úgy van, illetve amikor legutóbb néztem, akkor még csak kernel modulból használhattad őket -> modult is be kell tudnod tölteni.

Grsecurity/PaX alatt több okból sem kihasználható. A szokásos exploit mitigációs faktorokon kívül lásd Grsec BPF hardening, vagy akár a teljes kcmp() syscall tiltását, amely szintén előrelátó módon a patch része.