image

Hacker vindt ernstig lek in FreeBSD

dinsdag 1 december 2009, 13:33 door Redactie, 19 reacties

Beveiligingsonderzoeker King Cope heeft een "ongelooflijk eenvoudig" root-lek in recente FreeBSD versies ontdekt, waardoor een lokale gebruiker zijn of haar rechten kan verhogen. Het probleem bevindt zich in de Run-Time Link-Editor (rtld). Normaal staat rtld niet toe om bepaalde gevaarlijke variabelen te laden, maar via een eenvoudige techniek is dit te omzeilen. Zowel de net verschenen FreeBSD 8.0, als de oudere 7.1 en 7.2 versies zijn kwetsbaar. FreeBSD 4.9 en 6.3 lopen volgens King Cope geen risico. "Ik heb FreeBSD al lang op lokale root bugs geaudit. Nu betaalt het zich eindelijk uit", aldus de onderzoeker.

FreeBSD Security Officer Colin Percival laat weten dat het ontwikkelteam normaal niet publiekelijk op beveiligingsproblemen reageert totdat er een advisory beschikbaar is. Aangezien in dit geval de exploitcode al online staat, besloot Percival tot het uitbrengen van een onofficiële patch. "Vanwege de korte tijdsduur is het mogelijk dat dit nog niet de uiteindelijke versie zal zijn als de advisory verschijnt." Het is zelfs mogelijk, hoewel onwaarschijnlijk, dat de patch het probleem niet verhelpt of nieuwe problemen introduceert. "In het kort, gebruik is op eigen risico."

Morgen moet de officiële advisory verschijnen. De kwetsbaarheid is met name een probleem voor servers waar gebruikers shell-toegang hebben.

Reacties (19)
01-12-2009, 13:44 door SirDice
De kwetsbaarheid is met name een probleem voor servers waar gebruikers shell-toegang hebben.
Vergeet ook webservers niet die een web applicatie draaien waar command injection op mogelijk is.
01-12-2009, 14:44 door Anoniem
Als je csupt, kun je dit snel patchen zonder te rebooten:

(als root):
cd /usr/src/libexec/rtld-elf
make clean && make && make install

klaar.
01-12-2009, 15:03 door Anoniem
Dit probleem zou zich ook op Linux computers kunnen voordoen,omdat FreeBSD ook een unix variant is.
Dus wees ook alert op een Linux server.
01-12-2009, 15:09 door Anoniem
Door Anoniem: Als je csupt, kun je dit snel patchen zonder te rebooten:

(als root):
cd /usr/src/libexec/rtld-elf
make clean && make && make install

klaar.

Thx.
01-12-2009, 15:10 door meinonA
Door Anoniem: Dit probleem zou zich ook op Linux computers kunnen voordoen,omdat FreeBSD ook een unix variant is.
Dus wees ook alert op een Linux server.

Zozo, wat een wijsheid... Pas dan ook maar op voor je router, OS-X, Win NT4, etc... Overal is wel wat Unix in terug te vinden...
01-12-2009, 15:38 door SirDice
Door meinonA:
Door Anoniem: Dit probleem zou zich ook op Linux computers kunnen voordoen,omdat FreeBSD ook een unix variant is.
Dus wees ook alert op een Linux server.

Zozo, wat een wijsheid... Pas dan ook maar op voor je router, OS-X, Win NT4, etc... Overal is wel wat Unix in terug te vinden...
Waar anoniem@15:03 op doelde is dat ook Linux gebruik maakt van LD_PRELOAD en dat ook daar wel eens steekjes los laten.
01-12-2009, 15:59 door Anoniem
Hier is de rtld.patch van de BSD list (tussen de #################):

Eerst even je cvsup uitvoeren en vervolgens onderstaand bestand aanmaken in /usr/src/libexec/rtld-elf

#################
*** rtld.c.orig Tue Dec 1 16:55:13 2009
--- rtld.c Tue Dec 1 16:55:55 2009
***************
*** 357,374 ****
* is called. If any child process calls setuid(2) we do not want any
* future processes to honor the potentially un-safe variables.
*/
if (!trust) {
unsetenv(LD_ "PRELOAD");
unsetenv(LD_ "LIBMAP");
unsetenv(LD_ "LIBRARY_PATH");
unsetenv(LD_ "LIBMAP_DISABLE");
unsetenv(LD_ "DEBUG");
}
- ld_debug = getenv(LD_ "DEBUG");
- libmap_disable = getenv(LD_ "LIBMAP_DISABLE") != NULL;
- libmap_override = getenv(LD_ "LIBMAP");
- ld_library_path = getenv(LD_ "LIBRARY_PATH");
- ld_preload = getenv(LD_ "PRELOAD");
dangerous_ld_env = libmap_disable || (libmap_override != NULL) ||
(ld_library_path != NULL) || (ld_preload != NULL);
ld_tracing = getenv(LD_ "TRACE_LOADED_OBJECTS");
--- 357,379 ----
* is called. If any child process calls setuid(2) we do not want any
* future processes to honor the potentially un-safe variables.
*/
+ ld_preload = getenv(LD_ "PRELOAD");
+ libmap_override = getenv(LD_ "LIBMAP");
+ ld_library_path = getenv(LD_ "LIBRARY_PATH");
+ libmap_disable = getenv(LD_ "LIBMAP_DISABLE") != NULL;
+ ld_debug = getenv(LD_ "DEBUG");
if (!trust) {
+ ld_preload = NULL;
+ libmap_override = NULL;
+ ld_library_path = NULL;
+ libmap_disable = 0;
+ ld_debug = NULL;
unsetenv(LD_ "PRELOAD");
unsetenv(LD_ "LIBMAP");
unsetenv(LD_ "LIBRARY_PATH");
unsetenv(LD_ "LIBMAP_DISABLE");
unsetenv(LD_ "DEBUG");
}
dangerous_ld_env = libmap_disable || (libmap_override != NULL) ||
(ld_library_path != NULL) || (ld_preload != NULL);
ld_tracing = getenv(LD_ "TRACE_LOADED_OBJECTS");
#################


Even patch < rtld.patch en vervolgens make clean && make && make install
01-12-2009, 16:24 door prikkebeen
Wat een wondere wereld hebben we toch. Het patchen van OSS gaat wel erg snel. Hulde! Het neemt minder tijd in beslag dan dat ze bij MS een lek erkennen, laat staan onderzoeken. De patch moet dan nog komen, nadat de nodige schade weer is aangericht en Symantec en consorten weer behoorlijk wat centjes verdiend hebben. Oh ja, zou ik bijna de MS support dienst vergeten.

Het voordeel van een monopolie is dat je niet veel last hebt van een imago probleem blijkbaar.
01-12-2009, 16:30 door SirDice
Door Anoniem: Hier is de rtld.patch van de BSD list (tussen de #################):
Wellicht handig als je er even bij vermeld voor welke versie ;)
01-12-2009, 16:33 door Anoniem
@SirDic: Getest so far op een 7.1 en een 7.2 .
01-12-2009, 16:40 door Anoniem
Die patch is inmiddels al gecommit (iig voor RELENG_8, zal voor RELEASE ook wel zo zijn denk ik)
01-12-2009, 17:39 door [Account Verwijderd]
[Verwijderd]
01-12-2009, 17:55 door SirDice
Door Duckman: Zit deze lek ook in Linux? hoezo BSD en Linux zijn los van elkaar geschreven ze zijn op unix gebaseerd. Zou eerder zeggen dat Mac OS X gevaar loopt deze draai namelijk op de zelfde (Free)BSD kernel
Net helemaal correct. OS-X is een Mach kernel waar wat delen van de FreeBSD (5) kernel aangeplakt zijn. Tevens is een deel van het basis OS (Darwin) gebaseerd op FreeBSD-5. De fout zit niet in de kernel.

K P dat er een lek in freeBSD zit maar morgen is de patch er. En dat is netjes.
Vind ik ook. FreeBSD heeft nog altijd m'n voorkeur. Bovendien heb ik, in tegenstelling tot een hoop Linux en OS-X gebruikers, niet de illusie dat het onschendbaar is.
01-12-2009, 21:26 door [Account Verwijderd]
[Verwijderd]
01-12-2009, 23:10 door Anoniem
Door prikkebeen: Wat een wondere wereld hebben we toch. Het patchen van OSS gaat wel erg snel. Hulde! Het neemt minder tijd in beslag dan dat ze bij MS een lek erkennen, laat staan onderzoeken. De patch moet dan nog komen, nadat de nodige schade weer is aangericht en Symantec en consorten weer behoorlijk wat centjes verdiend hebben. Oh ja, zou ik bijna de MS support dienst vergeten.

Het voordeel van een monopolie is dat je niet veel last hebt van een imago probleem blijkbaar.
Wat een gelul weer. Microsoft heeft helemaal geen monopolie. Jij weet waarschijnlijk totaal niet wat het woord betekent, maar het bekt zo lekker. En om bij een lek in een niet-MS OS meteen weer MS er met de haren bij te slepen, begint nou toch wel echt belachelijk te worden.
02-12-2009, 08:02 door Anoniem
Door rookie: Dit lek is heel erg jammer, maar aan de andere kant maakt het de FreeBSD ontwikkelaars wel weer scherp.
Ik hoop dat de ontwikkelaar die deze fout heeft gemaakt deze gebeurtenis goed kan verwerken, want dit is zo'n ingrijpende gebeurtenis voor een ontwikkelaar van dat niveau, dat dit een trauma kan opleveren.

gratis slachtofferhulp ?
02-12-2009, 10:24 door [Account Verwijderd]
[Verwijderd]
02-12-2009, 11:10 door Anoniem
Moet je wel eerst wel local access hebben als gebruiker. En misschien dat het met jails niet eens mogenlijk is.
03-12-2009, 11:06 door SirDice
Door Anoniem: Moet je wel eerst wel local access hebben als gebruiker. En misschien dat het met jails niet eens mogenlijk is.
Je krijgt root in een jail.


Officiële advisory:

http://security.freebsd.org/advisories/FreeBSD-SA-09:16.rtld.asc

SSL is ook gelijk maar gefixed:
http://security.freebsd.org/advisories/FreeBSD-SA-09:15.ssl.asc

En een probleempje met freebsd-update:
http://security.freebsd.org/advisories/FreeBSD-SA-09:17.freebsd-update.asc
Reageren

Deze posting is gelocked. Reageren is niet meer mogelijk.