TIFF es un formato comúnmente utilizado para almacenar imágenes, incluyendo fotografías y galerías. Cada archivo en formato .tiff comienza con un campo de 2 bytes que indica la clasificación de bytes: "II" para terminaciones pequeñas y "MM" para terminaciones mas grandes . Los siguientes dos bytes contienen el valor constante 42. Estos campos van seguidos por una cabecera adicional y los datos adicionales de la imagen.
OS X 10.4.6 |
Cuando se esta procesando un archivo de imagen malformado con extensión .tiff, la función PredictorVSetField() propiamente no revisa los datos del archivo malformado lo que ocasiona que la aplicación que abrio dicha imagen se colisione y por consiguiente falle. Este problema se encuentra en el corazón del análisis de archivos .tiff por lo que las aplicaciones Preview, Finder, QuickTime y Safari pueden ser vulnerables.
A continnuación se describe detalla el problema encontrado en OS X (PPC) 10.4.6 utilizando Preview dentro de gdb:
Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: KERN_PROTECTION_FAILURE at address: 0x00000020
0x91c738f8 in PredictorVSetField ()
(gdb) bt
#0 0x91c738f8 in PredictorVSetField ()
#1 0x91c71da4 in _cg_TIFFSetField ()
#2 0x91c734b4 in TIFFFetchNormalTag ()
#3 0x91c7104c in TIFFReadDirectory ()
#4 0x91c706b0 in _cg_TIFFClientOpen ()
#5 0x919f2db8 in _CGImagePluginImageCountTIFF ()
#6 0x919f2c0c in CGImageSourceGetCount ()
#7 0x00004a84 in -- ()
#8 0x93a52b68 in -[NSDocument _initWithContentsOfURL:ofType:error:] ()
#9 0x938dc360 in -[NSDocument initWithContentsOfURL:ofType:error:] ()
#10 0x00003f50 in -- ()
#11 0x92984a00 in __NSFireMainThreadPerform ()
#12 0x90814f2c in __CFRunLoopPerformPerform ()
#13 0x907e4a68 in __CFRunLoopDoSources0 ()
#14 0x907e3f98 in __CFRunLoopRun ()
#15 0x907e3a18 in CFRunLoopRunSpecific ()
#16 0x9321e980 in RunCurrentEventLoopInMode ()
#17 0x9321df8c in ReceiveNextEventCommon ()
#18 0x9321de80 in BlockUntilNextEventMatchingListInMode ()
#19 0x93721104 in _DPSNextEvent ()
#20 0x93720dc8 in -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] ()
#21 0x9371d30c in -[NSApplication run] ()
#22 0x9380de68 in NSApplicationMain ()
#23 0x00030fa4 in -- ()
#24 0x00030e48 in -- ()
(gdb) disas 0x91c738f8
Dump of assembler code for function PredictorVSetField:
0x91c738e8
0x91c738ec
0x91c738f0
0x91c738f4
0x91c738f8
0x91c738fc
0x91c73900
0x91c73904
0x91c73908
0x91c7390c
0x91c73910
0x91c73914
0x91c73918
0x91c7391c
0x91c73920
0x91c73924
0x91c73928
End of assembler dump.
(gdb)
Negación de Servicio
Por el momento no se encentra disponible una actualización que solucione el problema.
La Coordinación de Seguridad de la Información/UNAM-CERT agradece el apoyo en la elaboración ó traducción y revisión de éste Documento a:
UNAM-CERT
Equipo de Respuesta a Incidentes UNAM
Coordinación de Seguridad de la Información
incidentes at seguridad.unam.mx
phishing at seguridad.unam.mx
http://www.cert.org.mx
http://www.seguridad.unam.mx
ftp://ftp.seguridad.unam.mx
Tel: 56 22 81 69
Fax: 56 22 80 47
Aviso legal |
Créditos |
Staff |
Administración
Copyright © Todos los derechos reservados
UNAM - CERT