Explainability Center

Why did the system make this decision?

Each autonomous action resolves to a complete decision record. Read it in seconds, not hours. No raw logs required.

entry · AX-92840

Objective

What the system was asked to achieve.

Patch session fixation in /auth/exchange before issuing new JWT.

94
Confidence
Calibrated against historical outcomes for similar mutations.

Evidence

External and internal signals that motivated the decision.

  • OWASP A07:2021 — Identification & Authentication Failures
  • Audit trace: 14 sessions re-used pre-exchange token in last 30d
  • CWE-384: Session Fixation match on auth/exchange.ts:142

Context used

Repository, blast radius, and recent history.

  • Repository: core-api @ main · commit 4a9c1d2
  • Service tier: tier-0 (customer-facing auth)
  • Last deploy: 2026-05-29 09:11 UTC by atlas-1.4
  • Active sessions: 41,208 · blast radius: high

Reasoning summary

Plain-language explanation of the chosen path.

Token rotation occurs after credential validation but before session_id regeneration, allowing a pre-auth attacker-set session_id to persist post-login. Regenerating session_id atomically with JWT issuance closes the window without breaking existing clients (token shape unchanged).

Alternatives considered

The platform always evaluates multiple paths. Rejections are first-class citizens.

Option 1 · rejected
Invalidate all existing sessions on patch deploy
Why rejected: Unacceptable UX impact — 41k forced re-logins; violates SLO for auth availability.
Option 2 · rejected
Add WAF rule blocking re-used pre-auth cookies
Why rejected: Mitigates exploit but does not fix root cause; fails ISO 27001 A.8.28 secure-coding control.
Option 3 · rejected
Defer to next quarterly security release
Why rejected: Active exploitation evidence present; risk score 71 exceeds policy threshold for deferral.

Tests executed

Validation evidence attached to the decision.

  • auth.exchange.session-fixation.spec.tspass
  • auth.exchange.regression.spec.tspass
  • auth.load.10k-concurrent.spec.tspass
  • auth.contract.openapi.spec.tspass