CVE-2026-55659
HighCVSS 7.7Exploitation Probability (EPSS)
Low risk19th percentile - higher than 19% of all known CVEs
Summary
Grist is spreadsheet software using Python as its formula language. Prior to version 1.7.15, several server-rendered pages embedded user-controlled values without proper escaping, leading to cross-site scripting. On the main page, a document's name or description set by an editor is rendered for other users. On the OAuth2 end-of-flow page, the openerOrigin parameter is reflected back.
Risk Assessment
An attacker can inject a script that executes in the victim's session context, allowing data read/modification, sharing settings changes, and access rule alterations. A document editor can escalate privileges to owner level.
Recommendation
Upgrade Grist to version 1.7.15 or later immediately to fix the XSS vulnerability.
Other vulnerabilities in Grist
See all- CVE-2026-55665High
Grist prior to version 1.7.15 contained two cross-site scripting vulnerabilities where an attacker-controlled value reached a link's href without scheme validation, allowing JavaScript execution in the victim's context on a single click. On the account-selection page, the next parameter was used as the link target, and in document tours, the GristDocTour table's Link_URL column became a clickable button, enabling an editor to store a malicious URL.
- CVE-2026-55664Medium
In Grist prior to version 1.7.15, the GET /forms endpoint read table and column metadata without applying the document's access rules and did not check that the requested section was actually a form. A user with only partial read access, including public access on a publicly viewable document, could request the metadata of any widget and reveal table and column structure that access rules would otherwise hide, even in documents that contain no forms.
Original NVD description (English source)
Grist is spreadsheet software using Python as its formula language. Prior to 1.7.15, several server-rendered Grist pages embedded user-controlled values into the page and into inline scripts without fully escaping them, allowing cross-site scripting. On the main application page, a document's name or description, set by a document editor, is rendered into the page that other users load when opening the document. On the OAuth2 end-of-flow page, the openerOrigin request parameter was reflected back into the served page. Injected script runs in the victim's Grist origin and can act through the authenticated session, reading or modifying data and changing sharing settings and access rules. A document editor could therefore escalate to owner-level access. This issue is fixed in version 1.7.15.

