Skip to content

Latest commit

 

History

History
 
 

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

README.md

CVE-2006-2025

Experiment Environment

Ubuntu 14.04.5LTS

INSTALL & Configuration

wget https://github.com/mudongliang/source-packages/raw/master/CVE-2006-2025/tiff-3.8.0.tar.gz
tar -xvf tiff-3.8.0.tar.gz
cd tiff-3.8.0
./configure
make
sudo make install

Problems in Installation & Configuration

How to trigger vulnerability

/usr/local/bin/tiffinfo input.tiff.11

PoCs

LibTiff TIFFFetchData Integer Overflow Vulnerability

LibTiff 3.x - TIFFFetchData Integer Overflow

Vulnerability Details & Patch

Root Cause

        if (!isMapped(tif)) {
                if (!SeekOK(tif, dir->tdir_offset))
                        goto bad;
                if (!ReadOK(tif, cp, cc))
                        goto bad;
        } else {
                if (dir->tdir_offset + cc > tif->tif_size)
                        goto bad;
                _TIFFmemcpy(cp, tif->tif_base + dir->tdir_offset, cc);
        }

Stack Trace

Patch

--- tiff-v3.5.7/libtiff/tif_dirread.c.multiple	2006-04-26 08:52:01.000000000 -0400
+++ tiff-v3.5.7/libtiff/tif_dirread.c	2006-04-26 08:52:24.000000000 -0400
@@ -683,13 +683,20 @@
 	int w = tiffDataWidth[dir->tdir_type];
 	tsize_t cc = dir->tdir_count * w;
 
+	/* Check for overflow. */
+	if (!dir->tdir_count || !w || cc / w != (tsize_t)dir->tdir_count)
+		goto bad;
+
 	if (!isMapped(tif)) {
 		if (!SeekOK(tif, dir->tdir_offset))
 			goto bad;
 		if (!ReadOK(tif, cp, cc))
 			goto bad;
 	} else {
-		if (dir->tdir_offset + cc > tif->tif_size)
+		/* Check for overflow. */
+		if ((tsize_t)dir->tdir_offset + cc < (tsize_t)dir->tdir_offset
+		    || (tsize_t)dir->tdir_offset + cc < cc
+		    || (tsize_t)dir->tdir_offset + cc > (tsize_t)tif->tif_size)
 			goto bad;
 		_TIFFmemcpy(cp, tif->tif_base + dir->tdir_offset, cc);
 	}

References

https://bugzilla.redhat.com/show_bug.cgi?id=189933