Portál AbcLinuxu, 14. května 2025 17:19

Bezp. chyba ve všech jádrech 2.4 až 2.6

Kdekdo odkazuje na blog CR0, kde pánové Julien Tinnes a Tavis Ormandy představili objevenou bezpečnostní chybu, která se týká všech linuxových jader od května 2001 až do nejnovějších (tj. zahrnuje řady 2.4 i 2.6). "Problém je v tom, jak Linux nakládá s nedostupnými operacemi u některých protokolů. [...] Protože to vede k tomu, že jádro spustí kód na NULL, je ta zranitelnost velmi snadno zneužitelná: Útočník může dát kód do první stránky, která bude spuštěna s právy jádra." Linus zařadil 13.8. patch, který chybu opravuje.

14.8.2009 08:14 | Robert Krátký | Bezpečnostní upozornění


Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (2) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

Max avatar 14.8.2009 09:08 Max | skóre: 72 | blog: Max_Devaine
Rozbalit Rozbalit vše Re: Bezp. chyba ve všech jádrech 2.4 až 2.6
Odpovědět | Sbalit | Link | Blokovat | Admin
I'm safe, I run Windows

Fakt hustej komentář pod tím zápiskem :D
Zdar Max
Měl jsem sen ... :(
14.8.2009 09:27 rastos | skóre: 63 | blog: rastos
Rozbalit Rozbalit vše Re: Bezp. chyba ve všech jádrech 2.4 až 2.6
Odpovědět | Sbalit | Link | Blokovat | Admin
> Útočník může dát kód do první stránky
Ako?
oroborus avatar 14.8.2009 09:31 oroborus | skóre: 20 | blog: Bulanci
Rozbalit Rozbalit vše Re: Bezp. chyba ve všech jádrech 2.4 až 2.6

pomocou mapovania do virtualneho adresoveho priestoru na zvolanu virtualnu adresu.

 

14.8.2009 10:02 majvan | skóre: 5 | blog: Fandime linuxu | Trenčín
Rozbalit Rozbalit vše Re: Bezp. chyba ve všech jádrech 2.4 až 2.6

Cize hovorime o ktorej fyzickej adrese? O adresach (dekadicky) 0 - 4095? Ako donutim kernel, aby namapoval moje data zrovna na tuto adresu?

oroborus avatar 14.8.2009 10:16 oroborus | skóre: 20 | blog: Bulanci
Rozbalit Rozbalit vše Re: Bezp. chyba ve všech jádrech 2.4 až 2.6

Ja mam pocit, ze hovorime o virtualnej adrese.

( v pripade virtualnej adresy mozme "donutit kernel" pouzitim systemoveho volania mmap/mmap2 )

14.8.2009 10:21 majvan | skóre: 5 | blog: Fandime linuxu | Trenčín
Rozbalit Rozbalit vše Re: Bezp. chyba ve všech jádrech 2.4 až 2.6

No, ak hovorime o virtualnej adrese 0 - 4192, tak potom ide pracu s nulovou strankou (ekvivalent prace s odkazom NULL) a to by mal system osetrit, nie? Da sa nejako zapisat data na tieto adresy?

Jardík avatar 14.8.2009 12:22 Jardík | skóre: 40 | blog: jarda_bloguje
Rozbalit Rozbalit vše Re: Bezp. chyba ve všech jádrech 2.4 až 2.6
*((int*)0) = 5;
Věřím v jednoho Boha.
oroborus avatar 14.8.2009 13:07 oroborus | skóre: 20 | blog: Bulanci
Rozbalit Rozbalit vše Re: Bezp. chyba ve všech jádrech 2.4 až 2.6
Priklad toho ako sa moze nieco namapovat na adresu NULL a ako sa to moze spustit:
#include <unistd.h>
#include <sys/mman.h>
#include <string.h>

char *code =
"\xB8\x4\x0\x0\x0"	// mov eax, 0x4
"\xBB\x1\x0\x0\x0"	// mov ebx, 0x1
"\xB9\x22\x0\x0\x0"	// mov ecx, 0x22
"\xBA\xC\x0\x0\x0"	// mov edx, 0xc
"\xCD\x80"		// int 0x80
"\xB8\x1\x0\x0\x0"	// mov eax, 0x1
"\xBB\x0\x0\x0\x0"	// mov ebx, 0x0
"\xCD\x80"		// int 0x80
"Hello world\n\x0";

int main(int argc, char **argv)
{
	void *ptr;
	void (*f)();

	ptr = mmap(NULL, 4096, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, 0, 0);

	if( ptr != NULL )
	{
		return -1;
	}

	memcpy(NULL, code, 47);

	f = NULL;
	f();

	return 0;
}
Jardík avatar 14.8.2009 14:37 Jardík | skóre: 40 | blog: jarda_bloguje
Rozbalit Rozbalit vše Re: Bezp. chyba ve všech jádrech 2.4 až 2.6
Aneb radši používejme pomalou instrukci int, když tu máme syscall a sysenter.
Věřím v jednoho Boha.
17.8.2009 11:52 Kozzi
Rozbalit Rozbalit vše Re: Bezp. chyba ve všech jádrech 2.4 až 2.6
jo jenze ty nejsou dostupne vsude :D
17.8.2009 09:55 Libor Chocholaty | skóre: 12
Rozbalit Rozbalit vše Re: Bezp. chyba ve všech jádrech 2.4 až 2.6

A co procesory, ktere maji NX flag, aby se nespoustel kod z datovych stranek?

Coz by melo osetrit tento pripad.

Nebo ne?

17.8.2009 10:54 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: Bezp. chyba ve všech jádrech 2.4 až 2.6
Bohužel NX stránky jsou vývojáři aplikací úspěšně ignorovány. Příkladem může být Firefox, kde po zavedení just-in-time kompilace javascriptu, jej začala „bezpečnostně vytvrzená“ jádra zabíjet. Ostatně se to týká všech moderních „interpreterů“. Otázka je, co s tím?
14.8.2009 13:53 fissie | skóre: 12 | blog: One little blog
Rozbalit Rozbalit vše Re: Bezp. chyba ve všech jádrech 2.4 až 2.6
Vec se ma tak, ze nulova stranka je uplne stejna jako kazda jina. Jen za normalnich okolnosti tam nic neni namapovano, tudiz pristup na tu adresu faultne (-> segfault || oops). Pokud tam neco vlastniho namapujes a kernel ti to dovoli (coz nemusi jit vzdycky), pak tam je proste uplne normalni stranka a uplne normalni adresa, na kterou se da pristoupit.
14.8.2009 22:48 majvan | skóre: 5 | blog: Fandime linuxu | Trenčín
Rozbalit Rozbalit vše Re: Bezp. chyba ve všech jádrech 2.4 až 2.6

Heh a ja som bol vzdy v tom, ze zrovna NULL stranka je osetrovana separatne...

14.8.2009 09:34 petris_ | skóre: 12
Rozbalit Rozbalit vše Re: Bezp. chyba ve všech jádrech 2.4 až 2.6
IMO si musite nejdriv v jadre nastavit, ze pouzitelna pamet zacina od 0. Defaultne se na x86 pouziva az 2. stranka (4kB).
14.8.2009 11:17 hanzelko | skóre: 5
Rozbalit Rozbalit vše Re: Bezp. chyba ve všech jádrech 2.4 až 2.6

A ako sa to nastavi?

Lebo mne to skonci s UNABLE TO MAP ZERO PAGE

14.8.2009 11:44 John Doe
Rozbalit Rozbalit vše Re: Bezp. chyba ve všech jádrech 2.4 až 2.6
echo 0 > /proc/sys/vm/mmap_min_addr

(platí pro jádra 2.6.23 a vyšší)

14.8.2009 12:00 hanzelko | skóre: 5
Rozbalit Rozbalit vše Re: Bezp. chyba ve všech jádrech 2.4 až 2.6

Oki, Dik.

To bolo ono. To echo som pustil ako root. A potom user : "test" gettol root ako nic. A este to prahralo aj to video v tom exploite.

14.8.2009 16:16 Ladislav Hagara | skóre: 105 | blog: Ride the Raven
Rozbalit Rozbalit vše Re: Bezp. chyba ve všech jádrech 2.4 až 2.6
Odpovědět | Sbalit | Link | Blokovat | Admin

Softpedia přínáší i screenshot.

Btw, které z distribucí mají hodnotu vm.mmap_min_addr nastavenou na 0?

$ sysctl vm.mmap_min_addr
vm.mmap_min_addr = 4096

martin() avatar 14.8.2009 17:19 martin() | skóre: 6 | Prievidza / Bratislava
Rozbalit Rozbalit vše Re: Bezp. chyba ve všech jádrech 2.4 až 2.6
Napriklad opensuse 11.1 :-(
Hovor múdro, nepriateľ načúva ! -- S. J. Lec --
15.8.2009 00:03 Béďja
Rozbalit Rozbalit vše Re: Bezp. chyba ve všech jádrech 2.4 až 2.6

Mandriva 2008.1 tam má taky nulu.

14.8.2009 18:05 ..... Izak ..... | skóre: 14
Rozbalit Rozbalit vše Re: Bezp. chyba ve všech jádrech 2.4 až 2.6
Takze kdyz mam: vm.mmap_min_addr = 65536 tak jsem v pohode ?
14.8.2009 18:49 pc2005 | skóre: 38 | blog: GardenOfEdenConfiguration | liberec
Rozbalit Rozbalit vše Re: Bezp. chyba ve všech jádrech 2.4 až 2.6
Doufám, že to jádro nebere jako unsigned int :-D. Tuhle hodnotu mám taky (2.6.29 kompilované). BTW co suse 10.0?
15.8.2009 08:05 eoj
Rozbalit Rozbalit vše Re: Bezp. chyba ve všech jádrech 2.4 až 2.6
Od dob, kdy byl uint 16b, už uplynula spousta vody.
14.8.2009 18:06 vencas | skóre: 32
Rozbalit Rozbalit vše Re: Bezp. chyba ve všech jádrech 2.4 až 2.6
Etch taky :-( Ale Ubuntu 8.04 (hardy) ne, aspon na amd64
Jendа avatar 14.8.2009 22:06 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Bezp. chyba ve všech jádrech 2.4 až 2.6
Distribuční kernel (2.6.26) Lennyho :-(
15.8.2009 10:37 DNA
Rozbalit Rozbalit vše Re: Bezp. chyba ve všech jádrech 2.4 až 2.6

v sidovi

vm.mmap_min_addr = 4096

Jakub Lucký avatar 16.8.2009 11:51 Jakub Lucký | skóre: 40 | Praha
Rozbalit Rozbalit vše Re: Bezp. chyba ve všech jádrech 2.4 až 2.6
Já měl na Sidovi nulu... Ale už je to napraveno...
If you understand, things are just as they are; if you do not understand, things are just as they are.
David Watzke avatar 15.8.2009 21:54 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Bezp. chyba ve všech jádrech 2.4 až 2.6
Na Gentoo mám 4096...
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
16.8.2009 01:57 Ladislav Hagara | skóre: 105 | blog: Ride the Raven
Rozbalit Rozbalit vše Re: Bezp. chyba ve všech jádrech 2.4 až 2.6

... na YouTube i s videem

15.8.2009 16:56 barack obama bin ladin
Rozbalit Rozbalit vše Re: Bezp. chyba ve všech jádrech 2.4 až 2.6
Odpovědět | Sbalit | Link | Blokovat | Admin

vm.mmap_min_addr = 0

V mandrive bola sice 0 tak som dal 4096.Ked pustim wunderbar_emporium.sh tak mi to je prt platne.

Aj tak ziskam roota :-(

Takze jedine patch alebo novy kernel :-(

Salamek avatar 15.8.2009 21:37 Salamek | skóre: 22 | blog: salamovo
Rozbalit Rozbalit vše Re: Bezp. chyba ve všech jádrech 2.4 až 2.6
Odpovědět | Sbalit | Link | Blokovat | Admin
Archlinux
vm.mmap_min_addr = 4096
Skutečně nemám v plánu zničit Microsoft. Bude to jen zcela neúmyslný vedlejší efekt.
Limoto avatar 16.8.2009 21:49 Limoto | skóre: 32 | blog: Limotův blog
Rozbalit Rozbalit vše Re: Bezp. chyba ve všech jádrech 2.4 až 2.6

+1... Arch je prostě bezpečnější než nějakej Debilan... :-D

17.8.2009 10:46 Dundee5 | skóre: 17 | blog: Dundee5 | Praha
Rozbalit Rozbalit vše Re: Bezp. chyba ve všech jádrech 2.4 až 2.6
Odpovědět | Sbalit | Link | Blokovat | Admin
Moc nechápu jak je možné, že na adresu 0 lze zapisovat.

funkce void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset);

totiž podle manuálu při zadání NULL jako adr má použít "nějakou" adresu.

If addr is NULL, then the kernel chooses the address at which to create the mapping; this is the most portable method of creating a new mapping.

Takže nevím, proč

mem = mmap(NULL, 0x1000, PROT_READ | PROT_WRITE | PROT_EXEC, MAP_FIXED | MAP_ANONYMOUS | MAP_PRIVATE, 0, 0);

zapisuje přímo do 0.
Kdo se vzdá svobody, aby získal jistotu, ztratí nakonec obojí. --Benjamin Franklin
17.8.2009 10:56 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: Bezp. chyba ve všech jádrech 2.4 až 2.6
Protože MAP_FIXED.
17.8.2009 10:58 Dundee5 | skóre: 17 | blog: Dundee5 | Praha
Rozbalit Rozbalit vše Re: Bezp. chyba ve všech jádrech 2.4 až 2.6
Odpovědět | Sbalit | Link | Blokovat | Admin
Aha, díky za osvětlení.
Kdo se vzdá svobody, aby získal jistotu, ztratí nakonec obojí. --Benjamin Franklin

Založit nové vláknoNahoru


ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.