Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessIdentify publicly accessible Grist document
-
DeliveryObtain section ID from document URL or enumeration
-
ExploitSend unauthenticated GET /forms request with target section ID
-
ExecutionServer returns metadata without access rule evaluation
-
PersistExtract hidden table and column names and types
-
ImpactUse schema map for targeted reconnaissance or follow-on access
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V14 - Data Protection Data exposure prevention
MITRE ATT&CK
2 techniques across 2 tactics: Collection, Discovery The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires network access to a Grist instance running grist-core prior to 1.7.15. For publicly viewable documents, no authentication is required - public (anonymous) access is sufficient, meaning the effective attack surface includes any internet-facing Grist instance with at least one public document. For non-public documents, a low-privileged account with partial read access to the document is required (CVSS PR:L). The attacker must supply a valid section ID, which can be observed from normal document URLs or enumerated. Exploitation is meaningfully impactful only when the target document has access rules configured to hide specific tables or columns - instances with no access rules configured are not adversely affected by this bypass. The impact is strictly limited to schema metadata (table and column structure); row-level data content is not exposed. |
| Impact | The official CVSS 3.1 score of 4.3 (Medium) uses PR:L, reflecting that some level of read access is needed. However, the vulnerability description explicitly states exploitation is possible via public access on a publicly viewable document, which implies PR:N is the accurate worst-case metric - a discrepancy worth noting. Real-world risk is elevated for organizations using Grist access rules as a primary mechanism to conceal sensitive schema design (e.g., hidden pricing tables, internal column names, restricted data categories), since the bypass completely undermines that control for any viewer. Impact is bounded to schema metadata only - actual cell data is not exposed - which keeps overall severity in the medium range. No EPSS score was provided in the input, so exploitation probability cannot be quantified. The vulnerability is not in CISA KEV and no POC has been identified, suggesting opportunistic exploitation is not currently occurring. The primary risk is targeted reconnaissance by a low-privileged or anonymous user seeking to map hidden document structure prior to further attacks or data exfiltration attempts. |
| Exploit ScenarioDerived | An anonymous user browses to a publicly shared Grist document and, by enumerating or guessing section IDs from the document URL, sends a crafted GET /forms request referencing a non-form section. The server returns the full table and column metadata for that section - including names and types of columns the document owner's access rules intended to hide - without requiring authentication or triggering any access rule evaluation. No public exploit code has been identified, but the attack requires only standard HTTP tooling and knowledge of the section ID format observable from normal document interaction. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jul 10, 2026
Unauthorized schema disclosure in Grist Core prior to 1.7.15 allows any user with partial read access - explicitly including anonymous public users on publicly viewable documents - to retrieve table and column metadata for any widget by querying the GET /forms endpoint. The endpoint failed both to validate that the requested section was a form widget and to apply the document's configured access rules before returning metadata, meaning hidden schema structure (table names, column names, types) is fully exposed regardless of the restrictions in place. No public exploit has been identified and the vulnerability is not in CISA KEV; a vendor-released patch exists in version 1.7.15.
RemediationAI
Upgrade grist-core to version 1.7.15, which is the vendor-confirmed fix per the GitHub release tag at https://github.com/gristlabs/grist-core/releases/tag/v1.7.15 and the security advisory at https://github.com/gristlabs/grist-core/security/advisories/GHSA-w2hc-w6cg-xvh9; the specific patch commit is https://github.com/gristlabs/grist-core/commit/14694156fe99c438c5f7a452ad367e933bb194db. For administrators unable to patch immediately, restricting network-level access to the Grist instance so only trusted, authenticated users can reach the application will eliminate the public-user attack surface; the trade-off is loss of legitimate public document sharing functionality. There is no known configuration toggle to disable the /forms endpoint independently without patching.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Grist is an open-source spreadsheet application (CPE: cpe:2.3:a:gristlabs:grist-core:*:*:*:*:*:*:*:*) that uses Python as its formula language and implements document-level access control rules to restrict which tables and columns particular users may read. The GET /forms endpoint was introduced to serve metadata for form widgets embedded in documents. The root cause is CWE-200 (Exposure of Sensitive Information to an Unauthorized Actor): the endpoint performed no authorization gating - it did not check whether the caller's access rules permitted reading the queried section's metadata, nor did it validate that the referenced section was actually a form widget rather than an arbitrary table/column widget. This allowed the endpoint to function as an unrestricted schema introspection API for any caller who could reach the document at all, including the public.
Know when Python gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N
The description explicitly includes unauthenticated public users on public documents, warranting PR:N; confidentiality impact is low as only schema metadata, not row data, is disclosed.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.org
Grist is spreadsheet software using Python as its formula language. Prior to 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. This issue is fixed in version 1.7.15.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
Wazuh SIEM platform versions 4.4.0 through 4.9.0 contain an unsafe deserialization vulnerability in the DistributedAPI t
BentoML version 1.4.2 and earlier contains an unauthenticated remote code execution vulnerability through insecure deser
pgAdmin 4 contains critical remote code execution vulnerabilities in the Query Tool download and Cloud Deployment endpoi
The renderLocalView function in render/views.py in graphite-web in Graphite 0.9.5 through 0.9.10 uses the pickle Python
BentoML is a Python library for building online serving systems optimized for AI apps and model inference. Rated critica
OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0.1h does not properly restrict processing of ChangeCiph
pyLoad download manager version prior to 0.5.0b3.dev77 exposes the Flask SECRET_KEY through an unauthenticated endpoint.
Langflow (a visual LLM pipeline builder) contains a critical unauthenticated code execution vulnerability (CVE-2026-3301
In Mercurial before 4.1.3, "hg serve --stdio" allows remote authenticated users to launch the Python debugger, and conse
Unauthenticated remote code execution affects Kestra OSS (the open-source event-driven orchestration platform) prior to
Unauthenticated remote code execution in Marimo ≤0.20.4 allows attackers to execute arbitrary system commands via the `/
pyLoad is the free and open-source Download Manager written in pure Python. Rated medium severity (CVSS 5.3), this vulne
EUVD-2026-43046
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB