Bug 2552106 - CVE-2026-86476 mingw-gstreamer1-plugins-base: gst-plugins-base: heap buffer overflow via unvalidated GstVideoMeta plane extents in gst_video_frame_map_id and video_meta_deserialize [fedora-all]
Summary: CVE-2026-86476 mingw-gstreamer1-plugins-base: gst-plugins-base: heap buffer o...
Keywords:
Status: ON_QA
Alias: None
Product: Fedora
Classification: Fedora
Component: mingw-gstreamer1-plugins-base
Version: rawhide
Hardware: Unspecified
OS: Unspecified
high
high
Target Milestone: ---
Assignee: Sandro Mani
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard: {"flaws": ["5057efd9-3f52-4081-89dc-5...
Depends On:
Blocks: CVE-2026-86476
TreeView+ depends on / blocked
 
Reported: 2026-10-14 08:03 UTC by lcelant
Modified: 2026-10-20 05:27 UTC (History)
2 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed:
Type: ---
Embargoed:


Attachments (Terms of Use)

Description lcelant 2026-10-14 08:03:00 UTC
Disclaimer: Community trackers are created by Red Hat Product Security team on a best effort basis. Package maintainers are required to ascertain if the flaw indeed affects their package, before starting the update process.

gst-plugins-base (libgstvideo) version 1.29.2.1 (development branch; earlier stable versions also affected) contains a heap buffer overflow in the video frame mapping and copy path. Two related root causes combine to allow an untrusted peer to deliver a GstVideoMeta with fabricated plane strides that extend far beyond the backing buffer allocation.

1. gst_video_frame_map_id() (video-frame.c:89-107): When a GstVideoMeta is present on a buffer, the meta branch copies width, height, offset, and stride from the meta into the GstVideoFrame without checking that stride*height fits within the backing allocation. The no-meta branch (line 121) guards against this with 'if (frame->map[0].size < info->size) goto invalid_size', but the meta branch has no equivalent check.

2. default_map() (gstvideometa.c:398-432): Calls gst_buffer_find_memory(buffer, offset, 1, ...) -- the '1' means only a single byte at the plane's start offset is verified to exist. The code contains the comment '/* FIXME use plane size */' confirming the known limitation. The meta's stride is then blindly written to *stride (line 416) and used by all consumers.

3. video_meta_deserialize() (gstvideometa.c:252-313): Deserializes GstVideoMeta from the unixfd IPC byte stream. Strides are read as signed gint32 (line 285), accepting negative values. No range check compares declared strides/offsets against the actual backing buffer size. The metadata is attached to an empty buffer before the peer-controlled memory is mapped, so the stride and the allocation are never compared.

4. gst_video_frame_copy_plane() (video-frame.c:391-400) and videoconvert ORC kernels: Both consume the frame's stride unconditionally. When strides are 1000000 on a 320x240 I420 buffer (actual allocation ~115200 bytes), a single plane memcpy attempts 1000000*240 = 240,000,000 bytes -- a massive OOB.

Upstream GitLab issue 5257 is confidential. Reporter: Yehia Ezzat (yehiaezzat710). ASan confirmed: heap-buffer-overflow READ of size 2073600 and WRITE of size 2073600, both faulting inside gst_video_frame_copy_plane() / video_orc_convert_I420_BGRA.

Upstream coordination (2026-09-07, Sebastian Dröge): CVSS 8.4 vector confirmed. No upstream fix commit yet. Upstream expects to land a fix during the week of 2026-09-07, targeting inclusion in GStreamer 1.28.8 (approximately one month; GStreamer 1.28.7 release imminent). Coordinated public disclosure date to be confirmed by upstream. Practical cross-process exposure is limited: disabling the unixfd plugin is the only known mitigation for that path, and upstream states the plugin is not used by software packaged in RHEL or major Linux distributions. The affected unixfdsink/unixfdsrc elements are not used automatically. The underlying libgstvideo validation gap may still affect in-process use if attacker-controlled GstVideoMeta is supplied by other code using metadata serialization (no known open source consumers per upstream).
PSIRT Ticket: PSIRTSUPT-23320

Comment 1 Fedora Update System 2026-10-19 10:04:03 UTC
FEDORA-2026-343461e9d1 (mingw-gstreamer1-1.28.8-1.fc44, mingw-gstreamer1-plugins-bad-free-1.28.8-1.fc44, and 2 more) has been submitted as an update to Fedora 44.
https://bodhi.fedoraproject.org/updates/FEDORA-2026-343461e9d1

Comment 2 Fedora Update System 2026-10-19 10:05:07 UTC
FEDORA-2026-b1f189a5b6 (mingw-gstreamer1-1.28.8-1.fc45, mingw-gstreamer1-plugins-bad-free-1.28.8-1.fc45, and 2 more) has been submitted as an update to Fedora 45.
https://bodhi.fedoraproject.org/updates/FEDORA-2026-b1f189a5b6

Comment 3 Fedora Update System 2026-10-20 04:31:56 UTC
FEDORA-2026-b1f189a5b6 has been pushed to the Fedora 45 testing repository.
Soon you'll be able to install the update with the following command:
`sudo dnf upgrade --enablerepo=updates-testing --refresh --advisory=FEDORA-2026-b1f189a5b6`
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2026-b1f189a5b6

See also https://fedoraproject.org/wiki/QA:Updates_Testing for more information on how to test updates.

Comment 4 Fedora Update System 2026-10-20 05:27:42 UTC
FEDORA-2026-343461e9d1 has been pushed to the Fedora 44 testing repository.
Soon you'll be able to install the update with the following command:
`sudo dnf upgrade --enablerepo=updates-testing --refresh --advisory=FEDORA-2026-343461e9d1`
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2026-343461e9d1

See also https://fedoraproject.org/wiki/QA:Updates_Testing for more information on how to test updates.


Note You need to log in before you can comment on or make changes to this bug.