Format string sebezhetőség a sudo-ban

2012 február 4 - admin

 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.

Megosztom Facebookon!
Megosztom iWiWen!
Megosztom Twitteren!
Megosztom Google Buzzon!
Megosztom Google Readeren!
Megosztom Tumblren!


Szólj hozzá, vagy olvass bővebben a témáról itt: BuheraBlog

Szólj hozzá!

Ha az eredeti cikkhez nem lehet, itt megteheted!