ID

VAR-E-201212-0052


CVE

cve_id:CVE-2012-5340

Trust: 2.4

sources: BID: 56875 // PACKETSTORM: 118707 // EXPLOIT-DB: 23246 // EDBNET: 45401

EDB ID

23246


TITLE

SumatraPDF 2.1.1/MuPDF 1.0 - Integer Overflow - Windows dos Exploit

Trust: 0.6

sources: EXPLOIT-DB: 23246

DESCRIPTION

SumatraPDF 2.1.1/MuPDF 1.0 - Integer Overflow. CVE-2012-5340CVE-88305CVE-88304 . dos exploit for Windows platform

Trust: 0.6

sources: EXPLOIT-DB: 23246

AFFECTED PRODUCTS

vendor:sumatrapdfmodel:2.1.1/mupdfscope:eqversion:1.0

Trust: 1.0

vendor:sumatramodel:mupdf integerscope:eqversion:2.1.1/1.0

Trust: 0.5

vendor:sumatramodel:pdf sumatra pdfscope:eqversion:2.1.1

Trust: 0.3

vendor:mupdfmodel:for iosscope:eqversion:1.1

Trust: 0.3

vendor:mupdfmodel:mupdfscope:eqversion:1.0

Trust: 0.3

vendor:mupdfmodel:mupdfscope:neversion:1.1

Trust: 0.3

sources: BID: 56875 // PACKETSTORM: 118707 // EXPLOIT-DB: 23246

EXPLOIT

Sumatra 2.1.1/MuPDF 1.0 Integer Overflow
=======================================

There is an integer overflow on the MuPDF in the lex_number() function
which can be triggered using a corrupt PDF file with ObjStm.

I'm attaching a file that reproduces the problem with the original
unmodified file. The ObjStm was modified to include big numbers.

The easy way to fix is to update to the latest version of MuPDF library.

Affected products
=================

MuPDF 1.0 (previous release)
MuPDF for iOS 1.1 (current release)
Sumatra 2.1.1 (current stable release)

Fixed
=====

MuPDF 1.1
http://git.ghostscript.com/?p=mupdf.git;a=commitdiff;h=f919270b6a732ff45c3ba2d0c105e2b39e9c9bc9
Sumatra Pre-release version:
http://blog.kowalczyk.info/software/sumatrapdf/prerelease.html

CVE
====
CVE-2012-5340

Flaw details
============

On the FIXME line occurs an integer overflow, which can be later abused to
write to memory:

File: pdf_lex.c
static int lex_number(fz_stream *f, pdf_lexbuf *buf, int c)
{
.....

while (1)
{
int c = fz_read_byte(f);
switch (c)
{
case '.':
goto loop_after_dot;
case RANGE_0_9:
i = 10*i + c - '0';
/* FIXME: Need overflow check here; do we care? */
break;
default:
fz_unread_byte(f);
/* Fallthrough */
case EOF:
if (neg)
i = -i;
buf->i = i;
return PDF_TOK_INT;
}
}
....

file: pdf_repair.c
static void pdf_repair_obj_stm(pdf_document *xref, int num, int gen)
{
....

for (i = 0; i < count; i++)
{
tok = pdf_lex(stm, &buf);
if (tok != PDF_TOK_INT)
fz_throw(ctx, "corrupt object stream (%d %d R)",
num, gen);

n = buf.i; // n can take negative values when an integer
overflow occurs
if (n >= xref->len)
pdf_resize_xref(xref, n + 1);

xref->table[n].ofs = num; // Writes
xref->table[n].gen = i;
xref->table[n].stm_ofs = 0;

POC
====
Attached proof of concept.
https://github.com/offensive-security/exploitdb-bin-sploits/raw/master/bin-sploits/23246.tar.gz

!Exploitable output
===================

MuPDF:

Description: User Mode Write AV
Short Description: WriteAV
Exploitability Classification: EXPLOITABLE
Recommended Bug Title: Exploitable - User Mode Write AV starting at
mupdf+0x000000000003e1a6 (Hash=0x0e1a1f61.0x5f702654)

User mode write access violations that are not near NULL are exploitable.

Sumatra:

SumatraPDF!pdf_repair_obj_stms+0x94
SumatraPDF!pdf_open_document_with_stream+0x2c3
SumatraPDF!PdfEngineImpl::LoadFromStream+0xaa
SumatraPDF!PdfEngineImpl::Load+0x179
SumatraPDF!PdfEngine::CreateFromFile+0x80
SumatraPDF!EngineManager::CreateEngine+0x82
SumatraPDF!LoadDocIntoWindow+0x266
SumatraPDF!LoadDocumentOld+0x41f
SumatraPDF!LoadDocument+0xc
SumatraPDF!LoadOnStartup+0x89
SumatraPDF!WinMain+0x57c
SumatraPDF!__tmainCRTStartup+0x142
SumatraPDF!WinMainCRTStartup+0xf
kernel32!BaseThreadInitThunk+0x12
ntdll32!RtlInitializeExceptionChain+0x63
ntdll32!RtlInitializeExceptionChain+0x36
Instruction Address: 0x00000000775315de

Description: User Mode Write AV
Short Description: WriteAV
Exploitability Classification: EXPLOITABLE
Recommended Bug Title: Exploitable - User Mode Write AV starting at
ntdll32!ZwRaiseException+0x0000000000000012
(Hash=0x16621b14.0x14396738)

User mode write access violations that are not near NULL are exploitable.

Trust: 1.0

sources: EXPLOIT-DB: 23246

EXPLOIT LANGUAGE

txt

Trust: 0.6

sources: EXPLOIT-DB: 23246

PRICE

free

Trust: 0.6

sources: EXPLOIT-DB: 23246

TYPE

Integer Overflow

Trust: 1.0

sources: EXPLOIT-DB: 23246

TAGS

tag:exploit

Trust: 0.5

tag:overflow

Trust: 0.5

tag:proof of concept

Trust: 0.5

sources: PACKETSTORM: 118707

CREDITS

beford

Trust: 0.6

sources: EXPLOIT-DB: 23246

EXTERNAL IDS

db:NVDid:CVE-2012-5340

Trust: 2.4

db:EXPLOIT-DBid:23246

Trust: 2.2

db:0DAYTODAYid:19931

Trust: 0.6

db:EDBNETid:19877

Trust: 0.6

db:EDBNETid:45401

Trust: 0.6

db:PACKETSTORMid:118707

Trust: 0.5

db:BIDid:56875

Trust: 0.3

sources: BID: 56875 // PACKETSTORM: 118707 // EXPLOIT-DB: 23246 // EDBNET: 19877 // EDBNET: 45401

REFERENCES

url:https://nvd.nist.gov/vuln/detail/cve-2012-5340

Trust: 2.1

url:https://0day.today/exploits/19931

Trust: 0.6

url:https://www.exploit-db.com/exploits/23246/

Trust: 0.6

url:http://blog.kowalczyk.info/software/sumatrapdf/prerelease.html

Trust: 0.3

url:https://www.mupdf.com/

Trust: 0.3

url:http://blog.kowalczyk.info/software/sumatrapdf/free-pdf-reader.html

Trust: 0.3

url:http://git.ghostscript.com/?p=mupdf.git;a=commitdiff;h=f919270b6a732ff45c3ba2d0c105e2b39e9c9bc9

Trust: 0.3

sources: BID: 56875 // PACKETSTORM: 118707 // EXPLOIT-DB: 23246 // EDBNET: 19877 // EDBNET: 45401

SOURCES

db:BIDid:56875
db:PACKETSTORMid:118707
db:EXPLOIT-DBid:23246
db:EDBNETid:19877
db:EDBNETid:45401

LAST UPDATE DATE

2022-07-27T09:12:10.975000+00:00


SOURCES UPDATE DATE

db:BIDid:56875date:2012-12-09T00:00:00

SOURCES RELEASE DATE

db:BIDid:56875date:2012-12-09T00:00:00
db:PACKETSTORMid:118707date:2012-12-09T17:22:22
db:EXPLOIT-DBid:23246date:2012-12-09T00:00:00
db:EDBNETid:19877date:2012-12-09T00:00:00
db:EDBNETid:45401date:2012-12-09T00:00:00