CVE Index中文
L4 · Septic Tank BlewAppwrite · cloud · credentials · runtimeappwrite-runtime-secrets

Appwrite runtime attack exposes internal credentials; 1,022 projects told to rotate secrets

Appwrite confirms runtime exploitation and one customer's code access and brief modification. A separate token could read Frankfurt-hosted Function and Site secrets for about 11 hours; 1,022 projects are notified. No reads through that token were found, but audit logs are incomplete. Rotate listed secrets; self-hosters need 2.7.1.

Disclosed
Nov 4, 2026
Public disclosure date
Severity
Septic Tank Blew
No CVE: a breach, not a bug
Splash zone
Notified Cloud projects on Frankfurt compute, including some other-region Sites; self-hosters allowing untrusted deployments.
Appwrite · cloud · credentials · runtime
In the wild
Yes
Appwrite confirms runtime exploitation; bulk environment-variable reads remain unproven.

What happened

Appwrite’s November 4 disclosure separates a targeted customer compromise from a platform attack. Initial access on October 30–31 came through that customer’s own application. On November 1, code deployed in the attacker’s own Appwrite project then exploited unsafe runtime-file handling to read internal service credentials. Appwrite confirms actual use of three credentials, including reading one customer’s function code and logs, running a function and changing its code for 31 seconds before restoring it. Active platform exploitation warrants L4; the report does not establish theft from every notified project.

A different access token could read the configuration of Functions and Sites on Frankfurt compute, including secrets, from 03:53 to 14:46 UTC on November 1. Frankfurt also serves Sites for some projects whose primary region is elsewhere. Appwrite is notifying owners of 1,022 projects meeting its runtime, variable-time and secret-name conditions. That count does not mean 1,022 separate organizations or confirmed secret thefts. The vendor found no evidence of environment-variable reads, but the provider’s audit log is incomplete and irrecoverable; its alternative configuration, workload and interactive-session records cannot reveal reads. Customers must rotate affected secrets as a precaution.

In the same session, a separate storage API flaw allowed a write outside the attacker’s project storage. Appwrite reports only the attacker’s own test file written through that flaw, now deleted, and says provider logs show no reads of other customers’ files. An unauthorized content-delivery configuration change never became active. These findings should not be expanded into a confirmed general storage breach.

The Cloud incident is contained according to Appwrite: attacker access is blocked, exposed service credentials are replaced and refused, and the root cause is fixed. The company reports rejecting planted links and non-plain runtime/build files, adding container security profiles, separating unprivileged customer workloads from platform services, splitting shared credentials and replacing signing/encryption keys. Re-encryption of stored data is still in progress. None of these actions rotates customers’ third-party secrets automatically.

Self-hosted release 2.7.1 updates Open Runtimes executor 1.1.2 to 1.3.1. The release describes symlinks in execution/build logs, output or cache, plus an unchecked runtime log ID, allowing access to executor-container files and its environment, including _APP_EXECUTOR_SECRET. That secret permits direct executor-API calls, and the executor controls host Docker. The stated prerequisite is allowing an untrusted party to deploy Functions or Sites. The vendor recommends upgrading and then rotating that secret where applicable; it does not claim self-hosted customers were victims of the Cloud attack. No CVE or complete older-branch support matrix is asserted by these sources.

Fixed versions

ProductSafe fromNote
Appwrite self-hosted security release2.7.1Includes the root-cause fix; credential rotation is still needed where exposed
Bundled Open Runtimes executor1.3.1Replaces executor 1.1.2 in the Appwrite security release

Crime-scene timeline

  1. Oct 30–31, 2026

    Attacker first compromises one customer's application

    Appwrite attributes this initial access to the customer's own code and setup, separately from the later platform vulnerability.

  2. Nov 1, 2026, 03:53 UTC

    Attacker's own project reaches internal runtime-service credentials

    Unsafe handling of customer-written files exposes the Frankfurt service's configuration. Three credentials are used; another token could read Function and Site configurations, including environment variables.

  3. Nov 1, 2026, 04:06–13:33 UTC

    Credentials are used against one customer and platform services

    Appwrite reports reading the customer's function code and logs, executing a function and replacing its code for 31 seconds. Storage probes and an inactive content-delivery change are also identified.

  4. Nov 1, 2026, 14:46 UTC

    Routine service replacement invalidates the broad read token

    The possible exposure window ends. No use of that token is established, but incomplete provider audit logs prevent ruling out reads.

  5. Nov 2, 2026

    Security monitoring detects the attack and containment follows

    Within hours, Appwrite blocks the attacker's accounts and projects, ships the fix and replaces exposed credentials. Scope investigation continues through November 4.

  6. Nov 4, 2026

    Appwrite publishes its report and starts notifying 1,022 projects

    Customers are told to rotate affected secret variables and redeploy. Self-hosted release 2.7.1 brings the root-cause fix with executor 1.3.1.

Who said what

We list each claim and who made it. Primary sources (the vendor, the researcher, the registry) are marked. Where reports disagree, we grade by the worst credible case.

  • Appwrite November 4 incident reportPrimaryConfirms runtime exploitation, the separate storage flaw, observed use against one customer, the Frankfurt exposure window and 1,022 notified projects. Explains incomplete audit evidence, containment and customer secret rotation with redeployment.
  • Appwrite 2.7.1 security releasePrimaryRead through the public GitHub release API as well as the release page. Specifies executor 1.1.2 to 1.3.1, symlink and unchecked log-ID handling, executor-secret access, untrusted-deployer prerequisite, upgrade and secret-rotation steps.
  • Appwrite API-key documentationPrimaryExplains creating a minimally scoped key from the project sidebar and replacing application credentials before deleting the old key.