viernes, 20 de abril de 2001

Grave vulnerabilidad en PGP para Windows

Todas las versiones de PGP para Windows posteriores a la 5.0 (incluida)
se ven afectadas por una grave vulnerabilidad por la cual una acción tan
habitual como incorporar una clave pública o verificar una firma adjunta
en un archivo puede provocar la ejecución de código en la máquina.
Este problema ha pasado desapercibido a lo largo de un gran número de
versiones del programa viene heredado desde la versión 5.0, hasta que
@stake lo ha descubierto recientemente. El problema reside en la
envoltura ASCII con que PGP dota a determinados archivos, el ejemplo más
clásico el fichero que contiene la clave pública de un usuario. Los
archivos críticos son aquellos que contienen claves de usuarios
(publicas y/o privadas), archivos de firmas separados y archivos
cifrados.

En general se puede determinar que las extensiones que comúnmente
representan archivos PGP con una armadura ASCII son los .asc (archivos
genéricos con envoltura ASCII), .pgp (archivos cifrados PGP) y .sig
(archivo de firma PGP separada).

La vulnerabilidad recae en el analizador encargado de procesar el
armazón ASCII de los ficheros afectados, de forma que si dicha armadura
ASCII se construye de forma maliciosa un atacante podrá esconder un
ejecutable dentro del archivo. Así, cuando PGP procese dicho archivo
malicioso, el ejecutable quedará grabado en el directorio de trabajo.

La única señal para el usuario de que ha ocurrido algo extraño es la
aparición de un mensaje de error en el que se indicará que el archivo no
contenía ningún tipo de información PGP.

El problema se agrava si el archivo extraído es una DLL, ya que debido a
la forma en que Windows carga estas librerías muchas aplicaciones pueden
ser engañadas para cargar la DLL maliciosa y de esta forma lograr la
ejecución automática del código. En este caso la ejecución del código
incluido en la DLL es debido al propio funcionamiento de Windows, no a
ningún problema interno de PGP.

Network Associates ha publicado el parche que corrige este problema para
las versiones 7.0.4 y 7.0.3 por lo que se recomienda a todos los
usuarios de esta suite de seguridad su actualización y la aplicación del
correspondiente parche. Los parches correspondientes pueden descargarse
de las siguientes direcciones:
PGP Desktop Security 7.0.4 Hotfix 1:

http://download.nai.com/products/licensed/pgp/desktop_security/windows/
version_7.04/hotfix/PGPDS704Hotfix1.zip
PGPfreeware 7.0.3 Hotfix 1:

http://download.nai.com/products/freeware/pgp/windows/version_7.03/
hotfix/PGPfreeware703Hotfix1.zip

Para demostrar la gravedad del problema @stake ha creado un archivo .sig
que al ser procesado por PGP crea una dll con el nombre pgpsc.dll en el
directorio actual.



Antonio Ropero
antonior@hispasec.com


Más información:

@stake:
http://www.atstake.com/research/advisories/2001/a040901-1.txt

Kriptopolis:
http://www.kriptopolis.com/jmg/20010419.html