trey@HUP:
Colin Percival, a FreeBSD biztonsági tisztviselője beköszönt karácsony előtt és mindjárt hozott magával 5 biztonsági figyelmeztetőt. Percival elismeri, hogy az időzítés őszintén szólva szívás. A FreeBSD Security Team igyekszik a biztonsági figyelmeztetőket szerdán kiadni, mert akkor a legtöbb rendszeradminisztrátor feltehetően dolgozik, illetve igyekeznek ünnepek - pl. a küszöbön levő karácsony - előtt figyelmeztetőt - érthető okoból - nem kiadni. Most mégis kénytelenek voltak, pedig itt a karácsony hétvégéje és a világ egyes részein már szombat van.
Az ok, amiért eltértek a megszokottól az, hogy az egyik figyelmeztetőben (FreeBSD-SA-11:08.telnetd) egy olyan remote root problémáról van szó, amelyet jelenleg is aktívan kihasználnak. A jó hír az, hogy telnet-et kevesen használnak már, az emberek többsége rég áttért SSH-ra. Ettől függetlenül a csapat úgy ítélte meg, hogy ennek a problémának a javítása nem várhat.
Colin Percival levele itt.
A probléma a NetBSD-t is érinti (thx Hunger), de a sebezhető kód többek között a GNU Darwin és az Apple oldalain is szerepel. A kiadott közlemény elég egyértelműen meghatározza a hiba okát: a telnet kiszolgáló titkosított kapcsolat esetén nem ellenőrzi a kapott titkosító kulcs méretét, melyet egy fix hosszúságú pufferbe másol, és itt vége a játéknak.
Friss: itt az exploit
bboldii11-2011 2011.12.23. 23:14:56
loolek · http://loolek.tumblr.com 2011.12.26. 19:29:00
As Colin Percival pointed out in the comments, this bug has been in telnetd for over 20 years!
It’s a bit surprising that this code has been around for 20 years without anyone noticing. You’d think that a simple buffer overflow like this could easily be spotted with automated tools. The sad thing too is that Mac OS X is also remotely exploitable according to their posted source.
www.opensource.apple.com/source/Heimdal/Heimdal-172.18/appl/telnet/libtelnet/encrypt.c
Hunger 2011.12.26. 19:57:17
naívság rulz
loolek · http://loolek.tumblr.com 2011.12.26. 23:41:24
After more research, I can now say at least 20 years – the bug was in 4.4BSD-Alpha. The earliest copyright notice on the file is an MIT Copyright 1990, so I’m guessing that’s where the bug came from originally. ~Colin
security.freebsd.org/patches/SA-11:08/telnetd.patch
Vajon hány helyre vették át ezt a kódot 20 év alatt...
Hasonló eset volt amikor az ennél még régibb Sun XDR kódjában találtak hibát, amit például (az RPC alrendszeréhez) a cégnél használt adatbázis kezelő is, egy az egyben átvett. Nekik lövésük se volt az dologról, én javítottam ki :-)
/*
* xdr.c, Generic XDR routines implementation.
*
* Copyright (C) 1986, Sun Microsystems, Inc.
//
// LOOLEK'S PATCH
//
// if (c > maxsize && xdrs->x_op != XDR_FREE)
if ((c > maxsize || UINT_MAX/elsize < c) && (xdrs->x_op != XDR_FREE))
return FALSE;
Hunger 2011.12.27. 00:31:55
Egyébként most is csak azért került napvilágra, mert Kc (is) megtalálta a hibát és írt rá exploitot, néhány kiddie meg felnyomta a gépét, lenyúlták az exploitot és ész nélkül nekiálltak törögetni vele minden gépet, amit a neten találtak telnettel.
Kc ráadásul - kiddie-friendly módon - még scannert is írt hozzá, hogy megkönnyítse a dolgukat...
loolek · http://loolek.tumblr.com 2011.12.27. 09:39:51
Igen, igen, arról nem szólt a fáma, hogy honnan jött az infó :)
Érdekes, rákerestem a 2002 óta nyilvánosan hibás XDR sorra és még mindig több helyen használják...
http://www.google.com/search?q="if+(c+>+maxsize+%26%26+xdrs->x_op+!%3D+XDR_FREE)"