Egy biztonsági szakember új sebezhetőséget fedezett fel a TorrentTrader nevű bittorrent tracker kódjában. A biztonsági részt kihasználva a támadók hozzáférhetnek az oldal-on tárolt IP-khez. A készítő már kiadott egy javítást, ami orvosolja a hibát.
A biztonságtechnikával foglalkozó Charles Vaughn egyébként a texasi egyetemen szerezte szoftvermérnöki diplomáját. Hétköznapjaiban Unixos szerver alkalmazásokkal foglalkozik, de nemrégiben úgy döntött, hogy átnézi tüzetesebben is a gyakran használt torrent tracker-t is.
Charles elmondta, hogy szenvedélye a biztonságtechnika, ezért döntött úgy, hogy kezei közé veszi a tracker forráskódját és átnézi. Azért választotta pont a TorrentTradert, mert olyan weboldal alapja, amit ő is nap mint nap használ, és emellett még ingyenes is és elérhető a teljes forráskód.
Az erőfeszítései nem voltak feleslegesek, állítása szerint komoly hibát talált, amit kihasználva lehetséges, hogy idegenek kívülről hozzáférjenek az adatbázis egyes részeihez.
A PHP-ban íródott TorrentTrander megköveteli a felhasználótól, hogy be legyen lépve, amikor letölti a torrent fájlt. Ekkor a felhasználóhoz tartozó IP-t eltárolja, és csak erről az IP-ről engedi, hogy a felhasználó csatlakozzon a trackerhez. Charles egy olyan SQL injectiont talált a scrape.php-ben, ami lehetővé teszi a támadónak, hogy a torrent oldal adatbázisából kilistázza az összes IP-t.
Közel egy napba telt, amíg teljesen felfedte a scrape.php hiányosságait. Ez abból állt, hogy végignézte a forráskódban, hogy hol van mysql művelet, és visszakövette, hogy melyik változót használják nem megfelelő biztonsággal. (Nincsenek szűrve a msysql query-nek átadott stringben a speciáls html, illetve sql karakterek.)
Charles kifejtette, hogyan működik pontosan az expolit: a scrape.php válaszol a BitTorrent klienseknek a kérésekre. Két fajta választ adhat vissza; ha csak szimplán változók nélkül hívjuk meg, akkor kilistázza a trackeren található torrenteket és az adatokat. A másik lehetőség, ha egy speciális hash-el hívjuk meg, akkor ahhoz a torrenthez tartozó adatokat írja csak ki.
A probléma az, hogy a TorrentTrader nem szűri megfelelően az inputot, csupán a kérés hosszát nézi meg, hogy 40 karakteres-e. Az kérést egyenesen átadja az adatbázisnak. Ha az elküldött, módosított hash 40 karatker hosszú, máris hozzáférhetünk az adatbázishoz.
A legnagyobb veszélyt az jelenti, hogy ezzel a módszerrel bárki, elérheti azokat az adatokat, hogy ki, honnan, éppen milyen fájlokat oszt meg a trackeren.
A problémát úgy lehet orvosolni, hogy frissítjük a tracker scrape.php-ját a nemrégiben kiadott v1.08-es verzióra.
(via torrentfreak)
június 11, 2008 at 5:18 de.
Elég gáz hiba:
június 11, 2008 at 9:18 de.
“amikor letölti torrentet fájlt”
vagy torrentet, vagy torrent fájlt
június 11, 2008 at 14:24 du.
Faszt kell allandoan belekotni, erted a lenyeget nem?
június 11, 2008 at 15:10 du.
tbdev-be is van hiba amihez elég ritka a javítás. Az oldal url-je mögé beírod hogy config/DATABASE és kiadja a mysql adatokat. pl.: http://valamitorrent.hu/config/DATABASE
június 11, 2008 at 15:25 du.
aki nem kepes egy htaccess-t nyomni a fontos konyvtarakra az meg is érdemli hogy felnyomjak a torrentsite-jat
június 11, 2008 at 15:58 du.
az a hiba xam-ban van
június 11, 2008 at 19:40 du.
Dj Senki: az speciel az un. XAM forras hibaja, .htaccess es orvosolhato. Bar ugy lehet orvosolni a legjobban ha fogod es letorlod a p*csaba
június 11, 2008 at 18:47 du.
Ezért kell saját forrás, de ahhoz túl hatalmas láma a magyar hogy ilyet csináljon, inkább sms lehúzósdit játszik.No comment utálom hogy ebbe az országba születtem.
június 11, 2008 at 19:50 du.
Anonymous, lol. Tényleg azt hiszed, hogy pl. ncore full saját source? Ők is csak átírták a tbdevet, mint a legtöbb tracker.
június 11, 2008 at 20:47 du.
Anonymous haggyál már ilyen szar szöveggel szánalom vagy !
június 11, 2008 at 21:47 du.
El kell hogy szomorítsalak, az ncore az full saját cucc. Képzeld, vannak még emberek, akik nem csak másolnak fröccsöntött szarokat, hanem saját kútfőből is képesek létrehozni dolgokat.
június 11, 2008 at 21:58 du.
BoNo: neked meg mi a fasznak kell mindenkibe belekotnod? (csak hogy a stílusosan kérdezzek vissza). Látom a színvonal az megvan…mondjuk toled nem is vártam mást.
Egyébként azért írtam, hogy ha már valaki egy oldalt csinál és rendszeresen foglalkozik vele, az figyeljen már egy kicsit oda a helyesírásra. Tudom, ez egy egyszeru elírás volt, menet kozben változtatott a kifejezésen és elfelejtette javítani. Ennyi. Ez a komment nem is szuletett volna, ha nincs BoNo.
Csak azt nem értem miért baj már az is, ha valaki felhívja a cikkíró figyelmét egy elírásra.
június 11, 2008 at 23:06 du.
Muhaha, most sírjak, vagy röhögjek?
“Közel egy napba telt, amíg teljesen felfedte a scrape.php hiányosságait.”
Nem csodálom, ilyen kókányolt, rendezetlen összehányt kódban, mint a nyílt forráskódú Torrent Trackerek jó része…
“Ez abból állt, hogy végignézte a forráskódban, hogy hol van mysql művelet, és visszakövette, hogy melyik változót használják nem megfelelő biztonsággal.”
Egy tisztességesne megírt kódnál, ahol nem csak össze-vissza vannak hányva a dolgok ez nem tartana tovább 10-20 percnél. Hibajavítással.
“A probléma az, hogy a TorrentTrader nem szűri megfelelően az inputot, csupán a kérés hosszát nézi meg, hogy 40 karakteres-e.”
ISTENEM!!! Alapszabály: felhasználótól jövő adatokban _NEM_ bízunk. Másik, hogy input filtering nélkül semmit nem rakunk be SQL kérésbe. Ez a baj a PHP-vel, hogy könnyű összegányolni valami működőt, de jól már mindenki baszik megtanulni fejleszteni benne.
Nem merültem bele a TorrentTrader mélyébe, de néztem már pár Trackernek a forráskódját. Nagy részéből hiányzott a minimális tervszerűség, kód strukturálása, stb. Néhány általánosságban használt függvény ki van gyűjtve, de azt leszámítva minden egyéb egy-egy PHP fájlba belehányva.
De ezen nincs mit csidálkozni: ameddig a felhasználók 90%-ának fontosabb a csicsa, a 3000×5000 pixeles animált gifes avatar, mint a lényegi rész, addig nem kell csodálkozni, hogy a trackereket a “gyorsan összecsapom, csak működjön” elv alapján fejlesztik. És ilyenkor sokat lehet spórolni a tisztességes input filtering elhagyásával, ami viszont olyan, hogy nem szabad elhagyni.
Másik: aki nem használ valami adatbázis-absztrakciós réteget és szimplán mysql_* függvényeket hivogat, az sikeres ember nem lehet 🙂
június 11, 2008 at 23:10 du.
Apropó nCore: backendnek XBTT-t használ, frontend viszont saját.
Egyébként egy tracker két részből áll, a fontosabb része a backend, azzal kommunikálnak a peerek, az oldal (frontend) kevésbé fontosabb. Igazából annak csak annyi lenne a feladata, hogy le lehessen tölteni egy .torrent fájlt. Pl. van egy kis hack az Invision Power Board fórumhoz, mely segíségével kb. 10, max 20 sornyi PHP kódból lehet készíteni egy frontendet XBTT-hez.
június 11, 2008 at 23:11 du.
Jah, XBTT: Az ránézésre kivételesen meg van írva normálisan (bár annyira nem értek C++-hoz, viszont amennyire igen, az alapján normálisan összerakott sw), de az viszont nem igaz, hogy nem tudott írni a fejlesztő egy minimális kommentet, hogy ne egy órányi kódolvasás után jöjjön rá az ember, hogy az adott osztály mit csinál pontosan. És persze a dokumentáció hiányáról se beszéljünk.
június 12, 2008 at 5:14 de.
@s: Nem teljesen értek veled egyet. Az adatbázis-absztrakciós rétegeknek szerintem csak nagyobb projekteknél van értelme. Jó dolog nagyon,de kis projekteknél felesleges és csak lassítja a dolgokat. Egy ilyen opensource cuccnál azonban tényleg hasznos lenne, már nem hiszem, hogy valaki oracelet akar mögé vágni :).
június 12, 2008 at 6:28 de.
sanyika, nézd meg például a kérések oldalt. A tbdev sourcben nem működik ott az ékezetes karakterekre való keresés (űő) és mily meglepő ncoren se működik, ebből látszik, hogy full tbdev, csak lemagyarosított mindent és módosította a kódok kinézetét, hogy sajátnak tűnjön. Lehet, hogy az, aki a kódot csinálta nem is vallja be, de közben végig ott volt az eredeti source. Tény, hogy át van dolgozva az egész, de ez csak Q*va sok idő, energia na meg némi tapasztalat kell hozzá és bárki tudja úgy módosítani a tbdev-et, hogy saját sourcnek tűnjün, de attól még nem az.
június 12, 2008 at 6:35 de.
Ja és bizonyítékként, hogy lássuk nem csak mondom a magamét, itt van van előttem az előző ncore (arra is azt mondták, hogy saját source) könyvtárfelépítése, ekkor arra még nem törekedtek, hogy azt is módosítsák:
http://kepfeltoltes.pirateclub.hu/pics/g.PNG
június 12, 2008 at 8:06 de.
@bxh: szerintem nem feleslegs, kis oldalaknál se. Jó, nem egy ADOdb-re gondoltam, ahol a kód 90%-t csak az tenné ki. De kezdjük ott, hogy maga a PHP nyújt egyet alapból. Kis oldalaknál meg úgy se számít, hogy most 8 nanosec-l gyorsabb vagy lassabb az oldal.
Nekem is van egy saját egyszerű rétegem, viszem is mindenhova, még ha a leg egyszerűbb feladatról van szó. Már csak azért is, mert magában az osztályban meg van oldva a hibakezelés és nem kell minden mysql_query() után ellenőriznem, hogy biztos, hogy jól lefutott?
Oracle helyett meg már jó kiinduló alap a PostgreSQL is, rengeteg mindent meg lehet benne valósítani, amit MySQL alatt önmagában nem. Csak ameddig ilyen PHP kódok készülnek, addig el lehet képzelni, hogy SQL téren hol állnak az önjelölt PHP “csak a phphez értek de ahhoz nagyon mert egy-html fajlt be tudtam includeolni” Warriorok.
@Anonym: láttam multkor egy webáruházat, ahol szintén elbaszták a MySQL-ben a karakterkódolást és még volt index.php is!!! Tutira a TBDev-ből lopták ők is!!!!
Múltkor egy haverom túrt meg az ncore kódjában valamit, azt mondta, nagyon rendezett a kód. Innen kezdve már tutira nem TBDev :)))) De majd utánajárok ennek egyszer.
Egyébként meg, onnan kezdve, hogy veszek egy alapot és átírják a jó részét és saját fejlesztésként viszik tovább, szerintem joggal beszélhetünk saját fejlesztésről 🙂 Pl. ott a bitgate, első ránézésre látszik rajta, hogy valamelyik “szokásos” alapra építkeztek, de ha egy picit is megnézed, süt róla, hogy ki van az pucolva. Jah, de ők nem “lophatták” a TBDevet, mert jól beállítátták a karakterkódolásokat!!!!!!
Jah, és honnan van neked előző nCore kódja? 🙂
Egyébként meg mi bajotok az nCore-val? Az, hogy nekik bejött az, ami nektek nem? Meg ha TBDev-n is alapul, akkor mi van? Hol lopás az, hogy felhasználtak egy olyan alapot, amit azért adtak közre, hogy felhasználd? 🙂 (Tipp: sehol, csak valamiért fikázni kell megint a másikat.)
június 12, 2008 at 8:24 de.
Sry, összekevertem a xam-t a tbdevvel.
június 12, 2008 at 9:00 de.
@s: “Nekem is van egy saját egyszerű rétegem”. Megosztanád esetleg velem, megkukkantanám :). Nekem néha muszáj annodb-t használni, de tényleg szörnyű.
június 12, 2008 at 9:41 de.
s, onnan van neki előző enkór kódja, hogy a gerincesek alapvető tulajdonságaival nem rendelkező (gy.k. gerinc) drágalátos ivoviz eladta/kiadta jó pénzért egy előző csapat által fejlesztett kódot.
június 12, 2008 at 11:45 de.
Csak az “Endless Torrents” nevu oldal (ez az elso neve a mai nCore-nak) keszult TBsource forrasbol, az osszes tobbi (Endless-HQ-tol kezdve) egyedi.
http://uid.hu/blog/index.php/2007/06/endless-es-skyline/
június 12, 2008 at 11:52 de.
“Anonymous haggyál már ilyen szar szöveggel szánalom vagy !”
Megmondom én mi a szánalom. Az hogy orosz és egyéb külöldi fórumokon kuncsorognak a magyarok segítségért az önnállóság helyett. A magyar kizárólag csalni, lopni, lehúzni képes és azt is bénán, viszont elnézem a honfitársakat, az új nemzedéket, még orosz fórumokon is könyörögtök a segítségért pedig tudjuk hogy már csak büszkeségből sem kellene ezt csinálni. Ha valaki nem ért a programhoz amivel a havi betevőt keresi meg akkor legalább annyit szánjon rá hogy értelmes saját erőből összehozott forrást használ, és nem bőg amikor az oldalt feltörik a NAGY magyarok.
június 12, 2008 at 12:36 du.
Ácsi, a nagy magyarok nem ott vannak, hanem a zászlót lengetik. 😀
június 12, 2008 at 16:48 du.
@Anonymous: Ezzel az erővel mondhatnám azt is, hogy akkor szar az asvainfo, mert worldpress-t használ.
június 12, 2008 at 18:17 du.
csak offolni vagytok jók:D
november 4, 2008 at 21:21 du.
Hmm…..
Amig a felhasználók (júzerek) b***nak minimálisan használni az agyukat értelmes gondolkozásra (többnyire lustaság miatt), addig mi minek törjük magunkat bármivel is?
Akinek van vmi nagyobb közösségi oldala az talán sejtheti hogy mire gondolok…. Amikor pl adott egy közösségi oldal és arra képtelen a júzerek 70%-a hogy értelmesen kitöltse az adatlapját, vagy hogy pl szóközt tegyen abba a ki****tt felsorolásba (Mert ha nem tesz szóközt ugye akkor széthúzza az oldalt), addig mi fáradozhatunk bármivel is… (a többi hülyeségről már nem is beszélve, pl a 10 % www kezdettel irja a mail címét…) Saját tapasztalatom szerint kár itt bármivel is foglalkozni meg erőlködni…. itt nem sokan látnak tovább a letöltéseknél, a találjon már rám vki minden infó nélkül mert ismerkedni akarok, meg beszélgessünk már msn-en bár nem tok mit mondani dolgoknál…
Sajnos szánalmas az internetfelhasználók tábora…. főleg a fiatalok…. az idősebbek 30-as 40-es korosztály, tudnák értelmesen használni, csak ők meg nehezen tanulják meg… de a fiatalok 90%-a olyan sötét mint az éjszaka a maradék 10% meg szerintem aki hasonlóan foglalkozik webes dolgokkal… Bezzeg a helyesírásba meg Desing-be mindenki bele tud kötni…
Bocs az erős megnyilvánulásért, de néha iszonyatosan ki tudnak akasztani az eszetlen júzerek….
Nem lehetne jogsihoz kötni az internetezést???? Vezessék már ezt be…… Léci…….