Home › Challenges › Operation TokenBleed: Multi-Tenant AI Cost Spike & FinOps CI/CD Incident
Hard Cloud FinOps & AI Governance

Operation TokenBleed: Multi-Tenant AI Cost Spike & FinOps CI/CD Incident

Target Job Role: πŸ”’ Classified (Solve CTF to Unlock)
AWS Bedrock Prompt Caching FinOps Anomaly Detection CI/CD Cost Guardrails SlackOps Incident Response

🎯 Incident Briefing: P1 Cloud Cost Anomaly

System: Avanan Multi-Tenant Cloud Email Security
AWS Account: prod-threat-analysis-01 (us-east-1)
Service: AWS Bedrock LLM Inference Gateway (anthropic.claude-3-5-sonnet-20241022-v2:0)

At 09:30 UTC, automated FinOps cost monitors fired a critical P1 anomaly: hourly token spend spiked by +6,180%, jumping from a baseline of $45.20/hr to $2,840.00/hr. At current run-rates, this single inference pipeline will incur over $68,000 per day in unbudgeted cloud charges.

As the person on call, your objectives are:

  1. Review the real-time incident discussion and CloudWatch telemetry in #incident-finops-tokenbleed below.
  2. Inspect the Git Release Train (12 commits) and code diffs across our scanning microservices.
  3. Review the Jenkins CI/CD build logs to determine why our automated FinOps cost guardrails (finops-cache-lint) allowed this pull request to merge.
  4. Execute the emergency SlackOps rollback command (/finops rollback --commit <sha>) in the channel message bar.
  5. Complete the incident root-cause triage check with @FinOps-Guard-Bot to authorize the production override and reveal the Incident Audit Signoff URL.
  6. Submit the discovered flag token to verify your solution and unlock the role!

πŸ’¬ Live Incident Channel: #incident-finops-tokenbleed

# incident-finops-tokenbleed
πŸ‘₯ 4 members 🚨 P1 AWS Bedrock Invoiced Cost Anomaly β€” Claude 3.5 Sonnet Token Burn ($2,840/hr)
Incident Active
πŸ€–
FinOps-Guard-Bot APP 09:30 UTC
🚨 ANOMALY ALERT: Multi-Tenant AWS Bedrock Burn Rate Spike
CloudWatch Bedrock Anomaly Report • Account: prod-threat-analysis-01 (us-east-1)
Target Model claude-3-5-sonnet-20241022-v2:0
Projected Hourly Burn $2,840.00 / hr (baseline: $45.20/hr)
Prompt Cache Read Ratio 0.08% (baseline: 94.2%)
Input Token Rate 180,000,000 tokens/hr
NK
Noa K. FinOps Lead 09:32 UTC

Team, our Bedrock Cost and Usage Report (CUR) is alerting hard. On Claude 3.5 Sonnet, prompt caching pricing is heavily asymmetric:

  • Standard Input: $3.00 / MTok
  • Prompt Cache Write: $3.75 / MTok (1.25× fee on write)
  • Prompt Cache Read: $0.30 / MTok (90% discount on subsequent reads)

With our multi-tenant security system prompt (~1,240 tokens), when CacheReadInputTokens collapsed to 0%, we lost the 90% discount and are paying a 1.25× cache write penalty on every inbound scan. At this rate, we're burning $68,000/day. What happened in production?

EM
Eli M. AI Platform Engineer 09:35 UTC

Checked AWS CloudWatch: Zero infra changes. No ECS task churn, no EC2 scaling events. This is definitely not an infrastructure or traffic volume issue.

Bedrock prompt caching requires a byte-for-byte identical prefix of ≥1,024 tokens. If cache read hit rate dropped to 0%, it means the prompt prefix sent to Bedrock is no longer identical across sequential calls.

However, between 08:30 and 09:15 UTC, we deployed Release Train 2026.10-R2 across 4 scanning microservices (12 commits total). Several PRs touched prompt configuration, parsing, or classifier logic.

Here is the Release Train Git log. None of the developers reported breaking the caching policy:

πŸ“¦ Git Release Train: 2026.10-R2 (12 commits across 4 services) Click "View Diff" to inspect code changes
f1a8c01 auth-tenant-broker fix(auth): cache tenant policy tokens in memory
e4d29a5 threat-classifier perf(rules): compile regex heuristics for URL analyzer
b891e4a mail-scanner refactor(triage): parse multi-part MIME headers in triage proxy
a3c710f threat-classifier chore(deps): update pyyaml dependency
d09f3e2 quarantine-worker fix(sqs): backoff on DLQ redrive handler
c7a31b9 mail-scanner feat(apm): propagate OpenTelemetry context in threat triage service
9e8211b auth-tenant-broker feat(telemetry): export distributed trace spans to CloudWatch
8b4c71e mail-scanner chore(apm): bump opentelemetry-sdk dependency
7f10a8c quarantine-worker perf(s3): increase multipart chunk size for email dumps
5a91b2c threat-classifier feat(llm): update classifier prompt with few-shot BEC examples
3d82a1f mail-scanner style(linter): fix async coroutine typing
1b0e9a4 quarantine-worker refactor(worker): cleanup boto3 session handlers
NK
Noa K. FinOps Lead 09:38 UTC

Wait, if one of these commits broke prompt caching prefix invariance, why didn't our CI/CD pipeline catch it?

Our deployment automation requires every PR to pass a mandatory FinOps Guardrail stage (finops-cache-lint) in Jenkins. The guardrail tests sequential Bedrock calls to ensure prefix byte-invariance before allowing merge!

Here are the Jenkins build logs and test suite artifacts from this morning's pipeline runs. Every PR reported green/SUCCESS:

Jenkins CI • Build Pipeline Artifacts (PR #1042) SUCCESS • Stage: finops-cache-lint
[Pipeline] { (Stage: FinOps Prompt Invariance Check)
[finops-cache-lint] pytest tests/finops/test_bedrock_cache_invariance.py -v
tests/finops/test_bedrock_cache_invariance.py::test_prompt_token_length PASSED [ 50%]
tests/finops/test_bedrock_cache_invariance.py::test_cache_prefix_byte_invariance PASSED [100%]
============================== 2 passed in 0.14s ===============================
[finops-cache-lint] Guardrail Assertion: sha256(call_1.prefix) == sha256(call_2.prefix) -> True
[finops-cache-lint] RESULT: SUCCESS (Zero prefix variance detected. Merge approved.)
[Pipeline] } // Stage
EM
Eli M. AI Platform Engineer 09:42 UTC

I don't understand why CI passed if one of these commits broke production caching. We need someone to dig into the code diffs and the Jenkins test implementation.

@candidate, you are the person on call — please investigate the release train and CI logs above:

  • Identify the offending commit that caused the Bedrock cache read collapse.
  • Diagnose why the automated CI/CD FinOps guardrail failed to block it.
  • Execute /finops rollback --commit <sha> via @FinOps-Guard-Bot below to authorize the emergency rollback.

Note: The bot enforces strict FinOps audit gates — you must supply the exact root-cause parameters to unlock the production rollback.

🚩 Flag Verification
UNSOLVED
https://smrtr.io/