El pasado
25 de octubre se conoció
un informe de Andrey
Bayora, publicado
en www.securityelf.org
donde informaba de
análisis efectuados
sobre soluciones antivirus
de múltiples
proveedores, en relación
con la denominada
Vulnerabilidad
por evasión
de detección
en programas antivirus
utilizando el llamado
byte mágico
falsificado
obteniendo resultados
realmente inquietantes,
tanto por la gravedad
de la vulnerabilidad
comentada sino también,
por la falta de correcciones
implementadas, siendo
que las empresas con
productos vulnerables
habían sido
informadas desde el
pasado 13 de julio
de 2005.
Finalmente, a partir
del día 24
de octubre, decide
hacer público
este informe, donde
no se menciona cuáles
fueron los productos
originalmente detectados
como vulnerables sino
que sólo detalla
el resultado final
de la lista de productos,
a la fecha, vulnerables
y no vulnerables.
ESET NOD32 Antivirus,
como en tantas otras
oportunidades, se
adelanta a los riesgos
futuros y ya en su
versión 2.50.25,
analizada el 24 de
junio pasado, había
demostrado que era
capaz de detectar
los virus invisibles....
para otras soluciones
antivirus.
He aquí un extracto
de los principales
párrafos de
dos artículos
que son muy descriptivos
y elocuentes sobre
esta vulnerabilidad.
Andrey
Bayora
http://archives.neohapsis.com/archives/fulldisclosure/2005-10/0504.html
Para más
detalles técnicos,
capturas de
pantalla y ejemplos,
por favor, lea
el artículo
completo en
http://www.securityelf.org/magicbyte.html
donde también
encontrará
un programa
de muestra “con
tres partes”
que contiene
tres “puntos
de ingreso de
ejecución”
diferentes,
dependiendo
de la extensión
del archivo
(.EXE, .HTML
o .EML).
¡Simplemente
cambie la extensión
y el mismo
archivo será
ejecutado por
(al menos) tres
diferentes programas!.
Con el aporte
de su autor,
Wayne Langlois
de www.diamondcs.com.au.
Nota
importante:
Una vulnerabilidad
similar puede
existir en muchos
otros productos
antivirus y/o
antiespía
así como
también
en programas
utilizados como
puertas de enlace.
Además,
es posible que
esto afecte
diversas soluciones
de “filtrado
de archivos”.
Severidad:
crítica
Descripción:
El problema existe
en el motor
de escaneo,
específicamente
en la rutina
que determina
el tipo de archivo.
Si algunos tipos
de archivos
analizados (.BAT,
.HTML y .EML)
se modificaran
para incluir
el byte
mágico
(magic byte)
de los archivos
EXE (MZ) en
su comienzo,
esto podría
provocar que
varios programas
antivirus no
pudieran detectar
el archivo malicioso,
ya que se interrumpiría
el flujo normal
del análisis
del antivirus
y muchos virus
existentes y
futuros no serían
detectados.
Nota:
En mi prueba,
utilicé
los encabezados
.EXE (MZ), pero
es posible utilizar
otros encabezados
(magic byte)
que igualmente
tendría
el mismo efecto.
Análisis:
Algunos tipos de
archivos como
.BAT, .HTML
y .EML pueden
ejecutarse adecuadamente
incluso si tienen
un comienzo
“sin relacionar”.
Por ejemplo,
en el caso de
archivos .BAT,
es posible agregar
datos “basura”
al comienzo
del fichero
sin alterar
la correcta
ejecución
del archivo
por lotes.
En mis pruebas,
utilicé
los encabezados
calc.exe (primeros
120 bytes –
mitad de la
sección
dosstub) para
agregar cinco
archivos diferentes
de virus existentes.
Además,
la prueba más
simple de esta
vulnerabilidad
es agregar únicamente
el magic
byte (MZ)
al archivo malicioso
existente y
controlar si
este archivo
es detectado
por el programa
antivirus.
Es importante que
tenga en cuenta
este no
es el caso donde
el cambio de
un archivo con
virus existente
trae como resultado
la interrupción
de la detección
por firma.
Hay
más detalles
y se explicita
la lógica
de la prueba
en http://www.securityelf.org/magicbyte.html.
Solución
intermedia:
No encontré
ninguna solución
efectiva que
no sea la aplicación
de parches al
motor vulnerable.
Créditos:
La idea para la
evaluación
de esta vulnerabilidad
surgió
durante los
análisis
de Wayne Langlois
en diamondcs.com.au,
quien sugirió
que los archivos
JPEG podrían
ser explotados
de esta forma.
Línea
de tiempo:
13 de julio de
2005 – Notificación
inicial al proveedor
16 de julio de
2005 – Segunda
notificación
al proveedor
Esperando…esperando…
24 de octubre de
2005 – Revelación
pública
(sin coordinar)
Wayne
Langlois
www.diamondcs.com.au
Cuando un módulo
de análisis
antivirus (o
similar) abre
un archivo para
verificarlo,
debe primero
determinar el
tipo de archivo
con el que se
encuentra: ¿Es
un ejecutable?
¿Es un
archivo de audio?.
Esto es importante
porque incrementa
la velocidad
de revisión
ya que ciertos
archivos irrelevantes
pueden omitirse
y únicamente
las firmas adecuadas
deben ser probadas.
También
reduce en gran
medida la posibilidad
de falsos positivos..
Para lograr la
detección
del tipo de
archivo los
primeros motores
simplemente
analizaban la
extensión
del archivo
(de forma tal
que un archivo
denominado "hello.exe"
se consideraba
un ejecutable)
sin embargo,
se detectó
rápidamente
que esto no
era suficiente.
Todos los motores
antivirus modernos
ahora analizan
los contenidos
del fichero
para determinar
el tipo de archivo.
Por ejemplo,
los archivos
ejecutables
(.EXE) comienzan
con los caracteres
“MZ” (0x4D5A).
No obstante, no
todos los tipos
de archivos
tienen encabezado,
como es el caso
de los archivos
de texto, e
incluso algunos
que sí
tienen encabezado
en realidad
soportan lo
que se denomina
encabezado flotante,
donde el mismo
puede comenzar
casi en cualquier
parte del fichero
(ya que el programa
que lo ejecuta
o presenta,
verifica el
contenido del
archivo en busca
del encabezado).
En otras palabras,
los datos no
relacionados
pueden agregarse
sin evitar o
afectar de manera
adversa la ejecución
y/o presentación
del archivo.
Esto realmente
complica la
situación
cuando se trata
de comprobar
el tipo de archivo,
porque los datos
agregados no
relacionados
pueden estar
escondidos tras
otro tipo de
fichero, aún
cuando será
ejecutado o
presentado de
todas formas
como su tipo
original.
Otro problema
es que, dado
que los datos
agregados pueden
ser de diferentes
longitudes,
es extremadamente
difícil
(y a veces imposible)
ubicar la fuente
de inicio original.
Otro inconveniente
está
en que algunos
encabezados
flotantes, tales
como HTML, distinguen
entre mayúsculas
y minúsculas,
por consiguiente
"<html>",
"<HTML>",
"<HtMl>"
entre otros
deberán
ser todos verificados..
A comienzos de
este año
me encontré
con Andrey porque
ambos estábamos
investigando
de forma independiente
la vulnerabilidad
MS04-028 JPEG.
Yo desarrollé
un motor de
análisis
simple y gratuito
para detectar
los archivos
afectados (JPEGScan)
y Andrey desarrolló
una alteración
inteligente
de la vulnerabilidad
existente, que
desbarataba
la mayoría
de los motores
en ese momento,
incluso aquellos
que podían
tratar con la
vulnerabilidad
MS04-028.
JPEG es uno
de esos formatos
que soporta
encabezado flotante,
por lo tanto,
fue en este
momento que
compartí
mis ideas y
hallazgos con
él en
relación
con la detección
del tipo de
archivo y la
inserción
de encabezado
falso.
Asumiendo que
sería
sólo
una cuestión
de tiempo antes
que esto explotara,
no me sorprendí
cuando algunos
meses más
tarde Andrey
volvió
a comunicarse
conmigo y me
comentó
acerca de explotaciones
exitosas que
son presentadas
aquí.
Esta es una de
las vulnerabilidades
recientes más
significativas
detectadas en
productos antivirus
dado que afecta
a la mayoría
de los programas
de escaneo y
probablemente
obligará
a los desarrolladores
de estas soluciones
a modificar
la forma en
que los tipos
de archivos
son detectados.
Esto incluso
puede requerir
el análisis
completo del
archivo en busca
de encabezado
flotante, en
cuyo caso la
velocidad de
verificación
se reduciría
significativamente,
aunque también
sería
posible desarrollar
algoritmos de
análisis
de encabezado
más inteligentes.
También
frente a esta
vulnerabilidad
¡NOD32
continúa
protegiendo
tempranamente
su mundo digital
y con la más
rápida
velocidad de
análisis
del mercado!
|