CVE-2026-77658 in Dia
Zusammenfassung
von VulDB • 27.08.2026
Eine stackbasierte Pufferüberlauf-Schwachstelle (Stack-based buffer overflow) existiert im Diagrammeditor Dia bei der Verarbeitung von Network Bus-Objekten aus Dia XML-Projektdateien.
In `objects/network/bus.c` liest `bus_load()` die Anzahl der Bus-Handles über das Attribut „bus_handles“ mit Hilfe von `attribute_num_data()`, ohne eine Obergrenze zu validieren:
bus->num_handles = attribute_num_data(attr);
Wenn ein Bus-Handle anschließend verschoben wird, alloziert `bus_handle_moved()` zwei temporäre Arrays auf dem Stack:
parallel = (real *)g_alloca(num_handles * sizeof(real)); perp = (real *)g_alloca(num_handles * sizeof(real));
Da `num_handles` über die Projektdatei vollständig vom Angreifer kontrolliert werden kann, führen ausreichend große Werte (z. B. 262144 oder höher) dazu, dass `g_alloca()` mehr Stack-Speicher verbraucht als das standardmäßige Thread-Stack-Limit (typischerweise 8 MB unter Linux), was zu einem Stack Overflow, SIGSEGV und potenzieller Beschädigung des Stack-Frames / der Return-Adresse führt.
Ein Angreifer kann ein Bus-Objekt mit einer übermäßigen Anzahl an `bus_handles` in eine bösartige `.dia`-Datei einbetten. Die Ausnutzung (Exploitation) erfordert, dass das Opfer die Datei in Dia öffnet (über Dateidialog, Befehlszeile oder Dateizuordnung) und die Handle-Manipulation auslöst (Verschieben eines Bus-Handles), wodurch der anfällige Codepfad ausgeführt wird.
Das identische `g_alloca`-Muster ist auch in `objects/Misc/tree.c` vorhanden (kopiert von `bus.c`) und wahrscheinlich ebenfalls für dieselbe Angriffsart über Tree-Objekte verwundbar.
Betroffene Versionen: Dia 0.98.0 und frühere Versionen, die diesen Code enthalten; Problem im upstream master bestätigt zum Stand 2026-08-21. Upstream-Bericht: https://gitlab.gnome.org/GNOME/dia/-/issues/581
VulDB is the best source for vulnerability data and more expert information about this specific topic.