Skip to main content

Nextcloud Tables CVE-2025-58051

MEDIUM
Improper Enforcement of Behavioral Workflow (CWE-841)
2025-10-16 security-advisories@github.com
6.5
CVSS 3.1 · Vendor: github
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Authenticate as low-privileged Tables user
  2. Exploit
    Submit import with server file path
  3. Execution
    Backend passes path to PhpSpreadsheet parser
  4. Impact
    File 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.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
No patch listed yet 0.5% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

Vendor (github) PRIMARY 6.5 MEDIUM
AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
vuln.today AI 6.5 MEDIUM

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.

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (github).

CVSS VectorVendor: github

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
None
Availability
None

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

EPSS Score
0.5%
Top 57% exploitable
Prevalence
Medium
optional app within widely self-hosted Nextcloud, not universally installed
Data Quality
4 sources
Confidence: Medium

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.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.5%
Patch available No
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact· derived
Medium

Priority Score

33
Low Medium High Critical
KEV: 0
EPSS: +1
CVSS: +32
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

CVE-2023-26482 HIGH POC
8.8 Mar 30

Nextcloud server is an open source home cloud implementation. Rated high severity (CVSS 8.8), this vulnerability is remo

CVE-2020-8180 CRITICAL POC
9.9 Jun 08

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

CVE-2023-48306 CRITICAL POC
9.8 Nov 21

Nextcloud Server provides data storage for Nextcloud, an open source cloud platform. Rated critical severity (CVSS 9.8),

CVE-2026-110447 CRITICAL POC
9.2 Oct 14

Unauthenticated OS command injection in the Collabora Online Built-in CODE Server Nextcloud app (richdocumentscode) befo

CVE-2026-55640 CRITICAL POC
9.1 Aug 25

Unauthenticated vector-store tampering in Nextcloud MCP Server before 0.117.2 lets any network attacker who can reach th

CVE-2016-9463 HIGH POC
8.1 Mar 28

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

CVE-2023-31128 HIGH POC
8.8 May 26

NextCloud Cookbook is a recipe library app. Rated high severity (CVSS 8.8), this vulnerability is remotely exploitable,

CVE-2023-28643 HIGH POC
8.8 Mar 30

Nextcloud server is an open source home cloud implementation. Rated high severity (CVSS 8.8), this vulnerability is remo

CVE-2021-22879 HIGH POC
8.8 Apr 14

Nextcloud Desktop Client prior to 3.1.3 is vulnerable to resource injection by way of missing validation of URLs, allowi

CVE-2019-12739 HIGH POC
8.8 Jun 05

lib/Controller/ExtractionController.php in the Extract add-on before 1.2.0 for Nextcloud allows Remote Code Execution vi

CVE-2026-22683 HIGH POC
8.7 Apr 07

Authorization bypass in Windmill 1.56.0-1.614.0 enables Operator role users to escalate privileges to remote code execut

CVE-2020-8259 HIGH POC
8.1 Nov 16

Insufficient protection of the server-side encryption keys in Nextcloud Server 19.0.1 allowed an attacker to replace the

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy