From c0df24b492e6afc654a972f4de2335d5bf05266a Mon Sep 17 00:00:00 2001 From: rpm-build Date: Sat, 26 Aug 2023 15:23:25 -0600 Subject: [PATCH] Backport https://github.com/HDFGroup/hdf5/pull/2459 --- src/H5Oattr.c | 7 +++---- tools/test/h5dump/CMakeTests.cmake | 5 +++++ tools/test/h5dump/testh5dump.sh.in | 5 +++++ tools/testfiles/tCVE-2021-37501_attr_decode.h5 | Bin 0 -> 48544 bytes 4 files changed, 13 insertions(+), 4 deletions(-) create mode 100644 tools/testfiles/tCVE-2021-37501_attr_decode.h5 diff --git a/src/H5Oattr.c b/src/H5Oattr.c index db53eaf..de337b7 100644 --- a/src/H5Oattr.c +++ b/src/H5Oattr.c @@ -222,10 +222,6 @@ H5O__attr_decode(H5F_t *f, H5O_t *open_oh, unsigned H5_ATTR_UNUSED mesg_flags, u else p += attr->shared->ds_size; - /* Get the datatype's size */ - if (0 == (dt_size = H5T_get_size(attr->shared->dt))) - HGOTO_ERROR(H5E_ATTR, H5E_CANTGET, NULL, "unable to get datatype size") - /* Get the datatype & dataspace sizes */ if (0 == (dt_size = H5T_get_size(attr->shared->dt))) HGOTO_ERROR(H5E_ATTR, H5E_CANTGET, NULL, "unable to get datatype size") @@ -235,6 +231,9 @@ H5O__attr_decode(H5F_t *f, H5O_t *open_oh, unsigned H5_ATTR_UNUSED mesg_flags, u /* Compute the size of the data */ H5_CHECKED_ASSIGN(attr->shared->data_size, size_t, ds_size * (hsize_t)dt_size, hsize_t); + /* Check if multiplication has overflown */ + if ((attr->shared->data_size / dt_size) != ds_size) + HGOTO_ERROR(H5E_RESOURCE, H5E_OVERFLOW, NULL, "data size exceeds addressable range") /* Go get the data */ if (attr->shared->data_size) { diff --git a/tools/test/h5dump/CMakeTests.cmake b/tools/test/h5dump/CMakeTests.cmake index a8984de..4067461 100644 --- a/tools/test/h5dump/CMakeTests.cmake +++ b/tools/test/h5dump/CMakeTests.cmake @@ -339,6 +339,7 @@ ${HDF5_TOOLS_DIR}/testfiles/tCVE_2018_11206_fill_old.h5 ${HDF5_TOOLS_DIR}/testfiles/tCVE_2018_11206_fill_new.h5 ${HDF5_TOOLS_DIR}/testfiles/zerodim.h5 + ${HDF5_TOOLS_DIR}/testfiles/tCVE-2021-37501_attr_decode.h5 #STD_REF_OBJ files ${HDF5_TOOLS_DIR}/testfiles/trefer_attr.h5 ${HDF5_TOOLS_DIR}/testfiles/trefer_compat.h5 @@ -1187,6 +1188,10 @@ ADD_H5_TEST (tCVE_2018_11206_fill_old 1 tCVE_2018_11206_fill_old.h5) ADD_H5_TEST (tCVE_2018_11206_fill_new 1 tCVE_2018_11206_fill_new.h5) + # test to verify fix for CVE-2021-37501: multiplication overflow in H5O__attr_decode() + # https://github.com/ST4RF4LL/Something_Found/blob/main/HDF5_v1.13.0_h5dump_heap_overflow.assets/poc + ADD_H5_TEST (tCVE-2021-37501_attr_decode 1 tCVE-2021-37501_attr_decode.h5) + ############################################################################## ### P L U G I N T E S T S ############################################################################## diff --git a/tools/test/h5dump/testh5dump.sh.in b/tools/test/h5dump/testh5dump.sh.in index 9464302..2addb43 100644 --- a/tools/test/h5dump/testh5dump.sh.in +++ b/tools/test/h5dump/testh5dump.sh.in @@ -184,6 +184,7 @@ $SRC_H5DUMP_TESTFILES/tvms.h5 $SRC_H5DUMP_TESTFILES/err_attr_dspace.h5 $SRC_H5DUMP_TESTFILES/tCVE_2018_11206_fill_old.h5 $SRC_H5DUMP_TESTFILES/tCVE_2018_11206_fill_new.h5 +$SRC_H5DUMP_TESTFILES/tCVE-2021-37501_attr_decode.h5 " LIST_OTHER_TEST_FILES=" @@ -1486,6 +1487,10 @@ TOOLTEST err_attr_dspace.ddl err_attr_dspace.h5 TOOLTEST_FAIL tCVE_2018_11206_fill_old.h5 TOOLTEST_FAIL tCVE_2018_11206_fill_new.h5 +# test to verify fix for CVE-2021-37501: multiplication overflow in H5O__attr_decode() +# https://github.com/ST4RF4LL/Something_Found/blob/main/HDF5_v1.13.0_h5dump_heap_overflow.assets/poc +TOOLTEST_FAIL tCVE-2021-37501_attr_decode.h5 + # Clean up temporary files/directories CLEAN_TESTFILES_AND_TESTDIR diff --git a/tools/testfiles/tCVE-2021-37501_attr_decode.h5 b/tools/testfiles/tCVE-2021-37501_attr_decode.h5 new file mode 100644 index 0000000000000000000000000000000000000000..331b05b59362a661b81364da3d7357312ad1e57c GIT binary patch literal 48544 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 CR{P-q literal 0 HcmV?d00001 -- 2.41.0