Kritikus hibák a Drupal-ban

Címkék

Megjelent a Drupal CMS 4.6.7-es és 4.7.1-es verziója. A kiadások bugfix kiadások, amelyekben két-két kritikus (SQL injection, távoli kódfuttatás bizonyos Apache beállítások estén) hibát javítottak a fejlesztők.

A hibák vagy az új kiadásokra frissítéssel, vagy a (verziónként) két pár soros patch a alkalmazásával javíthatók.

A részletek a bejelentében. A Drupal oldalakat futtatóknak érdemes feliratkozni a sec levlistára.

Hozzászólások

A security vulnerability in the database layer allowed certain queries to be submitted to the database without going through Drupal's query sanitizer.

Sokszor jól jönne, ha egy framework fejlesztője letilthatna bizonyos funkciókat a framework-öt használó elől, vagy legalább csak akkor engedné meghívni, ha a valamilyen feltételek teljesülnek (pl. a függvényt/osztályt valaki aláírta egy kulccsal). Akkor nem lehetne figyelmetlenségből vagy tudatlanságból megkerülni a védelmi mechanizmusokat.

Ez a hiba a lapozásban van. Le szeretnéd tiltani a lapozást a felhasználó elől?

A másik hiba a fájlfeltöltéssel kapcsolatos. Azt letilthatod - ahol a felhasználó nem tud fájlt feltölteni, azt az oldalt nem is érinti a hiba. Ettől persze nem árt frissíteni.

-boogie-

Hm, a hiba leírásából úgy értettem, olyan kód került a Drupal-ba, ami SQL-t futtatott anélkül, hogy az SQL string-et előtte átengedte volna egy biztonsági szűrőn. Az ilyen hiba viszont azért forul elő, mert a fejlesztő megteheti, hogy megkerülje a keretrendszer szolgáltatásait. Ez néha jó, de általában nem.

Tehát nem a felhasználó korlátozásáról beszélek, hanem a frameworkot használó fejlesztő korlátozásáról.

A Perl-ben alkalmazott a tainted változó fogalmát lehetne pl. kibővíteni, az segíthetne.

Sokkal egyszerűbb hibáról van szó. Az adatbázis "lapozásos lekérdezés" függvényénél nem lett ellenőrizve, hogy a kapott LIMIT és FROM értékek (PostgreSQL-nél más) számok-e - ezzel pedig lehetett trükközni. A patch nem tesz mást, mint számmá alakítja mindenképpen.

-boogie-

Ez szerintem nem igaz, és még ha valamiért igaz, akkor sem ezért. Például egy típusos nyelvben is simán elfelejthetted volna a konverzióját az oldalszámnak, jellemzően sztringként jön ugyanis a "request"-ből, és semmi sem kényszerít rá, hogy az SQL utasításig elérve szám legyen belőle. De ez itt nagyon offtopic...

-boogie-

Ahh... egyszer már jól megjártam azzal, hogy másnapra hagytam a frissítést. :) Tanultam is belőle rendesen (3hacker.hu frissítve).

Persze, hogy megteheti a programozó biztonsági szűrő nélkül, sőt, Neki kell megírni az ellenőrzéseket.

A típusos nyelvek jól tudnak jönni, PostgreSQL-ben pl. lehet binárisan is lekérdezni, adatbáziskliens kérdése, hogy ez megbízhatóan működjön. Csak PHP-ban gyorsabban megy a fejlesztés. Bizonyos helyeken előírás, hogy Ada-ban kell programozni, ott aztán semmit nem tudsz leírni kétértelműen, mert a fordító leüvölti a hajadat. :) Az viszont drága mulatság, sok mérnökóra lenne, ha pl. CMS-t Ada-ban akarnál megírni. :)