~0x64616E69656C
RAES / open research / updated 15 November 2026

RAES-CAT
Causal Attribution Trial

Schrödinger's Request.
Don't predict the next vulnerability. Limit what it can achieve.

Research open — no production protection claim.
A possible nxTLS add-on; no adopted protective architecture.
one bounded outcome preventedno production protection claim
THE QUESTION

During the patch gap,
what could we still protect?

RAES began during the October 2026 PHP2Shell patch window: disclosed vulnerabilities, active attacks and no immediately available PHP fix. Could an nginx edge and independent security boundaries limit the consequences of exploitation?

Can an edge/backend security boundary prevent or meaningfully contain a concrete compromise outcome, including in a multi-request chain, without knowing the future vulnerability?One request may corrupt persistent backend state; a later request may trigger disclosure or code execution. Request count is not a security invariant.

The research goal is a measurable protection benefit against one explicitly defined harmful outcome, compared with an unchanged baseline: the forbidden operation or harmful output must actually be prevented, legitimate work must remain acceptably functional, and limits and costs must be understood. Perfect identification of the original corrupting request, universal exploit detection and perfectly selective HTTP/2 response cancellation are not required.

PRESERVED EVIDENCE

What ran.
What remains unproved.

The existing CAT records preserve different kinds of evidence. Passing a cooperative fixture or an offline check does not establish protection under compromise.

CAT-0 / ADMISSION

Stock nginx carried the decision.

The admission fixture passed A–E: seven authorization calls and four backend calls over one TLS/HTTP/2 connection. Native execution attribution and post-compromise protection were not established.

FIXTURE PASS
CAT-O / COOPERATIVE OWNERSHIP

Routing reached a known process.

O0–O7 passed, with eight selected native opens independently traced. Same-UID actors and trusted startup left attacker-resistant exclusivity and ownership before untrusted code unproved.

PARTIAL / CONDITIONAL
CAT-P / OWNERSHIP FAILURE

A sibling crossed the boundary.

A same-UID process modified another instance's release resource; that instance ran without broker release. The ownership property failed. Native denial and response-selectivity gates were not run; the BPF assessment was source feasibility only.

OWNERSHIP FAIL / GATES BLOCKED
CAT-G / OFFLINE PREPARATION

Preparation is not enforcement proof.

A prototype compiled and nine recorded offline checks passed, including an ordinary-user pre-exec barrier observation. Dedicated-identity isolation, kernel owner registration and native enforcement remain untested.

NATIVE GATES NOT RUN
ENTANGLEMENT OUTCOME TRIAL / BOUNDED PASS · 15 NOVEMBER 2026

One downstream operation stopped.

In a synthetic patched PHP 8.4.27 worker, Request A left process-local state that Request B observed in the same worker. With no new enforcement, B appended to a disposable canary. Under a dedicated AppArmor profile, the kernel denied B's exact canary open (requested_mask="ac", denied_mask="ac") and the canary stayed unchanged. The policy did not need to attribute the marker to A to stop this selected outcome.

Permitted work succeeded under the unchanged profile in a fresh worker, not in the protected A→B generation. The first protected controller exited 1 because its audit checker expected w instead of the observed ac; its raw kernel and file observations are preserved as such. Both policy activations were removed and the before/after policy inventories matched.

EVIDENCE BOUNDARY

Name the benefit.
Keep its limits visible.

Prevention blocks a defined operation or outcome. Containment bounds consequences after compromise. Detection observes a signal; attribution binds it to an owner or request. Client delivery concerns which bytes reach the client. These are different claims.

Still unknown: This synthetic denial does not establish PHP2Shell mitigation, prevention of earlier memory corruption, general protection against unknown vulnerabilities, request ownership or selective HTTP/2 containment. Other side effects may still occur. A response reset cannot undo backend effects or retract bytes already delivered.

Separate R2³ research observed narrow native denial and fail-open after link loss. Its overall result remains INCONCLUSIVE / result 3. Neither that result nor the CAT fixtures establishes deployable protection, general filesystem immutability or a production architecture.