Skip to content

Example — incident report (Helix Tickets)

Parallel miniature. Not the notes-api capstone. Lab-only; dummy secrets.

Incident ID: HELIX-IR-2026-08-31
Severity: High (lab)
Status: Contained in lab; recovered with debug off
Author: lab analyst (example)

Summary

A simulated adversary password-sprayed Dana, then used Dana's legitimate session to read Eli's ticket 42 (VPN placeholder) and to trigger a server-side fetch of mock instance metadata. Two detections fired (HELIX-001, HELIX-002). Metadata fetch was visible in JSONL but had no rule in v1. Debug mode was disabled after evidence preservation.

UTC timeline

Time (UTC) Event Source
14:01:02 six login_failure for dana, src_ip=127.0.0.1 helix JSONL
14:01:18 login_success dana (password spray did not succeed; later login used the lab password) JSONL
14:01:22 cross_user_ticket_read actor=dana ticket_id=42 owner=eli JSONL
14:01:40 ssrf_metadata_access url=http://mock-imds/... JSONL
14:12:00 HELIX-001, HELIX-002 alerts; case opened SOC analog
14:18:00 evidence snapshot preserve-logs analog evidence dir
14:25:00 HELIX_DEBUG=false redeploy runbook
14:31:00 replay: ticket 42 → 404 for dana; metadata fetch blocked purple

The spray failed. The IDOR used a valid password. Do not write "they brute-forced Dana and then read Eli" as one causal chain if the logs show a successful login with the known lab password after failed guesses.

Competing hypotheses

H Claim Status
H1 Spray produced the Dana session Rejectedlogin_success uses the seed password, not a guessed one
H2 Broken object authz in debug is the ticket-42 leak Supported — same actor, owner mismatch, debug on
H3 Fetch of mock-imds is SSRF using API identity Supportedssrf_metadata_access
H4 Logs were planted Rejected — hashes match pre-containment snapshot

Impact (lab)

Eli's dummy VPN placeholder in ticket 42 was readable by Dana. Mock IMDS credentials (explicitly fake) were returned to the API process. No extra-scope systems were contacted.

Root cause

Object and function authorization, token expiry, and outbound-fetch policy were behind a debug flag. The flag was on because the lab needed to demonstrate the failures. The engineering defect is "authz is optional," not "an attacker is clever."

Communications (lab)

Internal only. No customer notice. Dummy secret in ticket 42 treated as burned in the lab narrative.

Why this is strong

Timeline is UTC and sourced. Hypotheses include the boring one (H1 failed spray). RCA names a control defect, not a movie plot.

Evidence

JSONL lines, alert IDs, snapshot checksum, before/after request for ticket 42.

What would make it weak

A story that ignores timestamps. "Nation-state." RCA = "human error." Using notes-api event names (cross_user_note_access) — that is the other incident.