# CVE-2026-77658: Dia: dia: stack buffer overflow in bus object via unvalidated handle count in project files

> Attacker can cause stack buffer overflow and potential code execution by tricking a user into opening a malicious Dia project file with excessive handle counts.

- **Severity:** High 7.8 (`CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H`)
- **Exploited in the wild:** Not known
- **Login needed:** Not needed
- **Attackable:** Local or same network only
- **Victim action needed:** A user has to click or open something
- **Fix available:** No
- **Published:** 26 Aug 2026
- **Updated:** 26 Aug 2026
- **Also known as:** DEBIAN-CVE-2026-77658, GHSA-ff24-wmrj-75w8, UBUNTU-CVE-2026-77658

## What is CVE-2026-77658?

CVE-2026-77658 is a high-severity memory corruption vulnerability in GNOME Dia, published on 26 Aug 2026. It can only be exploited from the same machine or local network, and only if a user opens a file or follows a link.

### Official description

A stack-based buffer overflow vulnerability exists in the Dia diagram editor when processing Network Bus objects from Dia XML project files.

In objects/network/bus.c, bus_load() reads the number of bus handles from the file attribute "bus_handles" using attribute_num_data() without validating an upper bound:

    bus->num_handles = attribute_num_data(attr);

When a bus handle is subsequently moved, bus_handle_moved() allocates two temporary arrays on the stack:

    parallel = (real *)g_alloca(num_handles * sizeof(real));
    perp = (real *)g_alloca(num_handles * sizeof(real));

Because num_handles is fully attacker-controlled via the project file, sufficiently large values (for example 262144 or higher) cause g_alloca() to consume more stack space than the default thread stack limit (typically 8 MB on Linux), resulting in stack overflow, SIGSEGV, and potential stack frame / return-address corruption.

An attacker can embed a Bus object with an excessive bus_handles count in a malicious .dia file. Exploitation requires the victim to open the file in Dia (file dialog, command line, or file association) and trigger handle manipulation (moving a bus handle), which exercises the vulnerable code path.

The identical g_alloca pattern is present in objects/Misc/tree.c (copied from bus.c) and is likely vulnerable to the same class of attack via Tree objects.

Affected versions: Dia 0.98.0 and earlier versions containing this code; issue confirmed on upstream master as of 2026-08-21.
Upstream report: https://gitlab.gnome.org/GNOME/dia/-/issues/581

Weakness: CWE-121 (Stack-based Buffer Overflow)

## Which versions are affected by CVE-2026-77658?


## How do I fix CVE-2026-77658?

No fix has been published for CVE-2026-77658 yet. Limit exposure of the affected software until one is available.

## Is CVE-2026-77658 being exploited?

It is not confirmed as exploited in the wild, but public exploit code for CVE-2026-77658 exists.

## Fix prompt for AI coding agents

```text
Check this codebase for CVE-2026-77658 and fix it if it is affected.

What it is: CVE-2026-77658 is a high-severity memory corruption vulnerability in GNOME Dia, published on 26 Aug 2026. It can only be exploited from the same machine or local network, and only if a user opens a file or follows a link.
Exploitation: It is not confirmed as exploited in the wild, but public exploit code for CVE-2026-77658 exists.

Affected product: GNOME Dia. No package-level version data is available, so check the vendor advisory linked from the reference page.

Task:
1. Search the dependency manifests and lockfiles (for example package.json, package-lock.json, requirements.txt, poetry.lock, uv.lock, pom.xml, build.gradle, go.mod, Cargo.lock, Gemfile.lock) and any Dockerfiles for the affected packages, including transitive dependencies.
2. If an affected version is in use, upgrade it to the fixed version for its release line with the project's package manager, so the lockfile is regenerated. Prefer the smallest upgrade that fixes it.
3. If there is no fix, or the upgrade would break the build, do not guess: explain the risk and the safest workaround instead.
4. Run the tests and summarise what changed and why.
5. If nothing in the project is affected, say so and change nothing.

Reference: https://insights.sbomify.com/CVE-2026-77658/ (Markdown: https://insights.sbomify.com/CVE-2026-77658/index.md)
```

## Sources

- CVE record: https://www.cve.org/CVERecord?id=CVE-2026-77658
- NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-77658
- OSV: https://osv.dev/vulnerability/CVE-2026-77658

---
From sbomify Insights: https://insights.sbomify.com/CVE-2026-77658/
Summaries are generated and may contain mistakes; the official description above is the record.
