Buffer Overflow v X serveru UNIX-ových systémů

Zdroj: SOOM.cz [ISSN 1804-7270]
Autor: .cCuMiNn.
Datum: 9.1.2014
Hodnocení/Hlasovalo: 1/3

V komponentě X Windows byla nalezena Buffer Overflow zranitelnost, která po dobu 23 let své existence ohrožovala uživatele všech UNIX-ových systémů.

Zranitelnost je možné využít ve chvíli, kdy soubor s fontem BDF obsahuje delší řetězec, než bylo očekáváno. V tu chvíli dojde k přetečení zásobníku a k možnému převzetí kontroly nad systémem. Vzhledem k tomu, že Xorg server běží zpravidla s oprávněním roota, jde o extrémně kritickou záležitost.

char charName[100];
int ignore;
if (sscanf((char *) line, "STARTCHAR %s", charName) != 1) {
  bdfError("bad character name in BDF file\n");
  goto BAILOUT; /* bottom of function, free and return error */
}


Chyba byla opravena v nové verzi knihovny libXfont 1.4.6. omezením délky řetězce, který je přebírán od uživatele:

if (sscanf((char *) line, "STARTCHAR %99s", charName) != 1) {