Local Root Exploit
Das Gute vorweg - mein Web-Server hat einen Kernel kleiner 2.6.17 und scheint nicht angreifbar:
user@host:~/projekte/kernel$ ./vmsplice
-----------------------------------
Linux vmsplice Local Root Exploit
By qaaz
-----------------------------------
[+] mmap: 0×0 .. 0×1000
[+] page: 0×0
[+] page: 0×20
[+] mmap: 0×4000 .. 0×5000
[+] page: 0×4000
[+] page: 0×4020
[+] mmap: 0×1000 .. 0×2000
[+] page: 0×1000
[+] mmap: 0xb7e5f000 .. 0xb7e91000
[-] vmsplice: Function not implemented
user@host:~/projekte/kernel$ uname -r
2.6.9-xxx
user@host:~/projekte/kernel$
Auf den anderen Hosts sah es aber leider nicht so gut aus. Daniel Drake und Tobi hatten es (die Lücke) ja schon ganz gut beschrieben.
Der Exploit ist, wenn man einen lokalen Login auf einen Linux-Server bekommt, tatsächlich derart leicht zu nutzten, dass man (als Admin) auf jeden Fall reagieren sollte. Ich habe mir für meine (debian-) Server einen kleinen Script gebastelt (der auch erkennt, was schon geklappt hat):
#!/bin/bash
projektdir="/home/ogm315/projekte/kernel/novmsplice"
Kernel=`uname -r`
cd ${projektdir}/
if [ ! -f ${projektdir}/${Kernel}/novmsplice.ko ]
then
if [ ! -f ${projektdir}/novmsplice.c ]
then
wget -N http://www.linux.it/~md/software/novmsplice.tgz
cd ..
tar xzf ${projektdir}/novmsplice.tgz
cd ${projektdir}
fi
if [ ! -d ${projektdir}/${Kernel} ]
then
mkdir -p ${projektdir}/${Kernel}
fi
for f in novmsplice.c Makefile
do
cp -p $f ${projektdir}/${Kernel}
done
if [ `dpkg --list 2>/dev/null | grep linux-headers-${Kernel} | wc -l` -eq 0 ]
then
if [ "$UID" -eq 0 ]
then
apt-get install linux-headers-${Kernel}
fi
if [ `dpkg --list 2>/dev/null | grep linux-headers-${Kernel} | wc -l` -eq 0 ]
then
echo “Kann Paket linux-headers-${Kernel} nicht installieren!”
exit
fi
fi
cd ${projektdir}/${Kernel}
make
echo “Module ${Kernel}/novmsplice.ko erzeugt!”
else
echo “Module ${Kernel}/novmsplice.ko schon vorhanden!”
fi
if [ "$UID" -eq 0 ]
then
cd ${projektdir}/${Kernel}
if [ -f ${projektdir}/${Kernel}/novmsplice.ko ]
then
if [ ! -f /lib/modules/${Kernel}/kernel/lib/novmsplice.ko ]
then
cp -p novmsplice.ko /lib/modules/${Kernel}/kernel/lib
chown 0.0 /lib/modules/${Kernel}/kernel/lib/novmsplice.ko
fi
cd /lib/modules/${Kernel}/kernel/lib
depmod novmsplice.ko
modprobe novmsplice
fi
fi
if [ `lsmod | grep novmsplice | wc -l` -eq 0 ]
then
echo “Modul novmsplice nicht geladen!”
else
echo “Module /lib/modules/${Kernel}/kernel/lib/novmsplice.ko eingebunden?!”
lsmod | grep novmsplice
fi
Nun muss ich nur noch auf alle Rechner und ihn absetzten.
noch ein paar Links als Nachtrag:
- Linux vmsplice Local Root Exploit
- heise.de: Root-Exploit für Linux-Kernel
- prolinux.de: Linux Kernel 2.6 Local Root Exploit




