NTP amplification: when a time server answers for you

Amplification turns someone else's server into the source of your outage. A small query goes to a public service with a forged return address, the service replies to that address rather than to the sender, and the reply is far larger than the request. Time servers became a favoured instrument because one legacy query returns a great deal of data.

Section Attacks Updated Roles two

Quick facts

Layer
Network (3) and transport (4)
Vector
Forged queries to public time servers, replies directed at you
Goal
Saturate the link with traffic you never asked for
In your logs
Inbound replies from time services you never queried
Does a WAF stop it?
No. The traffic never becomes a request

The reasoning is on attack layers: this arrives as volume, and request inspection happens after volume has already done its work.

The mechanism

Three properties combine, and removing any one of them ends the technique.

The protocol needs no connection. Queries and replies are single messages, so nothing verifies that the sender is who the address says.

The return address can be forged. The service answers the address in the query, and that address is the victim's.

One legacy query returns disproportionate data. Older time server software supported an administrative query that returned a list of recent clients. A short request produced a long answer, which is precisely the property amplification needs. It exists for diagnostics, it was never meant to be reachable from the whole internet, and current software disables or removes it.

The pattern is not specific to time services. Any protocol that answers unauthenticated queries with larger replies can be used the same way, which is why the defence is structural rather than a matter of blocking one service.

SSDP: the same shape in home equipment

The mechanism is identical, and only the population differs.

Service discovery on local networks works by asking connected devices to announce what they offer. The replies are verbose by design, and the protocol assumes a local network where that is harmless. Consumer routers that expose this to the internet, usually by accident, become reflectors the way an exposed time server does.

Two things follow. The reflector population is enormous and consists of devices nobody administers, so it does not shrink the way server misconfigurations do. And from the victim's side it is indistinguishable from any other amplification: high volume from sources with no relationship to you.

Two roles, and one of them is yours to check

Every amplification event has a victim and a set of unwitting participants. You can be either.

As the victim, nothing about your configuration caused it and nothing about your configuration stops it. The traffic is legitimate replies from legitimate servers, and the only remedy is upstream.

As a potential reflector, you have work to do. Any service you run that answers queries from anywhere, and answers them with more data than it received, is a candidate. For time services specifically, the administrative query class should not be reachable from the internet, and software current enough to have removed it is the simpler fix.

EVERY AMPLIFICATION EVENT HAS TWO ROLES AS THE VICTIM WHAT YOU NOTICE WHAT IS HAPPENING NOTHING IN YOUR CONFIGURATION CAUSED IT, OR STOPS IT AS AN UNWITTING REFLECTOR WHAT YOU NOTICE WHAT IS HAPPENING NO ALERTS — YOU LEARN FROM AN ABUSE REPORT, LATER // billed to you, and attributed to you by everyone who saw it
// the second role is the one most people never check

This second role is the one most people never check. Being used as a reflector does not degrade your service noticeably, produces no alerts, and is visible only as outbound traffic nobody looks at.

How you learn you were a reflector

Rarely from your own monitoring, which is the problem.

The usual notification is external: an abuse report from a network on the receiving end, or a message from your hosting provider forwarding one. By then the traffic has been leaving your server for a while, billed to you, and attributed to you by everyone who saw it.

The check that prevents this costs a few minutes and belongs in the same routine as any other exposure review: confirm which services answer queries from outside, and whether any of them answers with more than it received.

Recognising it

Two signals distinguish it from an ordinary flood.

Replies you never requested. Inbound traffic from a service port belonging to a protocol you did not query, from many sources at once. That is the signature: not requests arriving, but answers.

Sources are real and reachable. Unlike forged floods, these addresses belong to servers that genuinely exist and respond. Anyone investigating will find working services at the other end, which is why blocking them is both possible and pointless: there are always more.

THE SENDERS ARE REAL — WHICH IS WHY BLOCKING IS POINTLESS A FORGED FLOOD — THE ADDRESSES ARE NOT REAL BLOCKING THEM HITS SOMEBODY UNINVOLVED AMPLIFICATION — REAL SERVERS, GENUINELY ANSWERING BLOCKING THEM IS POSSIBLE — AND THERE ARE ALWAYS MORE // on your side of a link the traffic has already crossed
// possible and pointless are not the same objection

Mitigation by layer

Four measures, and the first two are the only ones that help a victim.

Filter upstream by source characteristics. Replies from a protocol you never use can be dropped before your link, and this is a rule your connectivity provider can apply quickly.

Have capacity in front of you. As with every attack in this family, absorbing volume is infrastructure rather than configuration.

Do not run open reflectors. Restrict administrative query classes to the networks that need them, keep software current, and confirm that services intended for internal use are not reachable from outside. This protects other people rather than you, which is why it gets skipped.

Support source address validation. Networks that verify traffic leaves them carrying addresses they own make forgery impossible at the origin. No individual operator can deploy this on someone else's network, which is why the technique persists despite being solvable in principle.

What does not help: request rules and challenges, since nothing here reaches the stage where a request exists.

A vector that belongs to another layer

The same reflection mechanism applies to the naming system, and that case belongs to the naming layer of this network, where resolver behaviour and record types are documented.

Where the platform sits

Bridge WAF inspects requests, which is the wrong layer for this attack. What applies is termination: when visitors reach your site through the platform's edge, the address receiving reflected traffic is not your origin's, and the capacity absorbing volume is the platform's. Asking which component covers which layer is a fair question for any provider, including us. See what the platform offers at Bridge CDN.

Questions

What is NTP amplification?

An attack in which small queries carrying a forged return address are sent to public time servers, so that their much larger replies are delivered to the address on the forgery. The target receives traffic from servers that believe they are answering it.

Does a WAF stop amplification attacks?

No. What arrives is volume rather than requests, and it fills the link before anything resembling a request exists for inspection to read. Mitigation belongs upstream, with whoever is able to absorb or discard the traffic before it reaches a connection small enough to be saturated by it.

Why time servers specifically?

Because of one legacy administrative query that returned a list of recent clients, turning a short request into a long answer. That disparity is the whole mechanism. Current software disables the query by default, which is why the technique depends on servers nobody has updated.

Can I block the servers sending it?

You can, and it accomplishes little. They are genuine servers being abused rather than the originator, there are always more of them, and the blocking happens on your side of a link that the traffic has already crossed and filled.

How do I know my own server is not being used?

Confirm that administrative queries are unreachable from the internet and that anything intended for internal use is not answering from outside. This is worth checking whether or not you are a target, since being used as a reflector consumes your capacity for someone else's attack.

Is SSDP the same thing?

The mechanism is identical and the population differs. There the reflectors are consumer devices exposing a local discovery protocol to the internet, rather than servers running outdated software, which makes the set of reflectors larger and far less likely ever to be corrected.

Where the platform sits

The wrong layer for this attack. What applies is which address receives the reflected traffic.

off

No request is inspected. Reflected volume never becomes a request either way.

monitor

Matches are recorded on requests, which these replies never become.

block

Refusal applies at the request layer, above the one this attack fills.

The firewall layer is included with Bridge CDN. Start in monitor: nothing is refused until you decide it should be.

Get started