CVE-2026-103414
Beschrijving NL
De GUIX binaire resource (thema) lader meet zijn arena en vult deze in twee afzonderlijke doorgangen die het resourcebestand doorkruisen met onafhankelijke cursorberekening. Omdat `gx_page_header_data_size` nooit wordt gevalideerd aan de hand van de glyph-gegevens die een pagina daadwerkelijk bevat, kunnen de twee passen verschillende paginakoppen lezen voor dezelfde lettertypepagina, verschillende glyph-tellingen afleiden en minder reserveren dan de laadpas schrijft. Het eigen risico wordt voorbij het einde van de arena geschreven, waarbij de inhoud letterlijk uit het bestand wordt gehaald. De overvolle buffer wordt toegewezen door GUIX zelf, via `_gx_system_memory_allocator`, in plaats van door de beller. De openbare API `gx_binres_theme_load()` heeft geen grootteparameter nodig, dus geen enkele mate van toewijding van de beller voorkomt dit. Reproduceert in de verzonden standaardconfiguratie; `GX_BINARY_RESOURCE_SUPPORT` is standaard ingeschakeld.
Origineel (Engels) tonen
The GUIX binary resource (theme) loader sizes its arena and populates it in two separate passes that traverse the resource file with independent cursor arithmetic. Because `gx_page_header_data_size` is never validated against the glyph data a page actually contains, the two passes can read different page headers for the same font page, derive different glyph counts, and reserve less than the load pass writes. The excess is written past the end of the arena, with content taken verbatim from the file.
The overflowed buffer is allocated by GUIX itself, through `_gx_system_memory_allocator`, rather than supplied by the caller. The public API `gx_binres_theme_load()` takes no size parameter, so no amount of caller diligence prevents this.
Reproduces in the shipped default configuration; `GX_BINARY_RESOURCE_SUPPORT` is enabled by default.