Single-packet race → coupon stacking
Coupon redemption check happens before the apply step. Send 20 redemptions in a single TCP packet — the app validates each in parallel and applies all of them.
§ Context
Assumed environment: e-commerce / SaaS billing endpoint that validates a coupon then applies it without a serialised transaction. HTTP/2 connection support.
§ Steps
- 01Complete the order at near-zero costExfiltrationT1041— Exfiltration Over C2 Channel
- 02Find coupon / quota endpointReconnaissanceW-RECON-API-DISCO— API Endpoint Discovery
- 03Bundle 20 redemptions in single packet (H2)ImpactW-RACE-SP— Single-Packet Race Condition
Turbo Intruder gate / send-group.
- 04Apply N coupons against the cap of 1ImpactW-BUSINESS-LOGIC— Business Logic Flaw
- 05Reproduce check-then-apply windowImpactW-BUSINESS-LOGIC— Business Logic Flaw
§ References
§ Frequently asked
- What is the "Single-packet race → coupon stacking" attack path?
- Coupon redemption check happens before the apply step. Send 20 redemptions in a single TCP packet — the app validates each in parallel and applies all of them. It chains 5 steps drawn from real-world offensive-security techniques.
- What starting position does this attack require?
- The first step is Complete the order at near-zero cost (T1041) — a exfiltration primitive. Assumed environment: e-commerce / SaaS billing endpoint that validates a coupon then applies it without a serialised transaction.
- What is the final impact of this kill-chain?
- The final step lands on Reproduce check-then-apply window (W-BUSINESS-LOGIC), which falls under Impact. From here, an operator typically pivots into post-exploitation or maintains persistence.
- How can defenders detect or prevent this attack?
- Detection and prevention vary per step. Refer to each linked MITRE ATT&CK entry under "References" — every technique on that page lists defensive controls, detection telemetry, and known threat-actor usage.
§ Related dossiers
- Shared techniques2
Open MongoDB → dump every collection
Shodan-indexed MongoDB on 27017 with no auth. Connect, list databases, dump every collection. Often the second stage is a ransom note in a new 'README' collection.
- Shared techniques2
Signature replay across chains → token drain
EIP-2612 permit() signed without chainId / domain separator binding. Capture the off-chain signature on one chain and replay it on another to drain ERC-20 approvals.
- Shared techniques2
JWT RS256 → HS256 algorithm confusion → admin
Server verifies any algorithm declared in the JWT header. Sign an HS256 token using the public RSA key as the HMAC secret — server accepts it as legit.
- Shared techniques2
GraphQL introspection → BOLA → mass enum
GraphQL endpoint exposes its full schema. Discover an unauth'd or under-authorized resolver, enumerate every user's data by iterating IDs.
- Shared techniques2
NoSQL injection → auth bypass → admin
Login endpoint passes user-supplied JSON into a MongoDB query. Send {"$ne": null} to bypass the password check.