Coordinated Disclosure Timeline

  • 2024-10-03: Issue reported at https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3889
  • 2024-10-04: Issue acknowledged
  • 2024-12-03: Fixed and disclosed

Project

Gstreamer

Tested Version

  • Development version (2024/09/25)

Details

OOB-read in parse_ds64 (GHSL-2024-261)

An OOB-read vulnerability has been found in the parse_ds64 function within gstwavparse.c.

The parse_ds64 function does not check that the buffer buf contains sufficient data before attempting to read from it, doing multiple GST_READ_UINT32_LE operations without performing boundary checks:

static gboolean parse_ds64 (GstWavParse * wav, GstBuffer * buf){
...
  gst_buffer_map (buf, &map, GST_MAP_READ);
  dataSizeLow = GST_READ_UINT32_LE (map.data + 2 * 4);
  dataSizeHigh = GST_READ_UINT32_LE (map.data + 3 * 4);
  sampleCountLow = GST_READ_UINT32_LE (map.data + 4 * 4);
  sampleCountHigh = GST_READ_UINT32_LE (map.data + 5 * 4);
  gst_buffer_unmap (buf, &map);
...
}

This can lead to an OOB-read when buf is smaller than expected:

Impact

This vulnerability allows reading beyond the bounds of the data buffer, potentially leading to a crash (denial of service) or the leak of sensitive data.

Ensure the buffer contains the expected amount of data before performing read operations.

CVE

  • CVE-2024-47775

Credit

This issue was discovered and reported by GHSL team member @antonio-morales (Antonio Morales).

Contact

You can contact the GHSL team at securitylab@github.com, please include a reference to GHSL-2024-261 in any communication regarding this issue.