Jogosultságkiterjesztésre alkalmas hibát fedeztek fel a sudo eszközben. A sebezhető kódrészlet az alábbi:
void
sudo_debug(int level, const char *fmt, ...)
{
va_list ap;
char *fmt2;
if (level > debug_level)
return;
/* Backet fmt with program name and a newline to make it a single
write */
easprintf(&fmt2, "%s: %s\n", getprogname(), fmt);
va_start(ap, fmt);
vfprintf(stderr, fmt2, ap);
va_end(ap);
efree(fmt2);
}
Az easprintf() elhelyezi a getprogname() visszatérési értékét a fmt2 változóban, majd ez a karakterlánc kerül felhasználásra a vfprintf() formátum sztringjeként. Mivel a getprogname() a hívott program saját nevét (argv[0]) adja vissza, a formátum lényegében közvetlenül kontrollálható, ha debug módban indítjuk a programot:
/tmp $ ln -s /usr/bin/sudo %n
/tmp $ ./%n -D9
*** %n in writable segment detected ***
Aborted
/tmp $
Ahogy a fenti hibaüzenet is mutatja, a FORTIFY_SOURCE terminálja a futást, amint %n-t lát egy írható memóriaszegmensben, ami megnehezíti a hiba kihasználását, de nem akadályozza meg. A VUPEN-nél állítólag már van egy működő exploit (persze ha annyi infót tennék közzé, mint ők, én is írogathatnék ilyeneket a Twitterre...).
A hiba a sudo 1.8.0-ás változatában került bevezetésre, az 1.8.3p2 javítja.





