Rendszerhiba az IT-biztonságban
A hekkerek 2011-ben elloptak mindent, ami nem volt lebetonozva. Vitték az RSA SecurID-tokenek kritikus kódját, a SONY ügyféladatbázisát, a PHP forráskódját, a McAfee reputációját, az Xbox market kuponalgoritmusát és még sorolhatnánk. Pedig már kezdtük azt hinni, a biztonsági rések lassan befoltozásra kerülnek mindenhol – de nem. A kérdés az, hogy miért nem, és meddig nem?
Milyen jövő elé néz a hekkerszakma? És meddig lesz ez így?
A szoftvertényező
Laikus szoftverfejlesztőként gyakran szembesülök azzal a problémával, hogy akárhogy is próbálom végiggondolni és letesztelni a kezem alól kikerülő szoftverek felhasználási eseteit, ez gyakorlatilag sohasem sikerül. Bevallom, az általam kibocsátott kód garantáltan bugos. Ha úgy gondolja a kedves olvasó, hogy ez csupán az én képességeimet minősíti, és egyébként irreleváns információ, téved. Manapság már senki nem tud hibátlan szoftvert fejleszteni, egész egyszerűen azért, mert senki nem látja át a szoftvereket a maga teljességében. Nincs olyan ember, nincs olyan team, és nincs olyan gépezet sem, ami kívülről és felülről a maga teljességében meg tudná vizsgálni mondjuk egy böngészőprogram kódját, értve, értelmezve annak minden ágát és bogát, kiszűrve ezzel az összes hibalehetőséget. Merthogy nincs erre módszer.
A módszeres hibátlanság helyett módszeres próbálgatással próbálunk úrrá lenni a káoszon, ezt hívjuk tesztelésnek: alfa teszt, béta teszt, penetration testing és fuzzing és egyebek. Nincs mégegy olyan iparág, ahol trial-and-fail „módszertan” szerint alakítanák ki a termékek végső formáját. Az autóipari törésteszt hasonló eljárásnak tűnik, de ott a teszt nem arra való, hogy kiderítsék, a termék működőképes-e egyáltalán. A szoftveriparban azonban a teszt a minden. Ami nincs letesztelve, az sokszor nem is működik. Egyfelől ez egy jó dolog, mert rendkívül sok embernek ad munkát, másfelől a módszertalanság miatt eleve biztos, hogy minden szoftver bugos marad.
Most tételezzük fel, hogy egy végletekig becsületes gyártó 100%-os hibamentességig teszteli egyik alkalmazása következő verzióját. Sajnos azonban ezzel a pepecseléssel lemaradt az éppen zajló, immár sokadik paradigmaváltásról, a konkurencia gyorsabban dobja piacra a maga újdonságát, így a 100%-osan hibamentes alkalmazás gyártója csődbemegy.
Van egy bizonyos határ, ameddig a selejtmentesítésben gazdaságosan el lehet jutni. Minden további lépés egyre növekvő anyagi- és időráfordítást igényel. A függvény exponenciális, tehát hibátlan szoftver nem létezik.
Itt két dolgot érdemes megfigyelni. Egy: versengő piaci szereplők esetén senkinek sincs lehetősége tökéletesre csiszolt, agyontesztelt alkalmazást készíteni. Kettő: a piaci környezet lehetetlenné teszi, hogy egy gyártó abbahagyja a folyamatos kódolást és fejlesztést, tehát a bugok gyártása folyamatos.
Ha ezt így elfogadjuk, igazán könnyedén válaszolhatunk a bevezetőben feltett kérdésre: milyen jövő elé néz a hekkerszakma? Szép jövő elé. És meddig lesz ez így? Amíg a világ világ.
Most nézzük meg az érem másik oldalát.
Az emberi tényező
Persze nem csak buffer overflowra épülő exploit segítségével lehet adatokat lopni, van ennél egyszerűbb módszer is: a kényes információt egész egyszerűen el kell kérni annak jogos tulajdonosától. Megy ez, mint a WikiLeaks! Vagy oda kell neki küldeni emailben egy csábos vírust. Lefuttatja? Nem kétséges!
Az átejtéses csalások, hivatalos nevükön Social Engineering támadások a hekkelés egy másik vetületét tárják elénk: ez az az eset, amikor nem a számítógép, hanem a homo sapiens szoftverét hekkelik meg. E támadástípusnál az az érdekes, hogy az emberek 100%-a, még a becstelen zsiványok is becsületesnek tartják önmagukat, nem beszélve Mari Néniről, aki annyira becsületes, hogy ha talál egy teli pénztárcát egy sötét sikátorban, akkor sem vesz ki belőle egy árva garast sem, ha éppen az éhenhalás szélén áll. És mégis, gigabájtszámra juttat titkos adatokat illetéktelen kezekbe. Mi történik itt?
Nem meglepő módon ez is egy rendszerhiba. Vegyük azokat az eseteket, amikor az „adatgazda” szánt szándékkal lopja el az adatokat, mert ha öntudatlanul teszi, az egy teljesen másik kérdéskör. A jelenség magyarázata egyszerű: a becsületesség egy adott kontextuson belül érvényes. A zöldségesnél nem dugunk a zsebünkbe egy marék meggyet, míg az utcán járva ismeretlenek megyyfájáról – hmmm- hmmm – mégiscsak-jaj- hát igen. És ráadásul lelkiismeretfurdalás nélkül!
A Social Engineering lényege, hogy olyan a támadó olyan kontextusba helyezi az áldozatot, amelyben az adott cselekedet elfogadottá, böcsületessé válik. Ez az egyik leggyakoribb alapminta. (Vannak más esetek, például zsarolás stb., amelyekkel most nem foglalkozunk.) Náhány példa: hogyan vegyünk rá egy minden létező kiképzésen átesett, kőkemény, hazájához és az elveihez hű tengerészgyalogost, hogy tagadja meg a parancsot? Hitessük el vele, hogy a felettese áruló. Szegény pára ezt követően olyan szépen tagadja meg a parancsot, hogy „öröm” nézni.
Hogyan vegyük rá Mari Nénit, hogy adja ki a támadó által igényelt hipertitkos adatot? Változtassuk meg a környezeti feltételeket oly módon, hogy ő ezt önként és dalolva, segítségnyújtásképpen adja oda. Ennek tipikus példája, amikor az informatikus „bajban van” akár ki is rúghatják, a Mari Néni jelszava azonban kimentheti őt a slamasztikából.
Se szeri se száma a különböző átejtéseknek, és az ebben a szomorú, hogy ezek valamelyike működni fog a kiszemelt áldozat ellen. A szoftverekhez hasonlóan a felhasználókon is végezhetünk minőségi javításokat, ezt oktatásnak nevezzük. A zéró selejt azonban ezen a területen sem érhető el.
Tehát milyen jövő elé néz a hekkerszakma? Szép jövő elé. És meddig lesz ez így? Amíg a világ világ.