GUIX binary resource loader: unvalidated glyph range causes an integer underflow and a heap out-of-bounds write when loading an untrusted font or theme
What fixes it
- 6.5.2.202603GUIX, eclipse threadxGitHub
A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.
Description
The GUIX binary resource loader never checks that a font page's glyph range is well formed. gx_page_header_first_glyph and gx_page_header_last_glyph are read verbatim from the file and only the upper bound of last_glyph is validated, so a page declaring first_glyph > last_glyph makes last - first + 1 underflow to a very large unsigned count.
That count is multiplied by a glyph record size to reserve the load buffer, and the multiply is unchecked, so it wraps to a small value and the loader allocates a buffer far smaller than the data it is about to write. The load pass then recomputes the count in a narrower type and writes attacker-controlled glyph records into the undersized buffer.
Text from GitHub Advisory Database
Affected versions 3
- Eclipse ThreadX - GUIXaffected: all versions through 6.5.1.202602aCVE List
- Eclipse ThreadX - GUIXunaffected: 6.5.2.202603CVE List
- GUIX, eclipse threadx<= 6.5.1.202602aGitHub