Un fallo en musl libc deja que cualquiera obtenga shell root en Alpine

*sshole, or when are we going to get rid of C?

Un fallo en musl libc deja que cualquiera obtenga shell root en Alpine

El hash de contraseña "*" significa cuenta bloqueada en Unix desde siempre, pero desde 2012 musl libc lo devuelve también cuando la contraseña es demasiado larga. En sistemas musl sin PAM, como la imagen oficial de Alpine en AWS, un atacante sin autenticar consigue una shell, posiblemente root. No es un problema de seguridad de memoria: es señalización in-band que el sistema de tipos de C no impide y que las normas de Rust sí rechazan.

Las normas de ingeniería de los desarrolladores de C permiten que "*" sea un valor centinela aceptable para indicar un error; las de los desarrolladores de Rust simplemente no.
  1. PeterWhittaker

    Esto es menos un problema de C y más una mala decisión de diseño del equipo de musl. En respuesta a malas prácticas (programadores que no comprobaban qué devolvía crypt), construyeron una que podría decirse que es peor (devolver un valor centinela).

    Claro, el std::result de Rust puede hacer más difícil hacer tonterías, pero el tonto siempre encuentra la manera.

  2. zeroCalories

    Es que de verdad odio los tiempos de compilación de rust, tío

  3. varispeed

    ¿Qué tiene que ver con C? Es simplemente un mal diseño.

    Es como culpar de conducir mal al chándal de uno.

Más de este día

2026-11-06