CVE-2026-77118
Full vulnerability record from the local CVENow database.
Description
A heap out-of-bounds write exists in the Photo CD (PCD) decoder of GraphicsMagick. In DecodeImage() (coders/pcd.c), the Huffman delta loop advances its output pointer with q++ after every decoded delta and never checks it against the end of the heap-allocated luma/chroma plane buffers. The pointer is repositioned only when a sync marker introduces a new plane/row; between sync markers the run length is bounded solely by the input. A crafted PCD file that positions the pointer near the end of a plane and then supplies a long run of deltas with no intervening sync therefore walks the pointer past the end of the allocation and writes through it. Processing an untrusted PCD file — for example with gm convert or gm identify, or through any application linked against libGraphicsMagick — can corrupt heap memory beyond the buffers.
View original CVE JSON
{
"id": "CVE-2026-77118",
"sourceIdentifier": "22e2d327-25fe-45d7-9f0c-dcd23b7108df",
"published": "2026-08-20T13:19:07.077",
"lastModified": "2026-10-27T10:10:00.240",
"vulnStatus": "Deferred",
"cveTags": [],
"descriptions": [
{
"lang": "en",
"value": "A heap out-of-bounds write exists in the Photo CD (PCD) decoder of GraphicsMagick. In DecodeImage() (coders/pcd.c), the Huffman delta loop advances its output pointer with q++ after every decoded delta and never checks it against the end of the heap-allocated luma/chroma plane buffers. The pointer is repositioned only when a sync marker introduces a new plane/row; between sync markers the run length is bounded solely by the input.\n\n\n\nA crafted PCD file that positions the pointer near the end of a plane and then supplies a long run of deltas with no intervening sync therefore walks the pointer past the end of the allocation and writes through it. Processing an untrusted PCD file — for example with gm convert or gm identify, or through any application linked against libGraphicsMagick — can corrupt heap memory beyond the buffers."
},
{
"lang": "es",
"value": "Existe una escritura fuera de límites en el heap en el decodificador de Photo CD (PCD) de GraphicsMagick. En DecodeImage() (coders/pcd.c), el bucle de delta de Huffman avanza su puntero de salida con q++ después de cada delta decodificado y nunca lo verifica contra el final de los búferes de plano de luma/croma asignados en el heap. El puntero se reposiciona solo cuando un marcador de sincronización introduce un nuevo plano/fila; entre marcadores de sincronización, la longitud de la ejecución está limitada únicamente por la entrada.\n\nUn archivo PCD manipulado que posiciona el puntero cerca del final de un plano y luego suministra una larga secuencia de deltas sin sincronización intermedia, por lo tanto, mueve el puntero más allá del final de la asignación y escribe a través de él. Procesar un archivo PCD no confiable - por ejemplo, con gm convert o gm identify, o a través de cualquier aplicación enlazada con libGraphicsMagick - puede corromper la memoria del heap más allá de los búferes."
}
],
"affected": [
{
"source": "22e2d327-25fe-45d7-9f0c-dcd23b7108df",
"affectedData": [
{
"vendor": "GraphicsMagick Group",
"product": "GraphicsMagick",
"defaultStatus": "unaffected",
"cpes": [
"cpe:2.3:a:graphicsmagick:graphicsmagick:*:*:*:*:*:*:*:*"
],
"modules": [
"PCD / PCDS image coder"
],
"platforms": [
"Linux",
"Windows",
"macOS"
],
"programFiles": [
"coders/pcd.c"
],
"programRoutines": [
{
"name": "DecodeImage"
}
],
"repo": "https://foss.heptapod.net/graphicsmagick/graphicsmagick",
"versions": [
{
"version": "1.0.0",
"lessThan": "1.3.48",
"versionType": "semver",
"status": "affected"
}
]
},
{
"vendor": "Debian",
"product": "graphicsmagick",
"defaultStatus": "unaffected",
"collectionURL": "https://packages.debian.org",
"packageName": "graphicsmagick",
"cpes": [
"cpe:2.3:o:debian:debian_linux:11:*:*:*:*:*:*:*",
"cpe:2.3:o:debian:debian_linux:12:*:*:*:*:*:*:*",
"cpe:2.3:o:debian:debian_linux:13:*:*:*:*:*:*:*"
],
"versions": [
{
"version": "0",
"lessThan": "1.4+really1.3.48-1",
"versionType": "deb",
"status": "affected"
}
]
},
{
"vendor": "Fedora Project",
"product": "GraphicsMagick",
"defaultStatus": "unaffected",
"collectionURL": "https://dl.fedoraproject.org/pub/epel",
"packageName": "GraphicsMagick",
"cpes": [
"cpe:2.3:a:fedoraproject:extra_packages_for_enterprise_linux:8.0:*:*:*:*:*:*:*",
"cpe:2.3:a:fedoraproject:extra_packages_for_enterprise_linux:9.0:*:*:*:*:*:*:*"
],
"versions": [
{
"version": "0",
"lessThan": "1.3.48",
"versionType": "rpm",
"status": "affected"
}
]
}
]
}
],
"metrics": {
"cvssMetricV40": [
{
"source": "22e2d327-25fe-45d7-9f0c-dcd23b7108df",
"type": "Secondary",
"cvssData": {
"version": "4.0",
"vectorString": "CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:A/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X",
"baseScore": 8.4,
"baseSeverity": "HIGH",
"attackVector": "LOCAL",
"attackComplexity": "LOW",
"attackRequirements": "NONE",
"privilegesRequired": "NONE",
"userInteraction": "ACTIVE",
"vulnConfidentialityImpact": "HIGH",
"vulnIntegrityImpact": "HIGH",
"vulnAvailabilityImpact": "HIGH",
"subConfidentialityImpact": "NONE",
"subIntegrityImpact": "NONE",
"subAvailabilityImpact": "NONE",
"exploitMaturity": "NOT_DEFINED",
"confidentialityRequirement": "NOT_DEFINED",
"integrityRequirement": "NOT_DEFINED",
"availabilityRequirement": "NOT_DEFINED",
"modifiedAttackVector": "NOT_DEFINED",
"modifiedAttackComplexity": "NOT_DEFINED",
"modifiedAttackRequirements": "NOT_DEFINED",
"modifiedPrivilegesRequired": "NOT_DEFINED",
"modifiedUserInteraction": "NOT_DEFINED",
"modifiedVulnConfidentialityImpact": "NOT_DEFINED",
"modifiedVulnIntegrityImpact": "NOT_DEFINED",
"modifiedVulnAvailabilityImpact": "NOT_DEFINED",
"modifiedSubConfidentialityImpact": "NOT_DEFINED",
"modifiedSubIntegrityImpact": "NOT_DEFINED",
"modifiedSubAvailabilityImpact": "NOT_DEFINED",
"Safety": "NOT_DEFINED",
"Automatable": "NOT_DEFINED",
"Recovery": "NOT_DEFINED",
"valueDensity": "NOT_DEFINED",
"vulnerabilityResponseEffort": "NOT_DEFINED",
"providerUrgency": "NOT_DEFINED"
}
}
],
"ssvcV203": [
{
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"ssvcData": {
"timestamp": "2026-08-26T19:42:13.414822Z",
"id": "CVE-2026-77118",
"options": [
{
"exploitation": "none"
},
{
"automatable": "no"
},
{
"technicalImpact": "total"
}
],
"role": "CISA Coordinator",
"version": "2.0.3"
}
}
]
},
"weaknesses": [
{
"source": "22e2d327-25fe-45d7-9f0c-dcd23b7108df",
"type": "Secondary",
"description": [
{
"lang": "en",
"value": "CWE-787"
}
]
}
],
"references": [
{
"url": "https://foss.heptapod.net/graphicsmagick/graphicsmagick/-/commit/937cdd9920bd96",
"source": "22e2d327-25fe-45d7-9f0c-dcd23b7108df"
},
{
"url": "https://foss.heptapod.net/graphicsmagick/graphicsmagick/-/raw/GraphicsMagick-1_3_48/ChangeLog",
"source": "22e2d327-25fe-45d7-9f0c-dcd23b7108df"
}
]
}