From 17f4b42dcd8b5f7c3bb6438f77072749e66b7484 Mon Sep 17 00:00:00 2001 From: Larry Gritz Date: Thu, 5 Dec 2024 14:37:10 -0800 Subject: [PATCH] fix: Detect invalid ICC profile tags (#4557) Affects jpeg, tiff, and other formats with embedded ICC profiles. Corrupted/invalid tag offset and/or length values were causing us to touch memory outside the memory allocated for the profile. Fixes #4551 Not sure if this is wise or not, but for JPEGs, I also enabled some previously commented-out code that has the effect of treating a file with a verifiably corrupted/nonsensical ICC profile block as a failed file. If people ever complain about this in the future, maybe we'll come back and add some kind of global option that lets the app express how tolerant OIIO readers should be about corruptions in files -- do you assume that the whole file is bogus or malicious upon discovering the first invalidity, or do you press on and hope you can get something else useful from the pixels? Let's be cautious for now. --------- Signed-off-by: Larry Gritz --- src/jpeg.imageio/jpeginput.cpp | 6 ++--- src/libOpenImageIO/icc.cpp | 18 +++++++++++---- testsuite/jpeg-corrupt/ref/out-alt.txt | 2 ++ testsuite/jpeg-corrupt/ref/out-alt2.txt | 2 ++ testsuite/jpeg-corrupt/ref/out-alt3.txt | 21 ++++++++++++++++++ testsuite/jpeg-corrupt/ref/out.txt | 2 ++ testsuite/jpeg-corrupt/run.py | 4 ++++ .../jpeg-corrupt/src/corrupt-icc-4551.jpg | Bin 0 -> 40956 bytes 8 files changed, 48 insertions(+), 7 deletions(-) create mode 100644 testsuite/jpeg-corrupt/ref/out-alt3.txt create mode 100644 testsuite/jpeg-corrupt/src/corrupt-icc-4551.jpg diff --git a/src/jpeg.imageio/jpeginput.cpp b/src/jpeg.imageio/jpeginput.cpp index 20f7a5f4f3..193055a49e 100644 --- a/src/jpeg.imageio/jpeginput.cpp +++ b/src/jpeg.imageio/jpeginput.cpp @@ -437,9 +437,9 @@ JpgInput::read_icc_profile(j_decompress_ptr cinfo, ImageSpec& spec) std::string errormsg; bool ok = decode_icc_profile(icc_buf, spec, errormsg); if (!ok) { - // errorfmt("Could not decode ICC profile: {}\n", errormsg); - // return false; - // Nah, just skip an ICC specific error? + errorfmt("Possible corrupt file, could not decode ICC profile: {}\n", + errormsg); + return false; } return true; diff --git a/src/libOpenImageIO/icc.cpp b/src/libOpenImageIO/icc.cpp index e5b8a54d50..3916ae78a5 100644 --- a/src/libOpenImageIO/icc.cpp +++ b/src/libOpenImageIO/icc.cpp @@ -304,11 +304,13 @@ decode_icc_profile(cspan iccdata, ImageSpec& spec, std::string& error) if (!extract(iccdata, offset, tag, error)) return false; string_view signature(tag.signature, 4); - if (tag.offset + tag.size > iccdata.size()) { - error = format("ICC profile tag {} extends past end", signature); - return false; + if (!check_span(iccdata, iccdata.data() + tag.offset, + std::max(4U, tag.size))) { + error = format( + "ICC profile tag {} appears to contain corrupted/invalid data", + signature); + return false; // Non-sensical: tag extends beyond icc data block } - string_view typesignature((const char*)iccdata.data() + tag.offset, 4); // Strutil::print(" tag {} type {} offset {} size {}\n", signature, // typesignature, tag.offset, tag.size); @@ -360,6 +362,14 @@ decode_icc_profile(cspan iccdata, ImageSpec& spec, std::string& error) // Strutil::print( // "eng len={} stfoffset={} ({:x}) wcharsize={}\n", len, // stroffset, tag.offset + stroffset, sizeof(wchar_t)); + if (!check_span(iccdata, + iccdata.data() + tag.offset + stroffset, + len)) { + error = format( + "ICC profile tag {} appears to contain corrupted/invalid data", + signature); + return false; // Non-sensical: tag extends beyond icc data block + } const char* start = (const char*)iccdata.data() + tag.offset + stroffset; // The actual data is UTF-16 diff --git a/testsuite/jpeg-corrupt/ref/out-alt.txt b/testsuite/jpeg-corrupt/ref/out-alt.txt index 0c66efab4a..8a35becc09 100644 --- a/testsuite/jpeg-corrupt/ref/out-alt.txt +++ b/testsuite/jpeg-corrupt/ref/out-alt.txt @@ -18,3 +18,5 @@ src/corrupt-exif-1626.jpg : 256 x 256, 3 channel, uint8 jpeg YResolution: 300 jpeg:subsampling: "4:2:0" oiio:ColorSpace: "sRGB" +corrupt-icc-4551.jpg +DCT coefficient (lossy) or spatial difference (lossless) out of range diff --git a/testsuite/jpeg-corrupt/ref/out-alt2.txt b/testsuite/jpeg-corrupt/ref/out-alt2.txt index de5f81dc9b..6797763294 100644 --- a/testsuite/jpeg-corrupt/ref/out-alt2.txt +++ b/testsuite/jpeg-corrupt/ref/out-alt2.txt @@ -18,3 +18,5 @@ src/corrupt-exif-1626.jpg : 256 x 256, 3 channel, uint8 jpeg YResolution: 300 jpeg:subsampling: "4:2:0" oiio:ColorSpace: "sRGB" +corrupt-icc-4551.jpg +DCT coefficient (lossy) or spatial difference (lossless) out of range diff --git a/testsuite/jpeg-corrupt/ref/out-alt3.txt b/testsuite/jpeg-corrupt/ref/out-alt3.txt new file mode 100644 index 0000000000..a8a8a3f779 --- /dev/null +++ b/testsuite/jpeg-corrupt/ref/out-alt3.txt @@ -0,0 +1,21 @@ +Reading src/corrupt-exif.jpg +src/corrupt-exif.jpg : 256 x 256, 3 channel, uint8 jpeg + SHA-1: 3EA7BAEB0871E9B9BAADF286521423199ACA2401 + channel list: R, G, B + Orientation: 1 (normal) + ResolutionUnit: "in" + XResolution: 300 + YResolution: 300 + jpeg:subsampling: "4:2:0" + oiio:ColorSpace: "sRGB" +Reading src/corrupt-exif-1626.jpg +src/corrupt-exif-1626.jpg : 256 x 256, 3 channel, uint8 jpeg + SHA-1: 6CBB7DB602A67DB300AB28842F20F6DCA02B82B1 + channel list: R, G, B + Orientation: 1 (normal) + ResolutionUnit: "in" + XResolution: 300 + YResolution: 300 + jpeg:subsampling: "4:2:0" + oiio:ColorSpace: "sRGB" +corrupt-icc-4551.jpg diff --git a/testsuite/jpeg-corrupt/ref/out.txt b/testsuite/jpeg-corrupt/ref/out.txt index b476cb427b..e9c37ff78c 100644 --- a/testsuite/jpeg-corrupt/ref/out.txt +++ b/testsuite/jpeg-corrupt/ref/out.txt @@ -18,3 +18,5 @@ src/corrupt-exif-1626.jpg : 256 x 256, 3 channel, uint8 jpeg YResolution: 300 jpeg:subsampling: "4:2:0" oiio:ColorSpace: "sRGB" +corrupt-icc-4551.jpg +DCT coefficient (lossy) or spatial difference (lossless) out of range diff --git a/testsuite/jpeg-corrupt/run.py b/testsuite/jpeg-corrupt/run.py index ad924237a1..cc4d06af76 100755 --- a/testsuite/jpeg-corrupt/run.py +++ b/testsuite/jpeg-corrupt/run.py @@ -17,3 +17,7 @@ # nonsensical length, that before being fixed, caused a buffer overrun. command += info_command ("src/corrupt-exif-1626.jpg", safematch=True) +# This file has a corrupted ICC profile block that has tags that say they +# extend beyond the boundaries of the ICC block itself. +command += run_app (oiiotool("--echo corrupt-icc-4551.jpg")) +command += run_app (oiio_app("iconvert") + " src/corrupt-icc-4551.jpg out-4551.jpg") diff --git a/testsuite/jpeg-corrupt/src/corrupt-icc-4551.jpg b/testsuite/jpeg-corrupt/src/corrupt-icc-4551.jpg new file mode 100644 index 0000000000000000000000000000000000000000..08b1d644a69fa248d89c53341fba104a43368224 GIT binary patch literal 40956 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 literal 0 HcmV?d00001