Every CVE Search/ Get API key

CVE-2026-77652

Dia: dia: heap buffer overflow in wpg colormap parser via out-of-bounds palette index

7.8 High

CVE-2026-77652 is a high vulnerability (CVSS 7.8) in Gnome Dia, published August 26, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.21%, the 11th percentile. No source names a fixed version.

A heap-based buffer overflow vulnerability exists in the Dia diagram editor WPG file format importer.

In plug-ins/wpg/wpg-import.c, the WPG import renderer allocates a fixed palette with:

ren->pPal = g_new0(WPGColorRGB, 256);

When handling a WPG_COLORMAP record, the parser reads a start index (i16) and number of colors (iNum16) from the file and reads palette data with:

bRet &= (iNum16 == (int)fread(&ren->pPal[i16], sizeof(WPGColorRGB), iNum16, f));

The only bounds-related check is if (i16 >= 0 && i16 <= iSize), where iSize is the WPG record size—not the palette capacity. There is no validation that i16 is less than 256 or that i16 + iNum16 does not exceed 256.

A malicious WPG file can supply i16=256 and iNum16=264. That causes fread() to write 792 bytes starting at &pPal[256], while the palette buffer is only 768 bytes (256 entries × 3 bytes). This overflows into adjacent heap metadata and can crash Dia (SIGABRT / malloc corruption errors) or, depending on heap layout and exploit primitives, potentially lead to arbitrary code execution.

Exploitation requires convincing a user to open a crafted WPG file via Dia's file dialog, command line, or file association. No special privileges are required to deliver the file to the victim.

Affected component: WPG parser (plug-ins/wpg/wpg-import.c). Affected versions: all Dia versions containing this code path (reporter tested Dia 0.98+git20260221-1; issue present on upstream master as of 2026-08-21).

Attack profile

How easy it is to exploit

Attack vector
Local
Complexity
Low
Privileges needed
None
User interaction
Required

What an attacker can affect

Confidentiality
High
Integrity
High
Availability
High

Exploit likelihood

0.21%Up 0.1 points since Aug 27, 2026
90%50%10%1%

What each source reports

CVE List Score used 7.8

Dia: dia: heap buffer overflow in wpg colormap parser via out-of-bounds palette index

A heap-based buffer overflow vulnerability exists in the Dia diagram editor WPG file format importer.

In plug-ins/wpg/wpg-import.c, the WPG import renderer allocates a fixed palette with:

ren->pPal = g_new0(WPGColorRGB, 256);

When handling a WPG_COLORMAP record, the parser reads a start index (i16) and number of colors (iNum16) from the file and reads palette data with:

bRet &= (iNum16 == (int)fread(&ren->pPal[i16], sizeof(WPGColorRGB), iNum16, f));

The only bounds-related check is if (i16 >= 0 && i16 <= iSize), where iSize is the WPG record size—not the palette capacity. There is no validation that i16 is less than 256 or that i16 + iNum16 does not exceed 256.

A malicious WPG file can supply i16=256 and iNum16=264. That causes fread() to write 792 bytes starting at &pPal[256], while the palette buffer is only 768 bytes (256 entries × 3 bytes). This overflows into adjacent heap metadata and can crash Dia (SIGABRT / malloc corruption errors) or, depending on heap layout and exploit primitives, potentially lead to arbitrary code execution.

Exploitation requires convincing a user to open a crafted WPG file via Dia's file dialog, command line, or file association. No special privileges are required to deliver the file to the victim.

Affected component: WPG parser (plug-ins/wpg/wpg-import.c). Affected versions: all Dia versions containing this code path (reporter tested Dia 0.98+git20260221-1; issue present on upstream master as of 2026-08-21).

Record
CVE-2026-77652
CVSS 3.1
7.8 HighCVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
Weakness
CWE-122
Updated
2026-11-02
EUVDEUVD-2026-66675 7.8

A heap-based buffer overflow vulnerability exists in the Dia diagram editor WPG file format importer.

In plug-ins/wpg/wpg-import.c, the WPG import renderer allocates a fixed palette with:

ren->pPal = g_new0(WPGColorRGB, 256);

When handling a WPG_COLORMAP record, the parser reads a start index (i16) and number of colors (iNum16) from the file and reads palette data with:

bRet &= (iNum16 == (int)fread(&ren->pPal[i16], sizeof(WPGColorRGB), iNum16, f));

The only bounds-related check is if (i16 >= 0 && i16 <= iSize), where iSize is the WPG record size—not the palette capacity. There is no validation that i16 is less than 256 or that i16 + iNum16 does not exceed 256.

A malicious WPG file can supply i16=256 and iNum16=264. That causes fread() to write 792 bytes starting at &pPal[256], while the palette buffer is only 768 bytes (256 entries × 3 bytes). This overflows into adjacent heap metadata and can crash Dia (SIGABRT / malloc corruption errors) or, depending on heap layout and exploit primitives, potentially lead to arbitrary code execution.

Exploitation requires convincing a user to open a crafted WPG file via Dia's file dialog, command line, or file association. No special privileges are required to deliver the file to the victim.

Affected component: WPG parser (plug-ins/wpg/wpg-import.c). Affected versions: all Dia versions containing this code path (reporter tested Dia 0.98+git20260221-1; issue present on upstream master as of 2026-08-21).

Record
EUVD-2026-66675
CVSS 3.1
7.8 HighCVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
Updated
2026-11-02
GitHub AdvisoriesGHSA-w4q3-279c-xvrv 7.8

A heap-based buffer overflow vulnerability exists in the Dia diagram editor WPG file format...

A heap-based buffer overflow vulnerability exists in the Dia diagram editor WPG file format importer.

In plug-ins/wpg/wpg-import.c, the WPG import renderer allocates a fixed palette with:

ren->pPal = g_new0(WPGColorRGB, 256);

When handling a WPG_COLORMAP record, the parser reads a start index (i16) and number of colors (iNum16) from the file and reads palette data with:

bRet &= (iNum16 == (int)fread(&ren->pPal[i16], sizeof(WPGColorRGB), iNum16, f));

The only bounds-related check is if (i16 >= 0 && i16 <= iSize), where iSize is the WPG record size—not the palette capacity. There is no validation that i16 is less than 256 or that i16 + iNum16 does not exceed 256.

A malicious WPG file can supply i16=256 and iNum16=264. That causes fread() to write 792 bytes starting at &pPal[256], while the palette buffer is only 768 bytes (256 entries × 3 bytes). This overflows into adjacent heap metadata and can crash Dia (SIGABRT / malloc corruption errors) or, depending on heap layout and exploit primitives, potentially lead to arbitrary code execution.

Exploitation requires convincing a user to open a crafted WPG file via Dia's file dialog, command line, or file association. No special privileges are required to deliver the file to the victim.

Affected component: WPG parser (plug-ins/wpg/wpg-import.c). Affected versions: all Dia versions containing this code path (reporter tested Dia 0.98+git20260221-1; issue present on upstream master as of 2026-08-21).

Record
GHSA-w4q3-279c-xvrv
CVSS 3.1
7.8 HighCVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
Weakness
CWE-122
Updated
2026-11-02
NVD 7.8

A heap-based buffer overflow vulnerability exists in the Dia diagram editor WPG file format importer.

In plug-ins/wpg/wpg-import.c, the WPG import renderer allocates a fixed palette with:

ren->pPal = g_new0(WPGColorRGB, 256);

When handling a WPG_COLORMAP record, the parser reads a start index (i16) and number of colors (iNum16) from the file and reads palette data with:

bRet &= (iNum16 == (int)fread(&ren->pPal[i16], sizeof(WPGColorRGB), iNum16, f));

The only bounds-related check is if (i16 >= 0 && i16 <= iSize), where iSize is the WPG record size—not the palette capacity. There is no validation that i16 is less than 256 or that i16 + iNum16 does not exceed 256.

A malicious WPG file can supply i16=256 and iNum16=264. That causes fread() to write 792 bytes starting at &pPal[256], while the palette buffer is only 768 bytes (256 entries × 3 bytes). This overflows into adjacent heap metadata and can crash Dia (SIGABRT / malloc corruption errors) or, depending on heap layout and exploit primitives, potentially lead to arbitrary code execution.

Exploitation requires convincing a user to open a crafted WPG file via Dia's file dialog, command line, or file association. No special privileges are required to deliver the file to the victim.

Affected component: WPG parser (plug-ins/wpg/wpg-import.c). Affected versions: all Dia versions containing this code path (reporter tested Dia 0.98+git20260221-1; issue present on upstream master as of 2026-08-21).

Record
CVE-2026-77652
CVSS 3.1
7.8 HighCVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
Weakness
CWE-122
Updated
2026-11-02
OSVDEBIAN-CVE-2026-77652 7.8

A heap-based buffer overflow vulnerability exists in the Dia diagram editor WPG file format importer. In plug-ins/wpg/wpg-import.c, the WPG import renderer allocates a fixed palette with: ren->pPal = g_new0(WPGColorRGB, 256); When handling a WPG_COLORMAP record, the parser reads a start index (i16) and number of colors (iNum16) from the file and reads palette data with: bRet &= (iNum16 == (int)fread(&ren->pPal[i16], sizeof(WPGColorRGB), iNum16, f)); The only bounds-related check is if (i16 >= 0 && i16 <= iSize), where iSize is the WPG record size—not the palette capacity. There is no validation that i16 is less than 256 or that i16 + iNum16 does not exceed 256. A malicious WPG file can supply i16=256 and iNum16=264. That causes fread() to write 792 bytes starting at &pPal[256], while the palette buffer is only 768 bytes (256 entries × 3 bytes). This overflows into adjacent heap metadata and can crash Dia (SIGABRT / malloc corruption errors) or, depending on heap layout and exploit primitives, potentially lead to arbitrary code execution. Exploitation requires convincing a user to open a crafted WPG file via Dia's file dialog, command line, or file association. No special privileges are required to deliver the file to the victim. Affected component: WPG parser (plug-ins/wpg/wpg-import.c). Affected versions: all Dia versions containing this code path (reporter tested Dia 0.98+git20260221-1; issue present on upstream master as of 2026-08-21).

Record
DEBIAN-CVE-2026-77652
CVSS 3.1
7.8 HighCVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
Updated
2026-11-02
OSVUBUNTU-CVE-2026-77652 7.8

A heap-based buffer overflow vulnerability exists in the Dia diagram editor WPG file format importer. In plug-ins/wpg/wpg-import.c, the WPG import renderer allocates a fixed palette with: ren->pPal = g_new0(WPGColorRGB, 256); When handling a WPG_COLORMAP record, the parser reads a start index (i16) and number of colors (iNum16) from the file and reads palette data with: bRet &= (iNum16 == (int)fread(&ren->pPal[i16], sizeof(WPGColorRGB), iNum16, f)); The only bounds-related check is if (i16 >= 0 && i16 <= iSize), where iSize is the WPG record size—not the palette capacity. There is no validation that i16 is less than 256 or that i16 + iNum16 does not exceed 256. A malicious WPG file can supply i16=256 and iNum16=264. That causes fread() to write 792 bytes starting at &pPal[256], while the palette buffer is only 768 bytes (256 entries × 3 bytes). This overflows into adjacent heap metadata and can crash Dia (SIGABRT / malloc corruption errors) or, depending on heap layout and exploit primitives, potentially lead to arbitrary code execution. Exploitation requires convincing a user to open a crafted WPG file via Dia's file dialog, command line, or file association. No special privileges are required to deliver the file to the victim. Affected component: WPG parser (plug-ins/wpg/wpg-import.c). Affected versions: all Dia versions containing this code path (reporter tested Dia 0.98+git20260221-1; issue present on upstream master as of 2026-08-21).

Record
UBUNTU-CVE-2026-77652
CVSS 3.1
7.8 HighCVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
Updated
2026-11-02

Affected products

Affected packages

Affected packages
PackageAffectedFixed
dia
Debian:12
All versions, plus listed versions
0.97.3+git20220525-50.98+git20240130-10.98+git20240528-10.98+git20240814-10.98+git20250126-1
Show 6 moreShow less
0.98+git20250126-20.98+git20250827-10.98+git20250827-20.98+git20260221-10.98+git20260221-20.98+git20260221-3
None known
dia
Debian:13
All versions, plus listed versions
0.98+git20250126-20.98+git20250827-10.98+git20250827-20.98+git20260221-10.98+git20260221-20.98+git20260221-3
None known
dia
Debian:14
All versions, plus listed versions
0.98+git20250126-20.98+git20250827-10.98+git20250827-20.98+git20260221-10.98+git20260221-20.98+git20260221-3
None known
dia
Ubuntu:16.04:LTS
All versions, plus listed versions
0.97.3-1
None known
dia
Ubuntu:18.04:LTS
All versions, plus listed versions
0.97.3+git20160930-60.97.3+git20160930-70.97.3+git20160930-8
None known
dia
Ubuntu:20.04:LTS
All versions, plus listed versions
0.97.3+git20160930-8.10.97.3+git20160930-8.20.97.3+git20160930-9
None known
dia
Ubuntu:22.04:LTS
All versions, plus listed versions
0.97.3+git20160930-90.97.3+git20160930-9build1
None known
dia
Ubuntu:24.04:LTS
All versions, plus listed versions
0.97.3+git20220525-5build10.97.3+git20220525-5build20.97.3+git20220525-5build30.98+git20240130-10.98+git20240130-1build20.98+git20240130-1build30.98+git20240130-1build4
None known
dia
Ubuntu:26.10
All versions, plus listed versions
0.98+git20260221-10.98+git20260221-20.98+git20260221-3
None known
dia
Ubuntu:26.04:LTS
All versions, plus listed versions
0.98+git20250902-0ubuntu10.98+git20250902-0ubuntu20.98+git20260221-1
None known

History

History
WhenChangedSources
2026-11-02createdCVE List, EUVD, GitHub Advisories, NVD, OSV

References

MoveEnter Open