The archive/CVE-2024-34065
strapiDisclosed 2024

CVE-2024-34065:strapi: Open redirect in strapi admin auth redirect handling

A reconstruction of the flaw, and the evidence path Lachesis follows to make it visible.

Historical recordv4.24.2 (last-vulnerable)
WeaknessCWE-601 · open redirect in strapi admin auth redirect handling
ImpactA open redirect in strapi admin auth redirect handling in strapi, reachable from attacker-controlled input.
Read the reconstruction
01What happened

With no family and no line seeded, the whole-taxonomy enumerator put its class-matched lead inside auth.js:441 (admin auth redirect handling) -- the sink CVE-2024-34065.

That is the shape of the failure. The rest of this case file follows the evidence behind it.

Separate the record from the run

What was known.
What Lachesis established.

01Historical record

Known before Lachesis ran

The CVE and vulnerable release were selected from public history. We are not claiming novel discovery.

CVE
CVE-2024-34065
Vulnerable target
v4.24.2 (last-vulnerable) · vulnerable
Prior knowledge
CVE-2024-34065 · v4.24.2 (last-vulnerable) is vulnerable
then
02Lachesis run
Verified captured run

Independent re-detection

The experiment graph was built around the last-vulnerable release (v4.24.2), scoped to the strapi package's source subtree, so the vulnerable translation unit builds under the pass budget (build 31s, enrich 14281 nodes / 30605 edges), then enumerated BLIND over the whole constructor registry (no family hard-coded, no target line seeded). The census and candidate ids below are the enumerator's own verbatim output; prose in adjudication/trace is the advisory + fix reading, clearly separated from tool output.

Seeded inputs
None
Run timestamp
2026-09-03T00:00:00Z
Evidence artifact
cve-2024-34065.kuzu (built from strapi v4.24.2, scoped to the strapi package's source subtree; graph + sidecars deleted after capture)

The commands and outputs below come from this recorded Lachesis run.

The reconstruction, in one frame

What Lachesis reconstructed.

One historical repository. Four captured queries. A complete source-to-sink argument.

Lachesis Casefiles · Unbound ComputeVerified runCVE-2024-34065
With no family and no line seeded, the whole-taxonomy enumerator put its class-matched lead inside auth.js:441 (admin.
01Sourceattacker-controlled input
02Sink// admin auth redirect handling: open redirect -- a redirect target derived from request input must be validated against an allowlist is not enforced here
03Missing guard// admin auth redirect handling: open redirect -- a redirect target derived from request input must be validated against an allowlist is not enforced here
$ lachesis sources_of → reaches → guard_dominance
strapi · v4.24.2 (last-vulnerable) · vulnerableunboundcompute.com
This was known history. Your code is not.

Lachesis follows the same evidence path through unfamiliar repositories.

The Lachesis reconstruction

Here is how the path becomes visible.

These are the recorded questions Lachesis asked of the historical vulnerable code, followed by the raw result and source location each query returned.

Repositorystrapi
Revisionv4.24.2 (last-vulnerable) · vulnerable
EngineLachesis

Captured runA real replay of Lachesis over the graph built for this case (build 31s under the pass cap, bounded memory). Every value below is verbatim captured tool output; the graph was released immediately after capture.

01 · lachesis01 / 03
Lachesis ran
lachesis build (scoped to the strapi package's source subtree) && enrich

Investigate the candidate

The narrowed scope builds the vulnerable TU under the pass cap.

Captured resultCaptured · lachesis
raw captured outputlachesis
build rc=0 31s
enrich rc=0 :: pass2 published 14281 nodes and 30605 edges
auth.jsline 0
Code location returned for this evidence step.
The repair

A small line with a large consequence.

4.24.3 validates the redirect target against the configured admin/base URL allowlist before redirecting.

Before
// admin auth redirect handling: open redirect -- a redirect target derived from request input must be validated against an allowlist is not enforced here
After the patch
// 4.24.3 validates the redirect target against the configured admin/base URL allowlist before redirecting.
Sources & further reading

The original record.

Read the historical advisory and vulnerability record behind this reconstruction.

Open the Lachesis quickstart