Nextcloud Tables
CVE-2025-58051
MEDIUM
Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as low-privileged Tables user
-
ExploitSubmit import with server file path
-
ExecutionBackend passes path to PhpSpreadsheet parser
-
ImpactFile contents returned and disclosed to attacker
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V2 - Validation and Business Logic Workflow enforcement
|
| Exploitation Conditions | Exploitation requires an authenticated Nextcloud user (PR:L) who has access to the Tables app's import feature; the attacker invokes the import/previewImport flow (ImportService.php) and supplies a server-side file path instead of a legitimately uploaded file. The disclosed content is limited to files whose format is parseable by the PhpSpreadsheet library used by the app (e.g. spreadsheet/CSV/ODS/XML formats it supports), which constrains which server files can be leaked. Limiting factors: the Tables app must be installed and the attacker must hold a valid account with import permissions on a reachable instance running a version prior to 0.7.6/0.8.8/0.9.5; no code execution or write impact is possible. |
| Impact | This is a moderate-risk authenticated information disclosure flaw, not a top-tier priority. The CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N, 6.5 Medium) indicates a network-reachable attack requiring low privileges (an authenticated Nextcloud user with import capability), low complexity, no user interaction, and high confidentiality impact with no integrity or availability impact - consistent with arbitrary server-side file read. Exploitation signals are modest: EPSS is 0.53% (43rd percentile), indicating low predicted exploitation probability, and there is no CISA KEV listing. No public exploit was identified at time of analysis; a HackerOne report (3249624) exists but is a private coordinated-disclosure channel, not public POC code, so POC availability cannot be confirmed. No SSVC decision data was provided in the input. The signals are internally consistent - a low EPSS and absent KEV align with a flaw that requires authentication and yields disclosure rather than code execution. The source-code fix corroborates the mechanism: the patch adds an is_uploaded_file() check before file_exists() in ImportService.php, confirming the root cause was trusting an attacker-supplied path as if it were an uploaded file. Realistic priority is 'patch in normal cycle' rather than emergency, elevated somewhat for multi-tenant or sensitive Nextcloud deployments where any authenticated user could read server-side files (e.g. config, other users' data on disk). |
| Exploit ScenarioDerived | An authenticated Nextcloud user with access to the Tables app initiates a table import but supplies a path pointing to an arbitrary file already on the server rather than an uploaded spreadsheet. If that file is a format PhpSpreadsheet can parse, its contents are read and returned to the attacker, disclosing server-side data such as configuration or other users' files. No public exploit code was identified, though the fix diff confirms the vulnerable code path. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 09, 2026
Authenticated information disclosure in the Nextcloud Tables app (versions before 0.7.6, 0.8.8, and 0.9.5) lets a logged-in user trick the table-import flow into reading arbitrary files from the server. By invoking the import or preview import endpoint (ImportService.php) with a server-side path instead of an actual uploaded file, the attacker receives the parsed contents of any file whose format the bundled PhpSpreadsheet library can read, such as spreadsheets, CSV, ODS, or XML - resulting in high confidentiality impact with no integrity or availability effect (CVSS 3.1: 6.5, AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N). No public exploit code has been identified at time of analysis and the flaw is not listed as confirmed actively exploited (CISA KEV); EPSS is low at roughly 0.53% (43rd percentile), reflecting the authenticated precondition and the fact that the leak is confined to PhpSpreadsheet-parseable formats. This is a moderate-risk authenticated information disclosure flaw, not a top-tier priority.
RemediationAI
Vendor-released patch: upgrade the Nextcloud Tables app to 0.7.6, 0.8.8, or 0.9.5 (matching whichever branch your Nextcloud instance uses) - the app store update mechanism or occ app:update tables will apply the fix, which adds an is_uploaded_file() check in ImportService.php so only genuinely uploaded files, not arbitrary server paths, can be parsed. Validate the upgrade against advisory GHSA-wpp5-4w35-pxq6 and the PR at https://github.com/nextcloud/tables/pull/1936. If immediate patching is not possible, the most direct compensating control is to disable the Tables app entirely (occ app:disable tables) on instances where import functionality is not business-critical, accepting the loss of table features; alternatively, temporarily restrict the app to trusted groups or revoke it from untrusted users so only administrators retain import capability, at the cost of reduced user productivity and incomplete coverage against an insider with those permissions. A weaker, deployment-specific mitigation is to ensure the web-server/PHP user has minimal read access to sensitive server paths and that no PhpSpreadsheet-parseable documents containing secrets (spreadsheet exports, CSV dumps, configuration files in supported formats) reside in locations readable by the Nextcloud process - this narrows the blast radius but does not fix the workflow flaw. After upgrading, review server logs for prior abuse of the import/preview endpoints with unexpected path arguments, and rotate any credentials or secrets that may have been exposed through leaked spreadsheet or CSV content. The upstream fix is isolated to the app and carries no metadata schema change, so rollback risk is low.
Affected ProductsAI
The vulnerable component is the Nextcloud Tables app, with three affected release branches fixed independently: versions before 0.7.6, versions before 0.8.8, and versions before 0.9.5 (the different branches track compatibility with different Nextcloud server releases). Any Nextcloud instance with the Tables app installed at one of those versions and exposing the import feature to logged-in users is affected. The vendor advisory is GHSA-wpp5-4w35-pxq6 (https://github.com/nextcloud/security-advisories/security/advisories/GHSA-wpp5-4w35-pxq6), the code fix is PR 1936 (https://github.com/nextcloud/tables/pull/1936), and the original report is HackerOne report 3249624 (https://hackerone.com/reports/3249624). No CPE string was supplied in the source data, so mapping should be done by app version rather than by CPE; the affected surface is the Tables app itself rather than a specific Nextcloud server core version, though the server must be running a release compatible with the unpatched app branch.
Affects your stack
Find out whether the stacks and servers you run are on an affected version.
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Nextcloud Tables is an app that lets users build custom tables with individual columns, and it supports importing existing spreadsheets, which it parses server-side using the PhpSpreadsheet library (as reflected in ImportService.php's use of Cell, Date, and DataType). The root cause class, CWE-841 (Improper Enforcement of Behavioral Workflow), describes exactly what went wrong: the import workflow was supposed to operate only on a file that the user had just uploaded, but the code accepted any path string and validated it solely with file_exists(). Because file_exists() does not distinguish an uploaded temporary file from an arbitrary path elsewhere on the filesystem, an attacker could reach files readable by the web-server process. The upstream fix in PR 1936 strengthens the guard from \file_exists($path) to is_uploaded_file($path) && file_exists($path) in both previewImport() and import(), and also cleans up namespaced imports; is_uploaded_file() confirms the path really refers to a file delivered through PHP's HTTP upload mechanism (the request's PHP-generated upload path is normally in the system temp directory, or the Nextcloud SMB mount in some configurations). The impact is bounded by the PhpSpreadsheet parser: files in formats it cannot interpret (e.g. private keys, arbitrary text, images) either fail to parse or are not meaningfully disclosed, so the practical target set is spreadsheet/CSV/ODS/XML-style documents living on the server or reachable through the user's storage. No code execution, privilege escalation, or write primitive is possible from this bug; the CVSS vector (PR:L, C:H, I:N, A:N) confirms an authenticated, read-only leak.
Know when Nextcloud 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:H/I:N/A:N
Authenticated user abuses a network-facing import feature (AV:N/AC:L/PR:L/UI:N) to read arbitrary parseable server files, yielding high confidentiality loss but no integrity or availability impact.
Primary rating from Vendor (github).
CVSS VectorVendor: github
DescriptionCVE.org
Nextcloud Tables allows you to create your own tables with individual columns. Prior 0.7.6, 0.8.8, and 0.9.5, when importing a table, a user was able to specify files on the server and when their format is supported by the used PhpSpreadsheet library they would be included and their content leaked to the user. It is recommended that the Nextcloud Tables app is upgraded to 0.7.6, 0.8.8 or 0.9.5.
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.
Nextcloud server is an open source home cloud implementation. Rated high severity (CVSS 8.8), this vulnerability is remo
A too lax check in Nextcloud Talk 6.0.4, 7.0.2 and 8.0.7 allowed a code injection when a not correctly sanitized talk co
Nextcloud Server provides data storage for Nextcloud, an open source cloud platform. Rated critical severity (CVSS 9.8),
Unauthenticated OS command injection in the Collabora Online Built-in CODE Server Nextcloud app (richdocumentscode) befo
Unauthenticated vector-store tampering in Nextcloud MCP Server before 0.117.2 lets any network attacker who can reach th
Nextcloud Server before 9.0.54 and 10.0.1 & ownCloud Server before 9.1.2, 9.0.6, and 8.2.9 suffer from SMB User Authenti
NextCloud Cookbook is a recipe library app. Rated high severity (CVSS 8.8), this vulnerability is remotely exploitable,
Nextcloud server is an open source home cloud implementation. Rated high severity (CVSS 8.8), this vulnerability is remo
Nextcloud Desktop Client prior to 3.1.3 is vulnerable to resource injection by way of missing validation of URLs, allowi
lib/Controller/ExtractionController.php in the Extract add-on before 1.2.0 for Nextcloud allows Remote Code Execution vi
Authorization bypass in Windmill 1.56.0-1.614.0 enables Operator role users to escalate privileges to remote code execut
Insufficient protection of the server-side encryption keys in Nextcloud Server 19.0.1 allowed an attacker to replace the
NVD
CVE.org
EPSS
GitHub
Exploit-DB