Unauthenticated Vector Data Deletion in nextcloud-mcp-server via CVE-2026-55640
An unauthenticated remote attacker can delete or corrupt semantic search vector embeddings in Qdrant by sending a crafted POST request to the /webhooks/nextcloud endpoint due to missing default authentication.
CVE search metadata
CVE search record: CVE-2026-55640. Severity: critical. CVSS: 9.1. KEV: no. Product: nextcloud-mcp-server. Brief: Unauthenticated Vector Data Deletion in nextcloud-mcp-server via CVE-2026-55640. Brief link: https://feed.craftedsignal.io/briefs/2026-08-nextcloud-mcp-server-auth-bypass/
The nextcloud-mcp-server application, specifically versions 0.117.1 and earlier, contains a critical authentication bypass vulnerability (CVE-2026-55640). The webhook receiver endpoint at POST /webhooks/nextcloud fails to enforce security checks by default because the WEBHOOK_SECRET configuration variable is not required at startup and defaults to None.
When this secret is unset, the server skips all authentication validation and proceeds to process incoming JSON payloads. An attacker can supply an arbitrary user.uid within the payload, which the server then uses to interact with the backend Qdrant database. This allows unauthorized parties to manipulate or delete vector embeddings associated with any user index. This vulnerability is significant as it requires no prior authentication or system access, and can be used to perform mass-deletion attacks, effectively destroying the semantic search capabilities of the target Nextcloud instance.
Attack Chain
- Attacker performs network reconnaissance to identify instances of
nextcloud-mcp-serverlistening on port 8000. - Attacker verifies the target is running a vulnerable version (<= 0.117.1) where
WEBHOOK_SECRETis unset. - Attacker crafts a malicious JSON payload formatted as an
OCP\Files\Events\Node\BeforeNodeDeletedEventwebhook. - Attacker inserts a target
user.uidand specific document ID into the JSON payload fields. - Attacker sends an unauthenticated
POSTrequest to/webhooks/nextcloudtargeting the reachable endpoint. - The server application accepts the request due to the missing secret validation and passes the attacker-controlled
user_idto the Qdrant database client. - The Qdrant backend executes the delete operation, removing the specific vector embeddings for the chosen user and document.
- Attacker repeats this process across multiple document IDs or users to disrupt semantic search services (Denial of Service).
Impact
Successful exploitation allows unauthenticated attackers to delete or corrupt the entire semantic search index for all users within the affected Qdrant instance. This results in a complete loss of search functionality, requiring costly recovery and re-indexing operations. The vulnerability affects any deployment that has not explicitly configured a WEBHOOK_SECRET, which is the default state for the application.
Recommendation
- Upgrade
nextcloud-mcp-serverto the latest secure version immediately. - Enforce the
WEBHOOK_SECRETconfiguration by adding a validation check inconfig_validators.pythat raises aConfigurationErrorif the secret is unset when vector sync is enabled. - Update
webhook_receiver.pyto reject all incoming requests with a 503 or 401 error code if theWEBHOOK_SECRETis not provided and validated via an HMAC-protected Authorization header. - Monitor web server logs for high volumes of
POSTrequests to/webhooks/nextcloudoriginating from untrusted network segments.
Immediate actions
Deploy Sigma rule to identify unauthenticated requests to /webhooks/nextcloud.
Mitigations
Patch nextcloud-mcp-server to latest version and enforce WEBHOOK_SECRET in configuration.
CVE-2026-55640
Detection coverage 1
Detects CVE-2026-55640 Exploitation - Unauthenticated Webhook POST
criticalDetects unauthenticated POST requests to the /webhooks/nextcloud endpoint, which indicates potential CVE-2026-55640 exploitation attempts.
Detection queries are available on the platform. Get full rules →