Explicación de la ofuscación en la etapa Bash
- Se descubrió una puerta trasera en xz/liblzma. Afecta al servidor OpenSSH.
- Más que el binario con la puerta trasera, se pone atención en la parte inicial en bash y en el método de ofuscación simple pero ingenioso que se usó.
- Este artículo explica cómo se ofusca y se extrae la etapa bash.
Antes de empezar
- Dos versiones de xz/liblzma (5.6.0 y 5.6.1) están afectadas. Hay diferencias sutiles.
- La parte bash se divide en tres etapas (¿o cuatro etapas?) y cada una se nombra de la Stage 0 a la Stage 2.
- También se planea mencionar la "Stage 3", pero puede que aún no esté completamente implementada.
- Las etapas ofuscadas/cifradas y la posterior puerta trasera binaria están ocultas en dos archivos de prueba.
Stage 0
- Empieza en el archivo m4/build-to-host.m4. Este código se ejecuta en algún punto del proceso de compilación y extrae el script de la Stage 1.
- Lee bytes del archivo de prueba y los envía a la salida estándar, y usa el comando
tr para mapear caracteres a otros caracteres.
Stage 1
- Un archivo bash que comienza con "####Hello####". Está hecho para ejecutarse solo en Linux.
- Incluye una cadena compleja de comandos
head que usa eval para extraer srcdir desde config.status, omitir ciertos bytes y emitir la salida.
- Aplica un cifrado por sustitución simple con el comando
tr, luego descomprime con el comando xz y lo ejecuta.
Stage 2
- La Stage 2 es un script bash que modifica el proceso real de compilación.
- Parece tener un sistema de "extensión/parche" para poder ejecutar scripts nuevos sin seguir modificando los archivos de prueba.
- Incluye código para extraer archivos
.o e integrarlos en el proceso de compilación/enlazado.
Resumen
- Este proceso está muy bien oculto y está construido de forma compleja usando solo herramientas estándar de línea de comandos.
- Con una ejecución en 3 etapas y un sistema de "extensión", está diseñado pensando en el futuro para evitar tener que volver a modificar los archivos binarios de prueba.
- El hecho de que este ataque haya sido descubierto por casualidad deja muchas preguntas para la comunidad de seguridad.
Opinión de GN⁺
- Este artículo destaca la importancia de la seguridad de software y de los ataques a la cadena de suministro. Hace tomar conciencia de las vulnerabilidades que pueden surgir durante el proceso de compilación de software y recuerda la importancia de la revisión de código y las auditorías de seguridad.
- Las técnicas de ofuscación y los métodos de ataque multietapa muestran lo sofisticado que puede ser un atacante al infiltrarse en un sistema. Estas técnicas también tienen valor educativo para especialistas en seguridad.
- Otras herramientas o proyectos de seguridad con funciones similares incluyen Dependency-Check de OWASP y Nexus Platform de Sonatype. Ayudan a identificar vulnerabilidades de seguridad en las dependencias de software.
- Al adoptar este tipo de tecnología, es necesario reforzar la seguridad en todas las etapas de la cadena de suministro de software. La ventaja es elevar la seguridad del sistema; la desventaja es que, si un atacante usa estos métodos, la detección puede volverse difícil.
- Este incidente revela tanto las fortalezas como las debilidades de la comunidad de código abierto. La revisión y las contribuciones impulsadas por la comunidad son importantes para el crecimiento y la seguridad de los proyectos, pero al mismo tiempo existe el riesgo de contribuyentes maliciosos.
Aún no hay comentarios.