Bug 1032273 (CVE-2013-6369)

Summary: CVE-2013-6369 jbigkit: stack-based buffer overflow flaw
Product: [Other] Security Response Reporter: Vincent Danen <vdanen>
Component: vulnerabilityAssignee: Red Hat Product Security <security-response-team>
Status: CLOSED CURRENTRELEASE QA Contact:
Severity: medium Docs Contact:
Priority: medium    
Version: unspecifiedCC: carnil, fweimer, jpopelka, jrusnack, pfrields, security-response-team
Target Milestone: ---Keywords: Security
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2014-11-10 09:46:02 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 1083412, 1085362    
Bug Blocks: 1032191, 1032275    
Attachments:
Description Flags
upstream patch none

Description Vincent Danen 2013-11-19 21:27:13 UTC
Florian Weimer found a stack-based buffer overflow flaw in the libjbig library (part of jbigkit).  A specially-crafted image file read by libjbig could be used to cause a program linked to libjbig to crash or, potentially, to execute arbitrary code.

Acknowledgements:

This issue was discovered by Florian Weimer of the Red Hat Product Security Team.

Comment 2 Florian Weimer 2013-11-20 09:25:01 UTC
The problematic loop is the while loop in this snippet from libjbig/jbig.c:jbg_dec_in():

  /* read in DPTABLE */
  if (s->bie_len < 20 + 1728 && 
      (s->options & (JBG_DPON | JBG_DPPRIV | JBG_DPLAST)) ==
      (JBG_DPON | JBG_DPPRIV)) {
    assert(s->bie_len >= 20);
    while (s->bie_len < 20 + 1728 && *cnt < len)
      s->buffer[s->bie_len++ - 20] = data[(*cnt)++];
    if (s->bie_len < 20 + 1728) 
      return JBG_EAGAIN;
    if (!s->dppriv || s->dppriv == jbg_dptable)
      s->dppriv = (char *) checked_malloc(1728, sizeof(char));
    jbg_dppriv2int(s->dppriv, s->buffer);
  }

s->buffer has only 20 bytes, and the loop copies much more than that.

Comment 3 Vincent Danen 2013-11-20 20:02:08 UTC
Created attachment 826828 [details]
upstream patch

Patch supplied by upstream to correct the flaw.

Comment 11 Huzaifa S. Sidhpurwala 2014-04-08 12:57:23 UTC
Public via:

https://www.cl.cam.ac.uk/~mgk25/jbigkit/CHANGES

Upstream has released jbigkit-2.1.tar.gz to fix this issue:
https://www.cl.cam.ac.uk/~mgk25/jbigkit/

Comment 12 Huzaifa S. Sidhpurwala 2014-04-08 12:58:54 UTC
Created jbigkit tracking bugs for this issue:

Affects: fedora-all [bug 1085362]

Comment 13 Fedora Update System 2014-04-15 15:55:53 UTC
jbigkit-2.0-10.fc20 has been pushed to the Fedora 20 stable repository.  If problems still persist, please make note of it in this bug report.

Comment 14 Fedora Update System 2014-04-23 04:32:54 UTC
jbigkit-2.0-9.fc19 has been pushed to the Fedora 19 stable repository.  If problems still persist, please make note of it in this bug report.

Comment 15 Florian Weimer 2014-11-10 09:46:02 UTC
Statement:

This issue did not affect the versions of jbigkit as shipped with Red Hat Enterprise Linux 7, as the issue was corrected before the release of Red Hat Enterprise Linux 7.