[Full-disclosure] FreeBSD <= 6.1 kqueue() NULL pointer dereference

Przemyslaw Frasunek venglin at freebsd.lublin.pl
Sat Aug 22 18:19:40 BST 2009


FreeBSD <= 6.1 suffers from classical check/use race condition on SMP
systems in kevent() syscall, leading to kernel mode NULL pointer
dereference. It can be triggered by spawning two threads:
1st thread looping on open() and close() syscalls, and the 2nd thread
looping on kevent(), trying to add possibly invalid filedescriptor.

The bug was fixed in 6.1-STABLE, just before release of 6.2-RELEASE, but
was not recognized as security vulnerability.

The following code exploits this vulnerability to run root shell:
http://www.frasunek.com/kqueue.txt

-- 
* Fido: 2:480/124 ** WWW: http://www.frasunek.com/ ** NICHDL: PMF9-RIPE *
* JID: venglin at jabber.atman.pl ** PGP ID: 2578FCAD ** HAM-RADIO: SQ8JIV *



Full-Disclosure is hosted and sponsored by Secunia.