systemadmin.es > Seguridad > Local root con las versiones 1.8.0-1.8.3p1 de sudo

Local root con las versiones 1.8.0-1.8.3p1 de sudo

Ayer a través de un tweet de RoMaNSoFt me enteré de un “bug de libro” en sudo.

En el advisory nos indican la siguiente de función:

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);
}

Por partes, en la función:

easprintf(&fmt2, "%s: %s\n", getprogname(), fmt);

Se pasa getprogname(), que se trata de argv[0] al buffer temporal fmt2 y luego se pasa a la función vfprintf directamente:

vfprintf(stderr, fmt2, ap);

Por lo que el vfprintf acaba siendo controlado por el usuario que puede modificar una posiciones de memoria con %n (un format string attack). Podemos ver cómo se explotan en los niveles 6 y 8 del wargame narnia.

En el caso se sudo, al ser un binario con el setuid bit podemos conseguir root explotando dicha vulnerabilidad.

Al ser bastante evidente es normal que en el advisory diga que el programador estaba avergonzado:

2012-01-24 Send vulnerability details to sudo maintainer
2012-01-24 Maintainer is embarrased

En el caso de CentOS/RHEL estamos libres de este fallo ya que se usan versiones anteriores:

  • CentOS 5: 1.7.2
  • CentOS 6: 1.7.4

2 comments to “Local root con las versiones 1.8.0-1.8.3p1 de sudo”

  1. Las versiones últimas stables de Debian (desktop y server) tampoco. 1.7.2* y 1.7.4*

  2. En Debian parece que solo es vulnerable testing. Sid lleva la versión con el bug ya corregido.

Deja un comentario:

XHTML - Tags permitidos:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>