Egor Homakov egy olyan hibát demózott, melynek kihasználásával tetszőleges GitHub felhasználó tárolóihoz korlátlen hozzáférést lehetett szerezni. A lépésre azután került sor, hogy Homakov sikertelenül próbálta meggyőzni a GitHubon is használt Ruby on Rails keretrendszer fejlesztőit, hogy változtassák meg az úgynevezett tömeges paraméterhozzárendelés alapértelmezett viselkedését, mivel jelenlegi formájában a lehetőség sok helyen vezet biztonsági problémához. Az érvek nyomatékosítása érdekében Homakov betolt egy commitot a Rails master branch-ébe.
A kihasznált sebezhetőség meglepően egyszerű: A Rails keretrendszer lehetővé teszi, hogy egy objektumot egyetlen Hash objektum (asszociatív tömb) átadásával példányosítsunk, az új példány attributumait a Hash elemeiként felsorolva. A probléma az, hogy alapértelmezetten az objektum bármely paraméteréhez érték rendelhető, vagyis ha a konstruktor paraméternek átadott Hash-t a felhasználó vezérli, hozzáférhet védendő paraméterekhez - például új felhasználó létrehozásakor beállíthatja, hogy a felhasználó az adminisztrátori csoportba tartozzon. A gyakorlatban ehhez egy param[attr] formátumú HTTP paramétert kell hozzácsapni a megfelelő kéréshez, ahol a param a példányosításhoz használt paraméter objektum neve, az attr pedig a beállítandó attribútum.
Homakov a GitHub több felületén is sikeresen kihasználta ezt a problémát, a legfájdalmasabb ütést a fiókokhoz tartozó nyilvános kulcsoknál tudta bevinni: a feltöltendő kulcshoz a célpont fiók azonosítóját megadva a feltöltött publikus kulcs az idegen fiókhoz rendelődik hozzá.
A demonstrációs célú támadás miatt a szakértőt sokan bírálják, a GitHub pedig letiltotta a hozzáférését. A GitHub teljes közösségét veszélybe sodorni tényleg felelőtlenségnek tűnik, a hibakeresésért pénzt kérni egy nyílt forrású projekt esetén minimum nem szimpatikus, de remélhetőleg a történtek gyors cselekvésre késztetik a hasonló hibákkal dolgozó Rails fejlesztőket.
buherator · http://buhera.blog.hu 2012.03.05. 16:11:01
nyos 2012.03.07. 04:43:09