A dolog ugyan nem új, de eddig még nem is írtam róla, aztán gondoltam, hogy most megér pár sort. Röviden: hogyan juthat be valaki más Facebook-fiókjába, ha eléggé pofátlan ahhoz, hogy az áldozatot rávegye arra, hogy ő maga futtasson le egy kódrészletet a böngészőjében?

Nem szoktam nézegetni a Facebook kliensoldali forráskódját, azaz amit a böngésződ megkap a szervertől és a böngésző az alapján fogja megjeleníteni és dinamikusan működtetni a lapot.  A Facebook kliensoldali kódja egyébként is gusztustalanul nagy méretű és nehezen áttekinthető, hanem azért, hogy keressenek benne hibát a fanatikusok.

Többek számára alighanem ismerős, hogy a Chrome-ban és a Firefoxban egyaránt már alapértelmezés szerint elérhetők a fejlesztőeszközök, amik segítenek a webfejlesztőknek különböző hibák felderítésében és lévén, hogy ezekkel az eszközökkel nem csak megjeleníthető, hanem módosítható is, hogy a kliens milyen adatokat küldözgessen a szervernek. így természetesen arra is alkalmas, hogy egy sérülékeny webhelyet pont ezen keresztül törjön fel valaki, ha az nincs felkészítve a legordasabb támadásokra, amik az ügyféloldali kód manipulációján keresztül lehet kivitelezni. A tudatlan felhasználó viszont jobb, ha vakon nem babrál vele.

Facebook XSS cross-site scripting bejutas feltörés social engineering hiszékenység alacsony a kerítés

Minél inkább meghatározó egy webes szolgáltatás aktuálisan, minél több információ koncentrálódik benne, annál nagyobb az igény rá, hogy valami balfácán zéró technikai tudással fel akarja törni. Amikor az iWiW volt a menő, hűvös halomra kaptam a leveleket, azzal kapcsolatban mindenféle szerencsétlentől, hogy segítsek már neki bejelentkezni az exe/exfőnöke/neje/kutyája iWiW fiókjába, mert csak. Ezeknek a leveleknek egyébként közös vonása volt, hogy megpróbálták racionalizálni a dolog jogosságát, gyakorlatilag az általános morál fölé helyezve önmagukat. Például arra hivatkoztak, hogy lehet, hogy félrekúr az asszony vagy a férj, állítólag egyébként a magándetektív cégek megrendeléseinek még mindig egy igen nagy részét a megcsalás-felderítésnek elkeresztelt baromság teszi ki, a fontos különbség viszont, hogy a magándetektív cég nem alkalmaz törvénytelen eszközöket, kizárólag megfigyelhet. A levelek másik közös vonása volt, hogy fingjuk sem volt róla, hogy egy webalkalmazás tesztelő, etikus hekker mennyiért dolgozik, még nagyságrendileg sem, például bedobták, hogy tudnak érte adni 20 ezer forintot, mondanom sem kell, hogy a sok hatökör alighanem sosem gondolt bele, hogy egy etikus hekkernek nem lehet annyit fizetni, amennyiért valamilyen törvénytelen vagy törvényes, de etikátlan dolgot követne el, hiszen egy életre elvesztené az ügyfeleit, akik megbíznak benne és éppen azért fizetik, hogy minél kevésbé legyen törhető az a webszolgáltatás, amit működtetnek, aminek pedig alapköve, hogy a tudását tisztességes módon használja fel. Ahogy szoktam mondani, komoly zavar van és alighanem még lesz is jóideig a fejekben, hiszen röviden szólva ez olyan dolog, mintha egy gyógyszerészt arra kérnének, hogy kotyvasszon már valamilyen mérget, mert valakit el kellene tenni láb alól. A gyógyszerész tudna működne méregkeverőként? Persze, hogy tudna. Fog? Dehogy.

Facebook XSS cross-site scripting bejutas feltörés social engineering hiszékenység alacsony a kerítés

Aztán általánosan elterjedt lett a Gmail, majd beköszöntött a Facebook-éra, de sokan ugyanolyan hülyék maradtak. Néhányszor cikkeztem arról, hogy a Facebook-fiókot hogyan érdemes hardeningelni, mire érdemes figyelni, ami persze a keresők felől bevonzotta a sok idiótát, akik Facebook-hakkolással kapcsolatban kerestek információt, majd levelet írtak nekem.

Mókás, de az ilyen jóemberek általában pont azzal nyerik el méltó büntetésüket, hogy rábukkannak olyan oldalakra is, amik pénzért vagy ingyen, ilyen olyan, természetesen a felhasználó számára kártékony alkalmazás letöltéséért cserébe azt ígérik, hogy bármilyen Facebook-fiókot megszerezhet vele majd az illető.

Ennek a világnak megvan az a bizarrba hajló szépsége, hogy a netes csalók annyira kifinomultak lettek, hogy éppen azt az igényt kihasználva a kellően türhő felhasználónak 100%-os feltörést ígérnek és az illető talán csak az utolsó pillanatban veszi észre, hogy a saját fiókját törte fel. A Facebook esetén az egyik forgatókönyv a következő: a csalók ráveszik az áldozatot, hogy indítsák el a böngésző előbb emlegetett fejlesztőeszközét, majd illesszenek be egy kódrészletet a megfelelő helyre, ezzel hozzáférhetnek más fiókjához. És igen, kitaláltad, az emberek annyira hülyék, hogy nem is akarják érteni, hogy az adott kódrészlet mit csinálhat ténylegesen, már bökik is be a kódot, aminek eredményeként a scammer a balfácán Facebook-fiókját fogja megszerezni és azt használni például spamküldésre, esetleg olyan adatot állít be, amivel aztán új jelszót adhat meg és az exploitált balfácánok listáját eladja a feketepiacon.

Adja magát a kérdés: ha meglehetősen biztonságos technikai szempontból a Facebook vagy a Google, hogyhogy ez ellen a technika ellen nem tudnak védekezni? Éppen azért, mert a beillesztett kódrészlet a felhasználó nevében, a saját munkamenetével, a saját fiókjának működését manipulálva fog lefutni. Hasonlóan ahhoz, hogy például saját nevünkben tudunk oldalt lájkolni, csoportokba belépni, biztonsági kérdést megváltoztatni a saját fiókunkra vonatkozóan, de másét nyilván nem, a szerver pedig nem képes ellenőrizni, hogy egy-egy műveletet szabályos használat mellett hajtunk végre vagy éppenséggel azzal, hogy megpatkoljuk a böngészőnk által küldött adatokat. Azaz elméleti lehetőség sincs arra, hogy a felhasználót önmagától védjék meg.

Amire a böngészőeszköz futtatása közben a Facebook felhívja a figyelmet, a jó öreg cross-site scripting technika, aminek a lényege, hogy a webhely olyan bemenetet kap, amilyet normális esetben sosem kapna és a webhelyet valamilyen rendellenes működésre bírja rá ezzel.

A XSS egyik durva típusában az egykori iWiW is érintett volt: az iWiW nem ellenőrizte, hogy a „Munkahely weboldala: ” mezőben a felhasználó adatlapján tényleg csak szöveg, azaz egy webcím adható-e meg és más biztosan nem, azaz nem volt megfelelő parserelés, bemenetszűrés. Rövid ideig az iWiW-en ez a szövegmező szinte bármit elfogadott, ami jó esetben csak egy apró Javascript kód volt, ami feldobott a látogató számára egy üdvözlő ablakot, de volt olyan matyómintás perzisztens XSS is, ami a felhasználó adatlapját átrajzolva jelenítette meg, szerencsére több kárt nem csinált.

A Facebookon ilyen az én tudásom szerint pillanatnyilag nincs – viszont a felhasználó által indított rosszindulatű kisalkalmazások, ún. Facebook-vírusok képeseket lehetnek rá! – viszont ugyancsak az XSS-re támaszkodva kaphat olyan bemenetet a Facebook a böngészőtől, aminek hatására például eltérítődik a felhasználó munkamenete, éppen azért, mert a sajátja, az őt azonosító sütiket is megmérgezi, így végső soron ezzel hozzáférést enged a támadó felhasználónak a saját fiókjához a saját hülyesége miatt.

Részletesebb technikai magyarázatba nem megyek bele, de ez teljesen hasonló ahhoz, mintha valakinek a lakásába be akarnánk menni illegálisan, ezért keresnénk egy betörőt, hogy segítsen, majd a betörő "segítőkészen" elkérné a saját lakásunk kulcsát, hiszen az biztosan nálunk van.

Úgy általában egy webalkalmazásba bejutni valamilyen trükkel egy etikus hekker számára a megrendelő kifejezett kérésére nemes dolog, mielőtt más tenné meg, mi több, művészet. Ami pedig a Facebookot illeti, természetesen nem tökéletes rendszer, de eléggé erős, ha a szolgáltatás saját maga hívja fel rá a figyelmet, hogy a felhasználó ne legyen hülye.

Hupsz, még valami, az előző posztomban az egyik kép duplán volt embeddelve, amiért bocs mindenkitől. Aki esetleg nagyon ráér, pls. írjon már egy tweaket, amit beilleszthetek a reblog-posztba, így a posztba illesztett képek akkor is fix mérettel jelennek meg és nem széthúzva, ha az eredeti sablont felüldefiniálja az, ami fölött megjelennek a Reblog Sprintben részt vevő posztok, hátha nincs rá felkészítve a blogmotor, trollolo.