FFmpeg Heap Out-of-Bounds Write via PNG/APNG eXIf Encoder
FFmpeg through 8.1.2, fixed in commit b506faf, contains a heap out-of-bounds write vulnerability in the native PNG and APNG encoders that allows remote attackers to corrupt heap memory by supplying a crafted PNG image with a malicious eXIf chunk. Attackers can craft an eXIf chunk where multiple IFD entries reference the same large value payload, causing canonical serialization to expand the output far beyond the undersized allocation estimated by add_exif_profile_size(), resulting in png_write_chunk() writing tens of thousands of bytes past the buffer boundary, leading to deterministic heap corruption, process crash, and potentially arbitrary code execution.
- Products
- Not specified
- Affected versions
- Not specified
- Fixed versions
- Not specified
- CVEs
- CVE-2026-66040
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 4 Nov 2026, 11:23 UTC · Revision 1
Source evidence
FFmpeg Heap Out-of-Bounds Write via PNG/APNG eXIf Encoder
core-osv · Original sourcePublished 24 Jul 2026, 19:46 UTC
FFmpeg through 8.1.2, fixed in commit b506faf, contains a heap out-of-bounds write vulnerability in the native PNG and APNG encoders that allows remote attackers to corrupt heap memory by supplying a crafted PNG image with a malicious eXIf chunk. Attackers can craft an eXIf chunk where multiple IFD entries reference the same large value payload, causing canonical serialization to expand the output far beyond the undersized allocation estimated by add_exif_profile_size(), resulting in png_write_chunk() writing tens of thousands of bytes past the buffer boundary, leading to deterministic heap corruption, process crash, and potentially arbitrary code execution.
osv:CVE-2026-66040
Complete source record
{
"id": "20def18a23fdffd4b0be1c7257e38e108b658f65f0a0e1b3f5f5281f2d1800d1",
"url": "https://osv.dev/vulnerability/CVE-2026-66040",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "FFmpeg Heap Out-of-Bounds Write via PNG/APNG eXIf Encoder",
"summary": "FFmpeg through 8.1.2, fixed in commit b506faf, contains a heap out-of-bounds write vulnerability in the native PNG and APNG encoders that allows remote attackers to corrupt heap memory by supplying a crafted PNG image with a malicious eXIf chunk. Attackers can craft an eXIf chunk where multiple IFD entries reference the same large value payload, causing canonical serialization to expand the output far beyond the undersized allocation estimated by add_exif_profile_size(), resulting in png_write_chunk() writing tens of thousands of bytes past the buffer boundary, leading to deterministic heap corruption, process crash, and potentially arbitrary code execution.",
"evidence": "osv:CVE-2026-66040",
"products": [],
"severity": "high",
"structured": {
"id": "CVE-2026-66040",
"aliases": [
"CVE-2026-66040"
],
"metrics": [
{
"type": "CVSS_V4",
"score": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N"
}
],
"affected": [
{
"ranges": [
{
"repo": "https://git.ffmpeg.org/ffmpeg.git",
"type": "GIT",
"events": [
{
"introduced": "0"
},
{
"last_affected": "38b88335f99e76ed89ff3c93f877fdefce736c13"
}
],
"database_specific": {
"extracted_events": [
{
"cpe": "cpe:2.3:a:ffmpeg:ffmpeg:*:*:*:*:*:*:*:*",
"range": [
{
"introduced": "0"
},
{
"last_affected": "8.1.2"
}
],
"source": "CPE_RANGE"
}
]
}
}
],
"versions": [
"n8.1.2",
"n8.1.1",
"n8.1",
"n8.1-dev",
"n7.2-dev",
"n7.1-dev",
"n6.2-dev",
"n6.1-dev",
"n5.2-dev",
"n5.1-dev",
"n4.5-dev",
"n4.4-dev",
"n4.3-dev",
"n4.2-dev",
"n4.1-dev",
"n3.5-dev",
"n3.4-dev",
"n3.3-dev",
"n3.2-dev",
"n3.1-dev",
"n2.9-dev",
"n2.8-dev",
"n2.7-dev",
"n2.6-dev",
"n2.5-dev",
"n2.4-dev",
"n2.3-dev",
"n2.2-dev",
"n2.0",
"n2.1-dev",
"n1.3-dev",
"n1.2-dev",
"n1.1-dev",
"n0.12-dev",
"n0.11-dev",
"n0.8",
"N"
],
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-66040.json"
}
},
{
"ranges": [
{
"repo": "https://github.com/ffmpeg/ffmpeg",
"type": "GIT",
"events": [
{
"introduced": "0"
},
{
"last_affected": "38b88335f99e76ed89ff3c93f877fdefce736c13"
}
],
"database_specific": {
"extracted_events": [
{
"cpe": "cpe:2.3:a:ffmpeg:ffmpeg:*:*:*:*:*:*:*:*",
"range": [
{
"introduced": "0"
},
{
"last_affected": "8.1.2"
}
],
"source": "CPE_RANGE"
}
]
}
}
],
"versions": [
"n8.1.2",
"n8.1.1",
"n8.1",
"n8.1-dev",
"n7.2-dev",
"n7.1-dev",
"n6.2-dev",
"n6.1-dev",
"n5.2-dev",
"n5.1-dev",
"n4.5-dev",
"n4.4-dev",
"n4.3-dev",
"n4.2-dev",
"n4.1-dev",
"n3.5-dev",
"n3.4-dev",
"n3.3-dev",
"n3.2-dev",
"n3.1-dev",
"n2.9-dev",
"n2.8-dev",
"n2.7-dev",
"n2.6-dev",
"n2.5-dev",
"n2.4-dev",
"n2.3-dev",
"n2.2-dev",
"n2.0",
"n2.1-dev",
"n1.3-dev",
"n1.2-dev",
"n1.1-dev",
"n0.12-dev",
"n0.11-dev",
"n0.8",
"N"
],
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-66040.json"
}
}
],
"modified": "2026-10-28T02:30:34.544571330Z",
"provider": "osv",
"references": [
"https://code.ffmpeg.org/FFmpeg/FFmpeg",
"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/66xxx/CVE-2026-66040.json",
"https://nvd.nist.gov/vuln/detail/CVE-2026-66040",
"https://www.vulncheck.com/advisories/ffmpeg-heap-out-of-bounds-write-via-png-apng-exif-encoder",
"https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/23786",
"https://code.ffmpeg.org/FFmpeg/FFmpeg/commit/b506fafec9a19fcbc2be5271875fd4a63d6615bc"
],
"provider_metadata": {
"cwe_ids": [
"CWE-122"
],
"cna_assigner": "VulnCheck",
"unresolved_ranges": [
{
"extracted_events": [
{
"range": [
{
"last_affected": "8.1.2"
}
],
"source": "AFFECTED_FIELD",
"strategy": "StandardRange"
}
]
}
],
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/66xxx/CVE-2026-66040.json"
}
},
"related_cves": [
{
"value": "CVE-2026-66040",
"evidence": "/id"
}
],
"security_relevant": true,
"severity_evidence": "/severity/0/score"
},
"source_id": "core-osv",
"document_id": 502005,
"published_at": "2026-07-24T19:46:25.959+00:00"
}