Bug 837577 (CVE-2012-3401)

Summary: CVE-2012-3401 libtiff (tiff2pdf): Heap-based buffer overflow due to improper initialization of T2P context struct pointer
Product: [Other] Security Response Reporter: Jan Lieskovsky <jlieskov>
Component: vulnerabilityAssignee: Red Hat Product Security <security-response-team>
Status: CLOSED ERRATA QA Contact:
Severity: medium Docs Contact:
Priority: medium    
Version: unspecifiedCC: henri, mancha1, security-response-team, tgl
Target Milestone: ---Keywords: Security
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard: impact=moderate,public=20120718,reported=20120703,source=redhat,cvss2=6.8/AV:N/AC:M/Au:N/C:P/I:P/A:P,rhel-5/libtiff=affected,rhel-6/libtiff=affected,fedora-all/libtiff=affected,cwe=CWE-122[auto]
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2012-12-21 03:39:43 EST Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Bug Depends On: 841736, 880907, 885308, 885309, 885310, 885311    
Bug Blocks: 837581    
Attachments:
Description Flags
libtiff-4.0.2-tiff2pdf.patch none

Description Jan Lieskovsky 2012-07-04 06:01:43 EDT
A heap-based buffer overflow flaw was found in the way tiff2pdf, a TIFF image to a PDF document conversion tool, of libtiff, a library of functions for manipulating TIFF (Tagged Image File Format) image format files, performed write of TIFF image content into particular PDF document file, when not properly initialized T2P context struct pointer has been provided by tiff2pdf (application requesting the conversion) as one of parameters for the routine performing the write. A remote attacker could provide a specially-crafted TIFF image format file, that when processed by tiff2pdf would lead to tiff2pdf executable crash or, potentially, arbitrary code execution with the privileges of the user running the tiff2pdf binary.


Issue found by: Huzaifa Sidhpurwala, Red Hat Security Response Team
Comment 15 Tom Lane 2012-07-18 11:13:42 EDT
I have pushed the patches attached to this BZ into upstream libtiff CVS.  They don't seem to have a cvsweb server, but instructions for anonymous CVS access are at http://www.remotesensing.org/libtiff/
Comment 16 Huzaifa S. Sidhpurwala 2012-07-18 22:51:59 EDT
This is now public via:

http://seclists.org/oss-sec/2012/q3/88
Comment 18 mancha 2012-07-19 02:52:37 EDT
Hi. Do we have a similar situation at tools/tiff2pdf.c:3184?
Comment 19 Huzaifa S. Sidhpurwala 2012-07-19 04:32:32 EDT
(In reply to comment #16)
> This is now public via:
> 
> http://seclists.org/oss-sec/2012/q3/88

The above link is wrong, correct link is:
http://seclists.org/oss-sec/2012/q3/101
Comment 21 Tom Lane 2012-07-19 10:20:04 EDT
(In reply to comment #18)
> Hi. Do we have a similar situation at tools/tiff2pdf.c:3184?

This question is pretty content-free, since I have no idea what version of the file you're looking at.  How about quoting code instead of expecting me to guess?
Comment 22 mancha 2012-07-19 10:49:47 EDT
(In reply to comment #21)
> This question is pretty content-free, since I have no idea what version of
> the file you're looking at.  How about quoting code instead of expecting me
> to guess?

Taking my cues from your patch, I looked at v4.0.2.

Below is the extract from t2p_process_ojpeg_tables() which I referred to:

3159					t2p->t2p_error = T2P_ERR_ERROR;
3160					return(0);
3161			}
3162			if(!TIFFGetField(input, TIFFTAG_JPEGPOINTTRANSFORM, &pt)){
3163				TIFFError(TIFF2PDF_MODULE, 
3164					"Missing JPEGPointTransform field in OJPEG image %s", 
3165					TIFFFileName(input));
3166					t2p->t2p_error = T2P_ERR_ERROR;
3167				return(0);
3168			}
3169		}
3170		if(!TIFFGetField(input, TIFFTAG_YCBCRSUBSAMPLING, &h_samp, &v_samp)){
3171			h_samp=1;
3172			v_samp=1;
3173		}
3174		if(t2p->pdf_ojpegdata != NULL){
3175			_TIFFfree(t2p->pdf_ojpegdata);
3176			t2p->pdf_ojpegdata=NULL;
3177		} 
3178		t2p->pdf_ojpegdata = _TIFFmalloc(2048);
3179		if(t2p->pdf_ojpegdata == NULL){
3180			TIFFError(TIFF2PDF_MODULE, 
3181				"Can't allocate %u bytes of memory for t2p_process_ojpeg_tables, %s", 
3182				2048, 
3183				TIFFFileName(input));
3184			return(0);
3185		}
Comment 23 Tom Lane 2012-07-19 11:48:30 EDT
Yeah, you're right, that should set t2p_error --- and looking through the file, I found a similar oversight in t2p_write_pdf().  These cases do not have any security content though, because AFAICS nothing will crash if pdf_ojpegdata (or pdf_xrefoffsets in the other place) is left null.  You might get a bogus additional error message, and/or failure to exit(1) as desired, but no worse.

I've pushed those fixes into upstream CVS, so they will be in the next releases, but I don't think they should be considered part of the CVE issue.
Comment 24 Huzaifa S. Sidhpurwala 2012-07-20 01:18:13 EDT
Created libtiff tracking bugs for this issue

Affects: fedora-all [bug 841736]
Comment 25 Fedora Update System 2012-07-26 18:23:59 EDT
libtiff-3.9.6-2.fc17 has been pushed to the Fedora 17 stable repository.  If problems still persist, please make note of it in this bug report.
Comment 26 Fedora Update System 2012-08-09 19:17:52 EDT
libtiff-3.9.6-2.fc16 has been pushed to the Fedora 16 stable repository.  If problems still persist, please make note of it in this bug report.
Comment 28 Jan Lieskovsky 2012-08-16 10:38:35 EDT
This issue affects the versions of the libtiff package, as shipped with Red Hat Enterprise Linux 5 and 6.
Comment 29 Jan Lieskovsky 2012-08-29 10:38:09 EDT
Statement:

The Red Hat Security Response Team has rated this issue as having moderate security impact. A future libtiff package update may address this issue in Red Hat Enterprise Linux 5 and 6. For additional information, refer to the Issue Severity Classification: https://access.redhat.com/security/updates/classification/.
Comment 30 Murray McAllister 2012-10-03 00:23:33 EDT
Acknowledgements:

This issue was discovered by Huzaifa Sidhpurwala of the Red Hat Security Response Team.
Comment 31 Huzaifa S. Sidhpurwala 2012-11-28 01:12:06 EST
Created libtiff tracking bugs for this issue

Affects: fedora-all [bug 880907]
Comment 33 errata-xmlrpc 2012-12-18 16:10:28 EST
This issue has been addressed in following products:

  Red Hat Enterprise Linux 5
  Red Hat Enterprise Linux 6

Via RHSA-2012:1590 https://rhn.redhat.com/errata/RHSA-2012-1590.html
Comment 35 Fedora Update System 2012-12-30 22:23:46 EST
libtiff-3.9.7-1.fc16 has been pushed to the Fedora 16 stable repository.  If problems still persist, please make note of it in this bug report.
Comment 36 Fedora Update System 2012-12-30 22:25:55 EST
libtiff-3.9.7-1.fc17 has been pushed to the Fedora 17 stable repository.  If problems still persist, please make note of it in this bug report.
Comment 37 Fedora Update System 2013-01-11 19:27:14 EST
libtiff-4.0.3-2.fc18 has been pushed to the Fedora 18 stable repository.  If problems still persist, please make note of it in this bug report.