From b4d6cf6836ce025ba1811b7bbec52680c7204223 Mon Sep 17 00:00:00 2001 From: Jay Berkenbilt Date: Sun, 15 Apr 2018 16:11:22 -0400 Subject: [PATCH] Limit depth of nesting in direct objects (fixes #202) This fixes CVE-2018-9918. --- ChangeLog | 5 +++++ libqpdf/QPDFObjectHandle.cc | 26 ++++++++++++++++++++------ qpdf/qpdf.testcov | 1 + qpdf/qtest/qpdf.test | 1 + qpdf/qtest/qpdf/issue-146.out | 4 +--- qpdf/qtest/qpdf/issue-202.out | 5 +++++ qpdf/qtest/qpdf/issue-202.pdf | Bin 0 -> 328700 bytes 7 files changed, 33 insertions(+), 9 deletions(-) create mode 100644 qpdf/qtest/qpdf/issue-202.out create mode 100644 qpdf/qtest/qpdf/issue-202.pdf diff --git a/ChangeLog b/ChangeLog index 3a88135c..17c7a1c4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2018-04-15 Jay Berkenbilt + + * Arbitrarily limit the depth of data structures represented by + direct object. This is CVE-2018-9918. Fixes #202. + 2018-03-06 Jay Berkenbilt * 8.0.2: release diff --git a/libqpdf/QPDFObjectHandle.cc b/libqpdf/QPDFObjectHandle.cc index c178a492..149668eb 100644 --- a/libqpdf/QPDFObjectHandle.cc +++ b/libqpdf/QPDFObjectHandle.cc @@ -1487,12 +1487,26 @@ QPDFObjectHandle::parseInternal(PointerHolder input, case QPDFTokenizer::tt_array_open: case QPDFTokenizer::tt_dict_open: - olist_stack.push_back(std::vector()); - state = st_start; - offset_stack.push_back(input->tell()); - state_stack.push_back( - (token.getType() == QPDFTokenizer::tt_array_open) ? - st_array : st_dictionary); + if (olist_stack.size() > 500) + { + QTC::TC("qpdf", "QPDFObjectHandle too deep"); + warn(context, + QPDFExc(qpdf_e_damaged_pdf, input->getName(), + object_description, + input->getLastOffset(), + "ignoring excessively deeply nested data structure")); + object = newNull(); + state = st_top; + } + else + { + olist_stack.push_back(std::vector()); + state = st_start; + offset_stack.push_back(input->tell()); + state_stack.push_back( + (token.getType() == QPDFTokenizer::tt_array_open) ? + st_array : st_dictionary); + } break; case QPDFTokenizer::tt_bool: diff --git a/qpdf/qpdf.testcov b/qpdf/qpdf.testcov index 5374302f..3f055a86 100644 --- a/qpdf/qpdf.testcov +++ b/qpdf/qpdf.testcov @@ -335,3 +335,4 @@ QPDFObjectHandle numeric non-numeric 0 QPDFObjectHandle erase array bounds 0 qpdf-c called qpdf_check_pdf 0 QPDF xref loop 0 +QPDFObjectHandle too deep 0 diff --git a/qpdf/qtest/qpdf.test b/qpdf/qtest/qpdf.test index 92a9412b..b27b4c82 100644 --- a/qpdf/qtest/qpdf.test +++ b/qpdf/qtest/qpdf.test @@ -236,6 +236,7 @@ my @bug_tests = ( ["148", "free memory on bad flate", 2], ["149", "xref prev pointer loop", 3], ["150", "integer overflow", 2], + ["202", "even more deeply nested dictionary", 2], ); $n_tests += scalar(@bug_tests); foreach my $d (@bug_tests) diff --git a/qpdf/qtest/qpdf/issue-146.out b/qpdf/qtest/qpdf/issue-146.out index 79bb8118..a275957f 100644 --- a/qpdf/qtest/qpdf/issue-146.out +++ b/qpdf/qtest/qpdf/issue-146.out @@ -1,7 +1,5 @@ WARNING: issue-146.pdf: file is damaged WARNING: issue-146.pdf: can't find startxref WARNING: issue-146.pdf: Attempting to reconstruct cross-reference table -WARNING: issue-146.pdf (trailer, offset 20728): unknown token while reading object; treating as string -WARNING: issue-146.pdf (trailer, offset 20732): unexpected EOF -WARNING: issue-146.pdf (trailer, offset 20732): parse error while reading object +WARNING: issue-146.pdf (trailer, offset 695): ignoring excessively deeply nested data structure issue-146.pdf: unable to find trailer dictionary while recovering damaged file diff --git a/qpdf/qtest/qpdf/issue-202.out b/qpdf/qtest/qpdf/issue-202.out new file mode 100644 index 00000000..edac1f2d --- /dev/null +++ b/qpdf/qtest/qpdf/issue-202.out @@ -0,0 +1,5 @@ +WARNING: issue-202.pdf (trailer, offset 55770): ignoring excessively deeply nested data structure +WARNING: issue-202.pdf: file is damaged +WARNING: issue-202.pdf (offset 54769): expected trailer dictionary +WARNING: issue-202.pdf: Attempting to reconstruct cross-reference table +issue-202.pdf: unable to find trailer dictionary while recovering damaged file diff --git a/qpdf/qtest/qpdf/issue-202.pdf b/qpdf/qtest/qpdf/issue-202.pdf new file mode 100644 index 0000000000000000000000000000000000000000..193d58a1a3d5eca1bdc04c4db0037305ce2be34c GIT binary patch literal 328700 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 PrB)KX#*OWIb=LcT@