A blind attacker wants a long-lived TCP session down - is a forged reset or forged data the cheaper route?
answer
- one needs semantics, the other needs none
- data is also checked on acknowledgement
- hardening changed which one is cheap
- exact match versus in-window range
- the challenge reply can itself leak
basics
~20 sIt depends on the stack. Against an unhardened receiver the reset is far cheaper: any in-window value, no plausible acknowledgement, no application meaning, and one hit ends everything. Against an RFC 5961 receiver a reset needs an exact sequence match, so in-window data becomes the easier landing.
solid answer
~50 sClassically the teardown is the cheapest thing a blind attacker can do. A forged reset needs a matching four-tuple and any sequence number inside the receive window; it carries no payload, needs no plausible acknowledgement value, and needs no understanding of the application protocol riding on top. One accepted packet ends the connection. Forged data is harder on every axis - it must also carry an acceptable acknowledgement value, it must parse as something meaningful to the protocol above, and it races the legitimate stream for that sequence space. RFC 5961 deliberately inverts part of this: a reset is accepted only when its sequence number matches the next expected byte exactly, and an in-window-but-inexact reset triggers a challenge acknowledgement instead. On such a stack the teardown becomes the expensive forgery and in-window data the cheaper one - so the honest senior answer names the stack behaviour before picking.
go deeper
Know that a teardown forgery carries no payload and needs no understanding of the protocol above, while injected data has to be meaningful to whatever is reading the stream.
Explain the extra checks data faces - the acknowledgement range and the race with the legitimate stream - and what a hardened receiver demands of a reset instead.
Demonstrate that you would establish the receiver's behaviour before pricing the attack, and that you can say what each outcome costs the two endpoints to recover from.
Be ready to argue what residual risk remains after hardening, and how you would justify spending on authenticated segments when the stack change has already raised the cost by orders of magnitude.
## Two objectives, two very different bills A blind off-path attacker can try to *steer* a session by injecting bytes into it, or *end* it with a teardown. Interviewers ask this because the two look similar - both are a spoofed segment that has to be accepted - and cost wildly different amounts. ## What a forged teardown needs, on a classic stack - The four-tuple. - A sequence number inside the receive window. That is the whole list. There is no payload to construct, no acknowledgement value to make plausible, and nothing about the application protocol above needs to be understood. The attacker does not care what the two endpoints were saying to each other. One accepted packet and the connection is gone, and there is no partial success to manage: the search runs until a guess lands and then the objective is complete. This is why an actor whose goal is disruption - a state-aligned operator tearing down a peering session, or a group that wants an outage it can claim - finds this attack attractive at all. No foothold is sought, nothing is installed, nothing has to persist. ## What forged data needs Injecting bytes is a different job: - **The four-tuple**, as before. - **An in-window sequence number**, as before. - **An acceptable acknowledgement value.** Data-bearing segments are checked against an acknowledgement range as well, so there is a second search. - **Application-layer meaning.** Bytes that land in the stream are handed to whatever is above. For a routing session or a replication link, arbitrary bytes are a malformed message, and a malformed message usually causes the peer to abort the session. That is a teardown by a longer route, not the steering the attacker wanted. - **A race with the real sender.** The legitimate stream is filling that sequence space continuously. Injected bytes that arrive after the real ones for the same offsets are duplicates and discarded; if they arrive first, the real data becomes the duplicate, which desynchronises the two endpoints' views of the stream. So blind data injection is an expensive way to achieve an unreliable result. Its realistic outcome is corruption or an abort, not control. ## What RFC 5961 changed RFC 5961 exists specifically to harden TCP against blind in-window attacks, and it re-prices this comparison: - **Reset:** accepted only if its sequence number equals the next expected byte exactly. In-window but inexact produces a challenge acknowledgement to the *real* peer and the connection stays up. - **SYN on an established connection:** likewise answered with a challenge acknowledgement rather than acted upon. - **Data:** subject to a tighter acknowledgement acceptance check. On such a stack the reset search collapses from "one window in 2^32" back to "one value in 2^32", which really is infeasible to brute force, while in-window data remains range-checked. The cheap and the expensive forgeries swap places. ## Why "we are hardened" is not the end of the answer Two caveats belong in a senior answer. First, the challenge-acknowledgement machinery itself became an oracle. An implementation that rate-limited challenge acknowledgements with a single system-wide counter let an off-path attacker probe that shared counter and infer whether a guess had been in-window - turning a blind brute force into a guided search. The fix was to randomise the limit, but the lesson generalises: a mechanism that answers differently depending on a secret leaks that secret. Second, none of this authenticates the sender. Hardening raises the number of guesses; it does not make a forged segment distinguishable from a real one on its merits. Only a keyed value carried with each segment, or a check that the segment could not have come from off-path at all, does that. ## The recovery asymmetry The two objectives also cost the endpoints differently. A torn-down peering session withdraws everything learned over it and forces reconvergence downstream; the session itself may re-establish in seconds, but the routing churn is the damage and repeated teardowns can push a peer into damping. A desynchronised replication link tends to fail loudly and resynchronise, which is disruptive but self-correcting. Injected data that *does* parse is the worst case, because the endpoints do not disagree about the stream at all - they agree on something the attacker wrote. ## How to answer it in a loop Name the stack behaviour first, then the objective, then the bill. "On an unhardened receiver, the reset - one packet, any in-window value, no semantics needed. On an RFC 5961 receiver, the reset needs an exact match, so in-window data or the challenge-acknowledgement side channel is the cheaper route."
- Why does injected data usually end the session anyway rather than steer it?Because the bytes are handed to the protocol above, and arbitrary bytes are a malformed message. Routing and replication protocols abort on a malformed message, so the attacker achieves a teardown by an expensive route. Steering requires knowing the exact stream position and writing a valid message that the peer will act on, which a blind attacker cannot verify.
- Your peers run RFC 5961-compliant stacks. Is blind teardown solved?It is heavily raised, not solved. Resets now need an exact sequence match, which brute force cannot reach. But in-window data is still range-checked, the challenge-acknowledgement path has leaked in-window information through a shared rate-limit counter in the past, and nothing about the change authenticates the sender. Treat it as a cost increase, not an elimination.
- What is the actual damage when a peering session is torn down and re-establishes seconds later?The routes learned over it are withdrawn and reconvergence propagates outward, so traffic shifts, some of it drops, and downstream systems see the churn. Repeated teardowns can also trigger damping, which keeps the prefixes suppressed long after the session is back. The cost is in the reconvergence, not in the seconds the session was down.
saying these in an interview costs you the question
- Assumes a reset is always the cheap option regardless of stack
- Thinks injected data gives reliable control of the stream
- Says hardening makes blind injection impossible
- Ignores that data segments face an acknowledgement check too
- Treats a re-established session as no damage done