Mac OS X 10.5/10.6 libc/strtod(3) buffer overflow

Címkék

A SecurityReason egy figyelmeztetőt publikált a minap, amelyben arra hívja fel a figyelmet, hogy a Apple Mac OS X operációs rendszerének 10.5-ös / 10.6-os verziója (korábbi verziók is érintettek lehetnek) puffer túlcsordulásos sebezhetőségben szenved. A bejelentés szerint a fő probléma a dtoa implementációban van. A probléma nem csak a libc/gdtoa-t érinti, a strtod(3) függvény is érintett. A sebezhetőség besorolása kritikus. A sebezhetőségre elérhető proof-of-concept exploit. A bejelentés távoli és helyi exploit-ot is említ. A bejelentés szerint a sebezhetőség a Mac OS X-en kívül számos gyártó termékét - FreeBSD, NetBSD, OpenBSD, különböző Mozilla termékek, Google Chrome, KDE, Opera, MatLab, Sony PS3 - is érintette / érinti. Ezek közül van amelyik már javította a problémát.

Hozzászólások

Hm, ez most mit jelent? A libc-ben van hiba kb. minden Unix-like rendszeren? Akkor miért külön-külön kell javítani az egyes projecteknek? Vagy ugyanazt a hibát sikerült ennyi különböző projectnek elkövetnie?


aeryn:~ pontscho$ uname -a
Darwin aeryn.lan 10.2.0 Darwin Kernel Version 10.2.0: Tue Nov  3 10:37:10 PST 2009; root:xnu-1486.2.11~1/RELEASE_I386 i386
aeryn:~ pontscho$ ./a
grams = 0.111111
aeryn:~ pontscho$ 

aeryn:~ pontscho$ cat a2.c 
#include <stdio.h>
#include <stdlib.h>

int
main()
{
char s[]="111.111111...11";

float a=atof(s);
printf("%f\n",a);
}
aeryn:~ pontscho$ gcc -o a2 -arch i386 a2.c
aeryn:~ pontscho$ ./a2
111.111115
aeryn:~ pontscho$

10.6.2.

---
pontscho / fresh!mindworkz


[hron@sunshine ~] $ uname -a
Darwin sunshine.local 9.4.0 Darwin Kernel Version 9.4.0: Fri Aug  1 21:34:49 EST 2008; ToH & StageXNU:xnu-1228.5.20/BUILD/obj/RELEASE_I386 i386
[hron@sunshine ~] $ ./strtod-poc 
grams = 0.111111
[[hron@sunshine ~] $ ./atof-poc 
111.111115
[hron@sunshine ~] $ 

OS X 10.5.4 (osx86 project powered)

Az atof-es kodon csak annyit modositottam, hogy tettem egy \n -t a printf-be, de anelkul se halt meg.
--


()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.