The vault door accepts any key because nobody set the combination, and a spy already walked in
CVE-2023-49105 is an authentication bypass in ownCloud Server's WebDAV API (versions 10.6.0 through 10.13.0, fixed in 10.13.1). The flaw lives in lib/private/Security/SignedUrl/Verifier.php: when a user has no signing-key configured — which is the default state — the server uses an empty string as the PBKDF2-SHA512 secret. Because every other input to the hash (URL, verb, expiry, iteration count) is attacker-controlled, anyone who knows a valid username can forge a pre-signed WebDAV URL and read, overwrite, or delete every file that user owns. No credentials, no session, no interaction required.
The vendor's CRITICAL / 9.8 rating is fully justified and, if anything, understates operational risk. The attack surface is network-reachable by default, the precondition (knowing a username) is trivial — ownCloud exposes usernames in sharing links and federation endpoints — and the default configuration is vulnerable out of the box. CISA added this to the KEV catalog on 2026-08-27 after Hunt.io documented a suspected Chinese-speaking operator exploiting it to exfiltrate ~9 GB of nuclear research data, reactor fuel inventories, and KeePass credential vaults from a Philippine government research agency. Multiple weaponized PoCs have been public since late 2023 (Ambionics pwncloud-webdav.py). There is no plausible friction that narrows this chain — it is point-and-shoot against any internet-facing ownCloud instance running a vulnerable version.
5 steps from start to impact.
Enumerate target ownCloud instance
/status.php endpoint freely discloses the exact version, confirming vulnerability.- Internet-facing ownCloud instance running 10.6.0–10.13.0
- Organizations that run ownCloud behind VPN or SSO gateway reduce exposure
http.title:"ownCloud" or http.component:ownCloud. Version fingerprint via /status.php.Obtain a valid username
admin account exists on virtually every installation. In the Philippine attack, operators simply targeted the default admin and known staff accounts. No brute-force or credential stuffing is needed.- Knowledge of at least one valid username on the instance
- Virtually none —
adminexists by default and sharing links expose usernames
Forge pre-signed WebDAV URL
OC-Signature. Ambionics' public pwncloud-webdav.py automates this entirely. The Philippine operators used five custom Python scripts with randomized request delays (1.5–6 seconds) to evade rate limiting.- Target user has no signing-key configured (default)
- Ability to compute PBKDF2-SHA512 with empty key
- None — every parameter is known or attacker-controlled, and PoC scripts are public
OC-Signature + OC-Credential query parameters on WebDAV endpoints without a valid session cookie.Exfiltrate, modify, or delete files
- Successful signature validation bypass from Step 3
- Large-scale exfiltration may trigger bandwidth alerts, but small targeted theft will not
Pivot to RCE or credential harvest
.env files). If PHP execution is enabled on the upload path, the attacker can write a webshell via PUT and achieve remote code execution on the ownCloud server. The Philippine attack recovered encryption keys and credential archives, enabling further lateral movement.- Sensitive credentials stored in ownCloud
- Or: PHP execution possible on file storage path
- Not all deployments store credentials in ownCloud
- Object-storage backends may prevent PHP execution
.php files. Endpoint detection on the ownCloud server for unexpected child processes of the web server.The supporting signals.
| In-the-wild exploitation | YES — confirmed. Suspected Chinese-speaking operators exploited this against a Philippine nuclear research agency (disclosed 2026-08-25 by Hunt.io). Custom Python exploit scripts with evasion delays recovered from attacker staging server. |
|---|---|
| KEV status | Added 2026-08-27 by CISA. Federal agencies must remediate per BOD 22-01 deadlines. |
| Proof-of-concept | Public and weaponized. Ambionics released pwncloud-webdav.py in late 2023. Multiple forks exist (e.g., test1213145/exp-owncloud-exploits). The Philippine attack used five bespoke Python scripts implementing the same technique. |
| EPSS score | 0.41192 (~96th percentile) — indicates high predicted exploitation probability. |
| CVSS vector | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H — network-reachable, no privileges, no user interaction, full CIA impact. Every metric is worst-case. |
| Affected versions | ownCloud core 10.6.0 through 10.13.0 (all releases over a ~3-year window). |
| Fixed version | ownCloud core 10.13.1 (released 2023-11-20). Vendor recommends 10.13.3+ for additional hardening. |
| Exposure data | Shodan indexed ~12,320 ownCloud instances publicly reachable (Dec 2023 scan). Many remain unpatched given the long tail of self-hosted deployments. |
| Disclosure date | 2023-11-21 (coordinated with ownCloud advisory SA-2023-015). GreyNoise Labs published detailed analysis 2023-12-05. |
| Researcher / org | Discovered by Ambionics Security (Lexfo). Philippine campaign attributed by Hunt.io researchers. |
noisgate verdict.
The single most decisive factor is zero-friction unauthenticated remote exploitation against a default configuration, now validated by nation-state weaponization and a CISA KEV listing dated two days ago. No prerequisite in the chain narrows the reachable population or requires a prior compromise stage — the attacker needs only a username and a network path to the WebDAV endpoint.
Why this verdict
- No authentication required. The entire chain is unauthenticated — AV:N/PR:N. There is no login, no session, no token to obtain first. This eliminates the most common friction point in critical CVEs.
- Default configuration is vulnerable. The signing-key is empty by default. Administrators must have *proactively* configured a signing secret — a step not mentioned in standard deployment guides — for the vuln to be mitigated. This means virtually 100% of unpatched installs are exploitable.
- Weaponized PoC + nation-state exploitation. Ambionics published a turnkey exploit in 2023. In August 2026, Hunt.io documented a suspected Chinese-speaking operator using custom scripts implementing this exact bypass to exfiltrate nuclear research data from a Philippine government agency. CISA added CVE-2023-49105 to the KEV catalog on 2026-08-27.
- EPSS 96th percentile. At 0.41192, the model places this firmly in the top tier of predicted exploitation probability, consistent with observed activity.
- Role multiplier: ownCloud is deployed as an organizational file-sharing and collaboration platform — it is by definition a data repository holding documents, credentials, and sensitive IP. Compromise grants the attacker access to every file of every user whose signing-key is unconfigured (i.e., all users by default). In the Philippine case, this included reactor databases, personnel files, and KeePass credential vaults. The blast radius is organization-wide data exfiltration plus potential credential-harvest-driven lateral movement. ownCloud instances at government, research, and enterprise organizations routinely hold regulated and classified data — this is a canonical high-value-role deployment, supporting a CRITICAL floor.
Why not higher?
The vendor already rates this 9.8 CRITICAL, the maximum practical score for a Scope:Unchanged vulnerability. There is no higher bucket to assign. A 10.0 would require Scope:Changed, which does not apply here since the compromised component (ownCloud WebDAV) and the impacted component (user files) are within the same security authority.
Why not lower?
Every downgrade factor is absent. The attack is unauthenticated, requires no user interaction, works against default configurations, targets an internet-facing service, has public weaponized exploits, confirmed nation-state exploitation, and a fresh KEV listing. Dropping below CRITICAL would require evidence that ownCloud is rarely internet-exposed or that signing-keys are universally configured — neither is true. The Shodan footprint and the Philippine incident prove otherwise.
What to do — in priority order.
- Block unauthenticated WebDAV pre-signed URL access at WAF/reverse proxy — Add a WAF rule or nginx/Apache rewrite that strips or rejects requests to
/remote.php/dav/containingOC-SignatureandOC-Credentialquery parameters when no valid session cookie is present. Deploy within the noisgate mitigation SLA of ≤ 3 days (CRITICAL). This eliminates the attack vector without requiring an ownCloud upgrade. - Restrict ownCloud to VPN/ZTNA access only — Move the ownCloud instance behind a VPN or zero-trust network access gateway so it is not directly internet-reachable. This eliminates the unauthenticated remote attack surface entirely. If business requirements demand external access, enforce SSO/MFA at the gateway layer. Deploy within ≤ 3 days.
- Force signing-key initialization for all users — Use the
occCLI to generate signing keys for every user account:occ user:setting <user> core signing-key <random-value>. This directly neutralizes the empty-key bypass. Script this across all user accounts immediately. - Audit WebDAV access logs for pre-signed URL abuse — Search Apache/nginx access logs for requests containing
OC-Signaturepaired withOC-Credential— especially for theadminaccount. Cross-reference with known session activity. Any match without a corresponding interactive login is a strong indicator of compromise.
- Rate limiting alone — the Philippine attackers used randomized 1.5–6 second delays between requests, easily staying under typical rate-limit thresholds while exfiltrating hundreds of files.
- IP-based geo-blocking — the attacker infrastructure was hosted in Amsterdam (EU), not in a commonly blocked region. Sophisticated operators routinely use VPS providers in the target's own geography.
- ownCloud's built-in brute-force protection — this is an authentication *bypass*, not a brute-force attack. No failed logins are generated, so lockout policies never trigger.
- TLS/HTTPS alone — encrypting transport does nothing when the application-layer authentication is entirely bypassed.
Crowdsourced verification payload.
Run this script on the ownCloud server host (or any machine with network access to the instance) as any user. Usage: bash check_cve_2023_49105.sh https://owncloud.example.com. No special privileges required — it only queries the public /status.php endpoint.
#!/usr/bin/env bash
# check_cve_2023_49105.sh — Detect ownCloud CVE-2023-49105 (WebDAV auth bypass)
# Usage: bash check_cve_2023_49105.sh <owncloud_base_url>
# Exit codes: 1=VULNERABLE, 0=PATCHED, 2=UNKNOWN
set -euo pipefail
if [ $# -lt 1 ]; then
echo "Usage: $0 <owncloud_base_url>"
echo "Example: $0 https://owncloud.example.com"
exit 2
fi
BASE_URL="${1%/}"
STATUS_URL="${BASE_URL}/status.php"
# Fetch version from status.php
RESPONSE=$(curl -sk --max-time 10 "$STATUS_URL" 2>/dev/null) || {
echo "UNKNOWN — could not reach $STATUS_URL"
exit 2
}
# Extract versionstring field
VERSION=$(echo "$RESPONSE" | grep -oP '"versionstring"\s*:\s*"\K[^"]+' 2>/dev/null) || {
echo "UNKNOWN — could not parse version from status.php response"
exit 2
}
echo "Detected ownCloud version: $VERSION"
# Parse major.minor.patch
IFS='.' read -r MAJOR MINOR PATCH <<< "$VERSION"
# Affected: 10.6.0 through 10.13.0
# Fixed: 10.13.1+
if [ "$MAJOR" -ne 10 ] 2>/dev/null; then
echo "UNKNOWN — unexpected major version $MAJOR (expected 10.x)"
exit 2
fi
if [ "$MINOR" -lt 6 ] 2>/dev/null; then
echo "PATCHED — version $VERSION is below the affected range (10.6.0–10.13.0)"
exit 0
elif [ "$MINOR" -lt 13 ] 2>/dev/null; then
echo "VULNERABLE — version $VERSION is in the affected range (10.6.0–10.13.0)"
exit 1
elif [ "$MINOR" -eq 13 ] 2>/dev/null; then
if [ "${PATCH:-0}" -lt 1 ] 2>/dev/null; then
echo "VULNERABLE — version $VERSION is 10.13.0 (affected)"
exit 1
else
echo "PATCHED — version $VERSION is 10.13.1+ (fixed)"
exit 0
fi
else
echo "PATCHED — version $VERSION is above the affected range"
exit 0
fiIf you remember one thing.
OC-Signature parameters — if found, initiate incident response. Do not wait for your next patch cycle.Sources
- GreyNoise Labs — The Forgotten ownCloud Vulnerability
- Ambionics ownCloud Exploits (PoC)
- Hunt.io — Philippine Nuclear and Naval Targets
- CISA KEV Addition Alert (2026-08-27)
- GBHackers — Philippine Nuclear Agency Attack
- Arctic Wolf — Multiple ownCloud CVEs
- GitHub Advisory GHSA-585g-f852-v6p4
- SecurityAffairs — CISA Adds ownCloud to KEV
What defenders are saying.
Crowdsourced verification outputs.
Results submitted by users who ran the verification payload against their environment.