Skip to main content
CVE Vulnerability Database
Vulnerability Database/CVE-2025-64752

CVE-2025-64752: Getgrist Grist-core SSRF Vulnerability

CVE-2025-64752 is a server-side request forgery flaw in Getgrist Grist-core that allows users to execute URL fetches server-side, potentially escalating attacks through privileged network access. This post covers technical details, affected versions, impact assessment, and mitigation strategies.

Published:

CVE-2025-64752 Overview

CVE-2025-64752 is a Server-Side Request Forgery (SSRF) vulnerability in grist-core, an open-source spreadsheet hosting server developed by Grist Labs. Versions prior to 1.7.7 allow any user with access to a document on a Grist installation to abuse a URL-fetching feature that executes requests from the server. Attackers can leverage the server's privileged network position to reach internal services or resources otherwise unreachable from the public internet. The issue is tracked as [CWE-918] and fixed in version 1.7.7 by routing untrusted fetches through a proxy.

Critical Impact

Authenticated users can coerce the Grist server into issuing HTTP/HTTPS requests to internal endpoints, enabling reconnaissance and potential access to credential-bearing services on adjacent networks.

Affected Products

  • Grist Labs grist-core versions prior to 1.7.7
  • Self-hosted Grist installations exposing document access to users
  • Deployments where Grist shares network reachability with internal HTTP/HTTPS services

Discovery Timeline

  • 2025-11-13 - CVE-2025-64752 published to NVD
  • 2026-06-17 - Last updated in NVD database

Technical Details for CVE-2025-64752

Vulnerability Analysis

Grist provides a feature that allows documents to fetch data from arbitrary URLs. The fetch operation executes on the server rather than in the user's browser. Any authenticated user holding access to a document can invoke this functionality. Because the server initiates the outbound connection, it inherits the trust boundary of the host: internal metadata endpoints, loopback services, and private-network APIs become reachable. This class of flaw is categorized as SSRF under [CWE-918].

The practical impact depends on what the Grist server can reach. On cloud-hosted deployments, attackers may target instance metadata services such as http://169.254.169.254/ to enumerate credentials. In enterprise networks, internal admin panels, databases with HTTP interfaces, and unauthenticated management endpoints become exposure points.

Root Cause

The root cause is missing validation and network isolation for server-side URL fetches. The feature accepted user-controlled URLs and issued requests directly from the Grist process without routing them through a segregated proxy or applying an allowlist. Grist 1.7.7 addresses this by directing untrusted fetches through a proxy, which enforces separation between the application's privileged network context and outbound requests originating from user input.

Attack Vector

An authenticated attacker with document access crafts a formula or configuration that triggers the URL-fetch feature. The URL points to an internal-only resource such as a cloud metadata endpoint, a loopback administrative interface, or an internal HTTP service. The Grist server issues the request from its privileged position and returns the response content to the attacker. No user interaction is required beyond the attacker's own session.

No verified public proof-of-concept code is available. See the GitHub Security Advisory GHSA-qh95-2qv8-pqx3 for advisory details.

Detection Methods for CVE-2025-64752

Indicators of Compromise

  • Outbound HTTP/HTTPS requests from the Grist server process to link-local addresses such as 169.254.169.254 or RFC1918 ranges not associated with normal application dependencies
  • Grist application logs showing URL-fetch operations targeting loopback (127.0.0.1, ::1) or internal hostnames
  • Unexpected access patterns to cloud instance metadata endpoints originating from the Grist workload's IAM role

Detection Strategies

  • Inspect egress traffic from Grist hosts and flag connections to private, loopback, or metadata IP ranges
  • Correlate Grist document-modification events with subsequent outbound fetches to detect abuse of user-supplied URLs
  • Alert on anomalous credential use by the Grist service identity, which may indicate metadata-service theft

Monitoring Recommendations

  • Ingest Grist application and access logs into a centralized SIEM for query and retention
  • Baseline normal outbound destinations for the Grist service and alert on deviations
  • Monitor cloud audit logs (AWS CloudTrail, Azure Activity Log, GCP Audit Logs) for use of credentials associated with the Grist instance role

How to Mitigate CVE-2025-64752

Immediate Actions Required

  • Upgrade grist-core to version 1.7.7 or later on all self-hosted installations
  • Review document access permissions and revoke access from untrusted users pending patch deployment
  • Audit outbound network logs from Grist hosts for prior abuse of the URL-fetch feature

Patch Information

Grist Labs released the fix in Grist Core Release v1.7.7. The patch routes untrusted server-side fetches through a proxy so that user-controlled URLs no longer execute in the Grist server's privileged network context. Refer to the GitHub Security Advisory GHSA-qh95-2qv8-pqx3 for advisory guidance.

Workarounds

  • Remove or firewall HTTP/HTTPS endpoints reachable from the Grist instance that expose credentials or operate without authentication
  • Deploy Grist inside a network segment that cannot reach cloud metadata services or internal management interfaces
  • Enforce egress filtering that blocks the Grist process from connecting to RFC1918, loopback, and link-local addresses
bash
# Example iptables egress restriction for the Grist host
iptables -A OUTPUT -m owner --uid-owner grist -d 169.254.169.254 -j REJECT
iptables -A OUTPUT -m owner --uid-owner grist -d 10.0.0.0/8 -j REJECT
iptables -A OUTPUT -m owner --uid-owner grist -d 172.16.0.0/12 -j REJECT
iptables -A OUTPUT -m owner --uid-owner grist -d 192.168.0.0/16 -j REJECT
iptables -A OUTPUT -m owner --uid-owner grist -d 127.0.0.0/8 -j REJECT

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Default Legacy - Prefooter | Experience the World’s Most Advanced Cybersecurity Platform

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.