Ez a sebezhetőség ért a Facebooknak 7,5 millió forintot
Tavaly novemberben egy brazil szakember olyan sebezhetőséget talált a Facebookon, amelyen keresztül a webszerver tetszőleges állományához hozzá lehetett férni, és tetszőleges kódot is lehetett futtani. A vállalat a "bug bounty" programjának történetében az eddigi legnagyobb összeget fizette ki neki.
Egy rövid bejegyzésben számolt be a Facebook biztonsági csapata arról, hogy kifizette a 2011-ben indult "bug bounty" programja eddigi legnagyobb jutalmát egy brazil biztonsági szakértőnek, aki távoli kódfuttatásra alkalmas sebezhetőséget talált a közösségi oldal kódjában. Reginaldo Silva november 19-én jelentette be a sérülékenységet a Facebook üzemeltetőinek, akik rövid idő alatt ellenőrizték állításai megalapozottságát, reprodukálták a hibát és az információ beérkezését követő kevesebb mint 4 óra múlva már be is foltozták a sebezhetőséget.
Silva blogbejegyzése alapján a sérülékenység megtalálásához egy Drupalban talált XXE hiba vezetett el, amelyet 2012 szeptemberében fedezett fel. Az XML szabvány definiál egy ún. "external general parsed entityt", röviden external entityt, amely egy előre definiált rendszerazonosítón (URI-n) keresztül helyi és távoli tartalomhoz is hozzáfér. Ha az URI "szennyezett", vagyis a támadó által megfelelően módosított, az XML feldolgozásakor olyan adatokhoz is hozzáférhet, amelyhez az alkalmazáson keresztül nem. Ilyenek lehetnek például a szerveren található fájlok, de a sérülékenységen keresztül meg is bénítható a szerver (XML bomba).
Az OpenID sebezhetőség
Ilyen XML External Entity (XXE) hibát talált a Drupal kódjában Silva, aki annyira megörült a felfedezésnek, hogy azonnal jelentette is a sebezhetőséget a fejlesztőknek - saját bevallása szerint akkor még nem is foglalkozott azzal, hogy az OpenID-t a weben mások is széles körben használják, így más szoftverek is sérülékenyek lehetnek. Pár nappal később elkezdett más szolgáltatásokat is megvizsgálni és azt találta, hogy a Google App Engine és a Blogger is támadható - a szerveren tárolt fájlokat nem tudta elérni ugyan, de az XML parsert meg tudta bénítani az XML bombával. A Google 500 dollárral jutalmazta Silva vizsgálódásait. Ezt követően a biztonsági szakértő "vérszemet kapott" és sorra vizsgálta az OpenID libraryket. Az eredmény: a Java, C#, PHP, Ruby, Python, Perl nyelveken implementált könyvtárak szinte mindegyik sebezhető volt így vagy úgy. A felfedezését a nem nyilvános OpenID biztonsági levelezőlistán meg is osztotta a közösséggel.
A kutató emlékezett, hogy egy időben a Facebook is támogatta az OpenID bejelentkezést, azonban amikor elkezdte vizsgálni az oldalt, azt találta, hogy ennek a nyomai már eltűntek. Egészen véletlenül akadt rá egy URL-re a jelszó-emlékeztetőt küldő oldalon (https://www.facebook.com/openid/receiver.php), ekkor kezdett arra gyanakodni, a legnagyobb közösségi oldal is támadható a korábban felfedezett XML External Entity Expansion (XXE) sebezhetőségen keresztül. Kis kutatás után a sejtése beigazolódott és meg tudta írni azt a kódot, amely a sérülékenységet kihasználva hozzáfér a közösségi oldal szerverein tárolt fájlokhoz, beleértve a jelszavakat tartalmazó állományokat.
Ünnepi mix a bértranszparenciától a kódoló vezetőkig Négy IT karrierrel kapcsolatos, érdekes témát csomagoltunk a karácsonyfa alá.
Silva tavaly november 19-én jelentette be a támadási lehetőséget a Facebook üzemeltetőinek, akik kevesebb mint két órával később visszaigazolták azt, majd reprodukálták a hibát, négy óra múlva pedig az összes szerverre telepítették a gyorsjavítást. Az oldal egy Takedown nevű segédeszközt használ, ez szűri meg a lekéréseket, még mielőtt a feldolgozásuk megkezdődne. Ez lehetőséget ad a Facebook számára, hogy szabályrendszereket léptessen életbe az összes requesten, ebben kellett mindössze egy sort elhelyezni. Az utólagos vizsgálatok során kiderült az is, hogy a Silva által hivatkozott URL mellett a Facebook kódjában még egy helyen található meg ezzel a módszerrel támadható kód, de a Takedown módosítása védelmet nyújt a támadás ellen. A biztonságért felelős csapat a logok átvizsgálásával azt is kiderítette, a sérülékenységet korábban nem használták ki. A gyorsjavításról pedig bebizonyosodott, végleges javításként sincs jobb nála.
Távoli kódfuttatásra is alkalmas
November 21-én, vagyis két nappal később a Facebook kifizette a hiba megtalálásáért járó jutalmt Silvának. A szakértő ezt követően tájékoztatta az oldal biztonsági csapatát arról, hogy az általa megtalált sebezhetőséget távoli kódfuttatásra is lehet használni, ennek módját is leírta, valamint a példakódot is mellékelte. Az üzemeltetők megerősítették, hogy a Silva által kidolgozott támadás valóban működőképes és megtették a szükséges lépéseket az ilyen támadások kivédésére. December 30-án a Facebook-csapat arról tájékoztatta Silvát, hogy a távoli kódfuttatásra alkalmas sebezhetőség miatt a jutalom összegét is megnövelik. A vállalat a "bug bounty" programjának eddigi legnagyobb összegét, 33500 dollárt, vagyis mai árfolyamon mintegy 7,5 millió forintot fizetett a biztonsági szakembernek.