A service you run answered forged requests in a stranger's flood; why won't patching it help?
answer
- the host behaved to specification
- abused as designed, not compromised
- no vendor fix exists to consume
- scope, or prove the asker's address
- receiving is the part that cannot be faked
basics
~20 sNothing is broken. The service received well-formed requests and answered the address it was handed, exactly as specified, so the next release behaves identically. Only narrowing who may ask, or proving the asker's address, helps.
solid answer
~50 sYour host was not compromised and no defect was exploited. It received valid requests, produced valid answers, and sent them to the address carried in each request — which is all it is designed to do. There is no vendor fix, because there is nothing to fix: a fully current build amplifies identically. That is why "patch it" is the wrong instruction, and why this exposure survives for years. The two levers that work are decisions, not fixes. Narrow the scope: decide which networks may reach the service at all, so your estate leaves the reachable answerer population. Or change the exchange: require something cheap you sent to the claimed address to come back before you commit the bulky answer, so a requester that cannot receive there never gets one. Note who owns what — the outage belongs to the stranger; you have an abuse cost and no symptom.
go deeper
Know that a host can take part in an attack without being broken into, and that answering a request addressed from somewhere else is normal behaviour rather than a sign of intrusion.
Explain why no fix exists to apply: the reply goes to the address the request carried because that is the only destination the protocol supplies, and every release will do the same.
Diagnose it correctly under pressure, reject the patch instruction with a reason, and choose between narrowing scope and adopting a return-path proof for the estate in front of you.
Own the harder version: your organisation has no outage and no defect, so the remedy competes for budget against work that fixes your own problems, and someone has to decide that being usable as a weapon is itself unacceptable.
## Why the instruction is wrong "Patch it" assumes a defect. Walk through what your host actually did. It received a well-formed request on a service it was intentionally running. It parsed that request successfully. It produced the answer the specification says that request deserves. It addressed the answer to the sender address the request carried, because that is the only destination information a connectionless request supplies. Every step is correct behaviour. No memory was corrupted, no authentication was bypassed, no code ran that you did not install, and no attacker holds anything on the host. There is therefore no upstream fix to consume. The current release does this. The next release does this. A vendor cannot ship a change that makes the service stop answering the address it was handed, because answering the address it was handed *is the service*. This is the single most common wrong answer in the area, and it is a wrong answer given by experienced engineers, because "our box participated in an attack" pattern-matches so strongly to "our box is owned". The classification you want is **abused as designed**, not compromised. ## The vocabulary that keeps the analysis straight - The **victim** has an availability problem caused by traffic they did not solicit. - The **answerer** — you — has an abuse cost: capacity spent on someone else's flood, and your addresses appearing as the source of an attack. You have no defect and no symptom. - The **attacker** never touched either host beyond sending well-formed requests to one of them. Getting this straight matters practically, because the response is entirely different. A compromise means eviction and re-entry hunting. Abuse-as-designed means a configuration or design decision, made calmly, with no urgency of your own — which is exactly why it so often does not get made. ## What actually changes the outcome ### Lever one: scope Decide which networks may reach the service. An internal lookup service that never needed to answer arbitrary internet clients should not; a service that legitimately serves a known set of customer networks can be constrained to them. This does not repair anything — the behaviour is unchanged for anyone still permitted to ask — but it removes your hosts from the population an attacker can address. Scope is the cheapest and most common remedy, and it is a decision about who your service is for, taken by whoever owns that answer. ### Lever two: a return-path proof in the exchange The attack depends on one thing it cannot substitute for: the answerer commits a large payload to an address on nothing but the request's own claim. Remove that and the technique dies. The general control class is a **return-routability check** — before spending the expensive answer, send something small to the claimed address and require it back. A cookie or token echoed in a cheap second exchange does this without a full connection setup. Why the attacker cannot work around it: they can put whatever address they like in a request, but the cheap challenge goes to that address, not to them. Completing the exchange requires receiving at the address, and receiving is the part reflection cannot fake. The economics also invert — the pre-answer exchange is small in both directions, so the factor collapses to roughly 1 and the technique stops being worth its cost. ### Lever three, partial: shrink the answer If a specific bulky request is what makes your service attractive, retiring or gating that request type reduces the factor without changing anything else. This is how several protocols have historically responded: the enormous-answer request is removed from default builds. It reduces the ratio; it does not remove reflection, since a smaller answer still goes to a third party. ## Be precise about what a patch could and could not do One honest nuance: a *release* can change a default. If a maintainer ships a build that binds to a local interface by default, or drops the bulk request from the default configuration, then upgrading does reduce your exposure. But notice what happened — the release changed a **default configuration**, not a defect. The mechanism is still exactly as it was for anyone who turns the option back on. Saying "we upgraded and it went away" without knowing which default moved leaves you unable to answer the only question that matters: can a client on an arbitrary network still make this host send bytes to a third party? ## How to answer this in an interview Refuse the framing first, in one sentence: nothing is broken, so there is nothing to patch. Then classify: abused as designed, an availability problem for a stranger and an abuse cost for you. Then give the two levers and say which one you would reach for and why, and name the property the attacker cannot substitute — receiving at the address they claimed.
- You are told the service is on the newest release with every fix applied. Are you out of the amplifier pool?No. Patch level is orthogonal. The behaviour being used is specified behaviour, so a current build answers a forged request exactly as an old one does. The only thing an upgrade can change is a shipped default — a narrower bind address, or a bulky request dropped from the default configuration — and you would need to know which default moved to claim any improvement.
- Which control class removes this, and why can the attacker not substitute for it?A return-routability check: before committing the large answer, send something small to the claimed address and require it back. The attacker can claim any address but cannot receive at one they do not hold, and receiving is exactly what the challenge demands. The pre-answer exchange is small in both directions, so the factor collapses to about 1.
- How would you describe your organisation's position to the party being flooded?Honestly and narrowly: your hosts answered requests that named their address, the hosts are not compromised, and you are constraining who may ask. Avoid implying you were breached, and avoid implying nothing is owed — the capacity leaving your network is real traffic under your addresses even though the fault is not a defect of yours.
saying these in an interview costs you the question
- Calls the answering host compromised or breached
- Assumes a vendor patch removes the behaviour
- Blames the software author for a protocol property
- Concludes that no defect means nothing to do
- Confuses a changed shipped default with a security fix