Fülöp, Evelin
12 °C
27 °C

Az elmúlt 25 év legdurvább bugja

2014.09.30. 17:37
Veszélyben a linuxos rendszerek, nem minden tökéletes az Apple-nél sem: a 25 éve létező Shellshock bugot könnyű kihasználni, és a gyakorlatban sokáig tart majd javítani. Már meg is érkeztek az első robotok, amik automatikusan fésülik át a rendszereket. A routerek, az okosizzók, a webkamerák, a webszerverek – szinte minden potenciális veszélyforrás, ami az internetre csatlakozik. A javítások már érkeznek, de néha elkapkodják, és nem jók; néhány rendszerre pedig lehet, nem is fog jönni soha.

A múlt hét végén sokkolta az internetet az azóta Shellshock Bash bugként emlegetett kritikus sebezhetőség: természete miatt sokkal durvább következményekkel járhat, mint a pár hónappal ezelőtt felfedezett, akkor az internet legnagyobb bugjának kikiáltott Heartbleed. Pedig nem is tipikus bugról van szó, hanem csak egy nem dokumentált, elfelejtett funkcióról.

Egy nem átgondolt fejlesztés miatt a rosszindulatú támadók távolról belenyúlhatnak gépekbe, a webszerverektől a routereken át a gépekhez csatlakozó programok mind kihasználható felületet kínálnak a hibának, amivel a támadó mindenféle azonosítás, kulcs, jelszó, felhasználónév nélkül futtathat káros kódokat. Amíg nem létezett a mai értelmében vett internet, nem volt ezzel baj igazán. De ma már van.

Mi a Bash?

A Bash egy úgynevezett shell (rendszerhéj, neve a  Bourne shellből jön), egy értelmező, amivel szöveges parancsokat lehet kiadni Unix(-alapú) és Linux rendszereken, tipikusan akár távolról is. Ez olyan, mintha távoli asztallal felcsatlakoznánk a windowsos gépünkre, csak itt se asztal, se ikonok, csak szövegek, és mögötte a rendszer. Mint az alábbi képen.

Azonban ennél is többet tud: feldolgozóként működhet webszerverek scriptjeihez, például a legnépszerűbb Apache szervernél is, azaz különböző feladatokat lát el, amik segítik egy weboldal, szolgáltatás megfelelő működését. Az Index mögött is fut hasonló: a cikkek például nem annyi példányban léteznek, ahányszor látjuk őket (kapcsolódóként, címlapon, rovatoldalon, megnyitva), hanem (egyszerűsítve) egyszer eltárolva, dinamikusan jelennek meg, amikor kell. Pont ebből lehet a baj. 

bash-bug.png

A Bash a nyolcvanas évek óta létezik, és rendkívül népszerű. Vannak más alternatívák is, viszont a Bash alapértelmezett a legtöbb Linux és Mac OS X operációs rendszeren. Pont emiatt olyan jelentős ez a sebezhetőség: a program az egyik legtöbbet telepített program a Linuxokon. És lehet, hogy a felhasználók asztali gépein még mindig csak egy-két százalék a Linuxok aránya, a szervereken, különböző eszközökön valójában ez a legnépszerűbb operációs rendszer.

Az internet fele Apache webszervert futtat, amely használhatja a Basht. Ez kicsivel több mint egymilliárd weboldal, és ezek még csak a webszerverek. Vannak más speciális, internetre kötött számítógépek is, amelyek nem a weboldalakat szolgálják ki, de azokon is ott fut a Bash, hiszen rengeteg mindenre használható a weblapoktól a webkamerák, más beépített eszközök vezérléséig.

Mi a baj?

Én is érintett vagyok?

Webszerverét például ezzel az eszközzel ellenőrizheti, helyi gépeken több lehetőség is van, itt érdemes böngészni.

Ezek az ellenőrzések persze nem teljes körűek. Semmit nem mondanak például a beépítetten Basht használó eszközökről (pl. routerekről).

A CVE-2014-6271 sorszámon nyilvántartott bug (amit azóta hozz kapcsolódó újak is kiegészítettek) távoli kódfuttatást tesz lehetővé, ez a legrosszabb, ami történhet: a támadó azonosítás nélkül futtathat káros kódokat, amikből már ebben a pillanatban is tucatszám kering az interneten.

'() { :;}; 

A Bashben beállíthatók úgynevezett környezeti változók: olyan adatok, amiket a rendszer eltárol, és később használhatók újra. Példáu megadhatjuk egy PIZZA nevű változótban hogy a kedvenc pizzánk a hawaii-sonkás-szalámis-paprikás, így ha legközelebb ezt nem akarjuk az egész hosszú karaktersort leírni, elég ennyit írni, helyette, hogy $PIZZA, és a kiírásnál megkapjuk majd, hogy hawaii-sonkás-szalámis-paprikás. 

A gond ott van, hogy ha valaki a '() { :;}; karaktersort írja a $PIZZA kiírása elé, akkor nem azt kapjuk majd, amit szeretnénk, ellenben bármit ír utána, azt a rendszer már parancsként értelmezi, és lefuttatja. Rossz indulatú kóddal így már elég sokat lehet ártani a célpontnak – messze sokkal rosszabbat, mint hogy a kedvencünk helyett szardellás-kapros pizzát kapunk.

A támadó egyik lehetősége például, hogy az egyébként privát fájlokat kirakja az internetre. És itt most nem a celebek pucér képeire kell gondolnunk, hanem felhasználónevekre, jelszavakra, más, nem publikusnak szánt beállításra. Tipikusan tömegesen kihasználható hibáról van szó, a hétvégén már meg is jelent az első féreg (magától terjedő program), amit kifejezetten a Bash-bug kihasználására írtak. 

Több mint 25 év

Az eddigi vizsgálatok alapján egészen a  4.3-as (a hiba felfedezése előtti) verzióig minden korábbi Bash érintett, ami azt jelenti, hogy az elmúlt nagyjából 25 év összes kiadása. Ez hatalmas probléma: a rendszergazdák, felhasználók egy része karbantartja a programjait, mások viszont nem. Frissítenek, de nem a megfelelő ütemben, biztos, hogy rengeteg helyen jó sokáig marad még érintett verzió. 

Összehasonlításul: a Heartbleed-bug körülbelül két évig élt felfedezetlenül, és még most, jó pár hónappal az egész internetet megjárt probléma után is bőven találni nem frissített rendszereket. Arról nem beszélve, hogy a kapkodásban több javítás is valójában nem javította a Bash-bugját. A CentOS, Debian, Redhat és az Ubuntu viszont gyorsan lépett.

Nem is igazán bug

Vannak, akik szerint a Bash-bug igazából nem is hiba. Egyszerűen az a baj, hogy az egészet 25 évvel ezelőtt tervezték. Akkor még nem létezett az Apache nevű webszerver, amin keresztül most a legveszedelmesebb a hiba, alig internetezett valaki, a biztonsággal nem igazán foglalkoztak. A most kihasználható hiba pedig valójában tervezett, egyszerűen nem dokumentálták rendesen, így mindenki elfelejtette. Akkoriban nem számított, a mostani környezetben viszont már könnyen kihasználható.

A Macem vagy a webkamerám veszélyben van?

Nemcsak az elterjedtség, a bug hosszú múltja, hanem az is súlyosbítja a helyzetet, hogy ma már nemcsak a pécénk, az okostelefonunk, a tabletünk, hanem rengeteg, kevésbé karakteres kütyü is csatlakozik az internetre. Ezt hívjuk majd egyszer a Dolgok Internetének (Internet of Things).

Ez alatt érthetünk mindent, ami IP-vel, wifivel, bárhogy az internetre csatlakozik a webkameráktól, az okosizzókon át a digitális ajtózárakig. Sokak rendszere Linuxot futtat, amelyben ott figyel a Bash is. Arról nem beszélve, hogy amúgy is kiforratlan technológiákról van szó, nem igazán volt elsődleges szempont a fejlesztésnél a biztonság, az LIFX okosizzó például nem annyira nehezen kiadta a csatlakozott wifik adatait.

Ismerősebb vizeken is lehet probléma, sok router is futtat Basht, pedig ők aztán tényleg közvetlenül a netre vannak kötve. Ezek az eszközöket mind frissíteni kell majd, néhányuknál viszont ez egyáltalán nem megszokott. Sőt, még a Microsoft rendszerei is veszélyben lehetne: bár Basht nagyon ritkán futtatnak Windowson, egy tipikus hálózatban az is nagyon ritka, hogy ne legyen valamilyen linuxos számítógép, eszköz, ha más nem, a router. Innentől már nem olyan egyértelmű a válasz arra, hogy biztonságban vagyunk-e.

A Macek viszont az Apple hivatalos nyilatkozata szerint „nagyrészt biztonságban vannak”, mivel nem veszélyes módon futtatják a Basht. A tesztek alapján viszont a Mac OS X 10.9.4 érintett. Amint megjönnek bármilyen rendszerre a frissítések, érdemes őket telepíteni, mert a hibát már napok óta kihasználják, létezik már rá robot is, egyből ráküldték az USA védelmi minisztériumára is.