← Back to Feed CACHED · 2026-08-29 12:57:26 · CACHE_KEY CVE-2023-49105
CVE-2023-49105 · CWE-287 · Disclosed 2023-11-21

ownCloud owncloud/core before 10.13.1.

ASSESSED — NOISGATE V0.5
Vendor
Reassessed
Verdict:
Do you agree?
01 · The Real Story

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.

"Unauthenticated file takeover using an empty crypto key — already weaponized by nation-state operators."
02 · The Attack Path

5 steps from start to impact.

STEP 01

Enumerate target ownCloud instance

The attacker identifies an internet-facing ownCloud instance via Shodan, FOFA, or Censys. As of late 2023, Shodan indexed approximately 12,320 publicly reachable ownCloud instances. The /status.php endpoint freely discloses the exact version, confirming vulnerability.
Conditions required:
  • Internet-facing ownCloud instance running 10.6.0–10.13.0
Where this breaks in practice:
  • Organizations that run ownCloud behind VPN or SSO gateway reduce exposure
Detection/coverage: Shodan/Censys dork: http.title:"ownCloud" or http.component:ownCloud. Version fingerprint via /status.php.
STEP 02

Obtain a valid username

ownCloud federation, sharing links, and user-enumeration via the OCS API commonly leak usernames. The 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.
Conditions required:
  • Knowledge of at least one valid username on the instance
Where this breaks in practice:
  • Virtually none — admin exists by default and sharing links expose usernames
Detection/coverage: Audit OCS Provisioning API access logs for unauthenticated user-list queries.
STEP 03

Forge pre-signed WebDAV URL

The attacker computes a PBKDF2-SHA512 hash using an empty key (the default when no signing-key is set), with attacker-chosen URL path, OC-Verb, OC-Date, and OC-Expires parameters. The resulting 64-hex-character signature is appended as 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.
Conditions required:
  • Target user has no signing-key configured (default)
  • Ability to compute PBKDF2-SHA512 with empty key
Where this breaks in practice:
  • None — every parameter is known or attacker-controlled, and PoC scripts are public
Detection/coverage: WAF rules matching OC-Signature + OC-Credential query parameters on WebDAV endpoints without a valid session cookie.
STEP 04

Exfiltrate, modify, or delete files

With the forged URL, the attacker issues GET requests to download any file the target user can access, PUT to overwrite files (potential for webshell upload if PHP execution is possible on the storage path), or DELETE to destroy data. The Philippine campaign staged 176 files (~372 MB initially, ~9 GB total) across five directories before exfiltration.
Conditions required:
  • Successful signature validation bypass from Step 3
Where this breaks in practice:
  • Large-scale exfiltration may trigger bandwidth alerts, but small targeted theft will not
Detection/coverage: Monitor WebDAV access logs for bulk file reads by pre-signed URL without corresponding interactive sessions. DLP on outbound traffic from the ownCloud server.
STEP 05

Pivot to RCE or credential harvest

Exfiltrated files may contain credentials (KeePass databases, SSH keys, API tokens, .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.
Conditions required:
  • Sensitive credentials stored in ownCloud
  • Or: PHP execution possible on file storage path
Where this breaks in practice:
  • Not all deployments store credentials in ownCloud
  • Object-storage backends may prevent PHP execution
Detection/coverage: File-integrity monitoring on ownCloud data directories for new .php files. Endpoint detection on the ownCloud server for unexpected child processes of the web server.
03 · Intelligence Metadata

The supporting signals.

In-the-wild exploitationYES — 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 statusAdded 2026-08-27 by CISA. Federal agencies must remediate per BOD 22-01 deadlines.
Proof-of-conceptPublic 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 score0.41192 (~96th percentile) — indicates high predicted exploitation probability.
CVSS vectorCVSS: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 versionsownCloud core 10.6.0 through 10.13.0 (all releases over a ~3-year window).
Fixed versionownCloud core 10.13.1 (released 2023-11-20). Vendor recommends 10.13.3+ for additional hardening.
Exposure dataShodan indexed ~12,320 ownCloud instances publicly reachable (Dec 2023 scan). Many remain unpatched given the long tail of self-hosted deployments.
Disclosure date2023-11-21 (coordinated with ownCloud advisory SA-2023-015). GreyNoise Labs published detailed analysis 2023-12-05.
Researcher / orgDiscovered by Ambionics Security (Lexfo). Philippine campaign attributed by Hunt.io researchers.
04 · The Call

noisgate verdict.

Final Verdict
= UNCHANGED to CRITICAL (9.8/10)

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.

HIGH Vulnerability mechanism and exploitability
HIGH Active exploitation in the wild
MEDIUM Total exposed population (Shodan data is 2+ years old)

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.

05 · Compensating Control

What to do — in priority order.

  1. 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/ containing OC-Signature and OC-Credential query 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.
  2. 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.
  3. Force signing-key initialization for all users — Use the occ CLI 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.
  4. Audit WebDAV access logs for pre-signed URL abuse — Search Apache/nginx access logs for requests containing OC-Signature paired with OC-Credential — especially for the admin account. Cross-reference with known session activity. Any match without a corresponding interactive login is a strong indicator of compromise.
What doesn't work
  • 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.
06 · Verification

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.

noisgate-verify.sh
BASHREAD-ONLYSAFE
#!/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
fi
07 · Bottom Line

If you remember one thing.

TL;DR
This is a live fire situation. CVE-2023-49105 was added to the CISA KEV catalog on 2026-08-27 — two days ago — following confirmed nation-state exploitation against a government nuclear research facility. If you operate any ownCloud instance, Monday morning you should: (1) confirm whether your instances are internet-facing and running versions 10.6.0–10.13.0 using the verification script; (2) immediately deploy a WAF block on pre-signed WebDAV URLs or pull the instance behind VPN — this is your noisgate mitigation SLA of ≤ 3 days for CRITICAL; (3) upgrade to ownCloud 10.13.1+ (ideally 10.13.3+) within the noisgate remediation SLA of ≤ 90 days, though given active KEV exploitation you should treat this as patch immediately, within hours per KEV override policy; (4) review WebDAV access logs for any historical pre-signed URL requests containing OC-Signature parameters — if found, initiate incident response. Do not wait for your next patch cycle.

Sources

  1. GreyNoise Labs — The Forgotten ownCloud Vulnerability
  2. Ambionics ownCloud Exploits (PoC)
  3. Hunt.io — Philippine Nuclear and Naval Targets
  4. CISA KEV Addition Alert (2026-08-27)
  5. GBHackers — Philippine Nuclear Agency Attack
  6. Arctic Wolf — Multiple ownCloud CVEs
  7. GitHub Advisory GHSA-585g-f852-v6p4
  8. SecurityAffairs — CISA Adds ownCloud to KEV
Peer Review

What defenders are saying.

Submit a review attribution: handle + country only
0 flags selected · stored anonymously
Validation Results

Crowdsourced verification outputs.

Results submitted by users who ran the verification payload against their environment.