Summary
- On 28 February 2018, GitHub reported a memcached reflection-amplification DDoS attack that peaked at 1.35 terabits per second and 126.9 million packets per second. Its monitoring detected an abnormal ingress-to-egress ratio at 17:21 UTC. [1]
- At 17:26, GitHub engineers withdrew announcements for its AS36459 prefixes from normal transit providers and announced them through links to Akamai. GitHub reported that BGP reconvergence and filtering at Akamai restored normal service by 17:30. [1]
- The route change did not itself remove malicious packets. It changed which network accepted traffic for GitHub's prefixes so a mitigation provider could filter the flood and deliver cleaner traffic onward.
- The attack abused publicly reachable memcached servers that accepted UDP requests. A forged request naming GitHub as the source caused a much larger response to travel to GitHub. Cloudflare reported amplification potential around 51,200 to one for the abused protocol. [3]
- Reflection required source-address spoofing. BCP 38 and BCP 84 describe controls for restricting forged-source traffic, while CAIDA and MANRS document the continuing operational and incentive problem. [9][10][14][15]
- Source-address validation would not replace server configuration, software defaults, DDoS detection, routing coordination or scrubbing capacity. The event crossed multiple control domains, so accountability must be allocated rather than collapsed onto one operator.
- GitHub published timestamps, traffic rates, an autonomous-system identifier, a route-withdrawal action and recovery milestones. That incident record makes the mitigation handoff testable, although it does not disclose private thresholds, routing policy, contract terms, reflector ownership or attacker identity.
- The central question is whether the organizations with practical network control can show that abusive traffic was detectable, handoff authority was bounded, clean traffic was preserved, reflector exposure was reduced and repeat attacks became less likely.
The event is a routing-and-mitigation case, not only a traffic record
GitHub's incident report provides an unusually concrete sequence for a public DDoS account. At 17:21 UTC on 28 February 2018, monitoring showed an abnormal relationship between inbound and outbound traffic. GitHub described the site as unavailable. Five minutes later, engineers initiated mitigation by changing how the Internet reached GitHub's addresses. They withdrew the routes normally announced through transit providers and announced the prefixes through links to Akamai. GitHub said BGP reconvergence and filtering at Akamai's border restored normal service by 17:30.
A later attack of about 400 gigabits per second did not recreate the original disruption. [1]
The headline peak was 1.35 Tbps and 126.9 Mpps. Those numbers matter because they describe two different stresses. Bit rate expresses how much link capacity a flood can consume. Packet rate expresses how many packet-handling decisions network devices must make. A system can have enough aggregate bandwidth and still encounter pressure in forwarding, filtering, state tracking, interrupts or control-plane interaction. Conversely, a low-packet-rate volumetric flood can saturate a link before a router reaches its packet-processing limit. An accountable capacity claim should therefore state which resource was measured and where.
The more important fact is that GitHub published the handoff. Traffic for an IP prefix follows the routes that networks advertise and select. By changing its announcements, GitHub changed the path on which external networks delivered packets destined for its services. The mitigation provider could receive the flood, apply filtering and pass permitted traffic toward GitHub. This was a transfer of operational responsibility at a live network boundary.
That distinction prevents a common analytical error. BGP did not identify malicious packets. Route withdrawal did not cleanse traffic. The routing action placed the traffic where filtering capacity and mitigation logic were available. The outcome therefore depended on at least three systems working together: GitHub's detection and authorization process, the interdomain routing system's convergence, and Akamai's ability to accept, filter and return usable traffic.
The event belongs to network-infrastructure accountability because removing those systems destroys the thesis. A generic statement that GitHub suffered a cyberattack does not explain why service recovered. The evidence that matters is the autonomous-system scope, the transit decision, the propagation of changed reachability, the scrubbing border and the path by which legitimate users regained access.
Memcached turned a small forged request into a large unwanted response
Memcached is designed as a high-performance distributed memory cache. It was not designed to be a public amplification service. The 2018 attacks exploited deployments that exposed memcached's UDP interface to untrusted networks. An attacker could send a relatively small request with a forged source address. The server then sent a much larger response to the address named as the source, which was the victim rather than the requester. [3][6][7][8]
Cloudflare described amplification potential around 51,200 to one for the abused protocol. [3] The exact ratio in any packet sequence depends on the request, cached values, server behavior and measurement method. It should not be treated as a universal constant or as GitHub's measured average. Its significance is structural: the attacker did not need outbound capacity equal to the traffic delivered to the victim. Open servers supplied the response bandwidth.
Two conditions made that structure possible. First, a server accepted an unauthenticated UDP request from the public Internet and generated a much larger response. Second, a network carried a packet whose source address did not belong to the sender, allowing the response to be redirected. Removing either condition from that path sharply reduces the reflection opportunity.
The controls are correspondingly distributed. Memcached maintainers can choose safer defaults and warn operators. Hosting and server operators can bind the service to private interfaces, disable UDP, filter port 11211 and avoid exposing a cache to untrusted networks. Access and transit networks can validate source addresses at customer boundaries. DDoS targets and mitigation providers can detect and filter the resulting traffic. No one of those actors controls the whole chain.
The memcached project documented that UDP is disabled by default starting with version 1.5.6 and warns against exposing a server to untrusted networks. [7][8] A safer default changes the expected state of new or upgraded deployments. It does not remotely repair every old server, remove every permissive firewall rule or prove that an exposed instance held sensitive data. The accountability value of the default is narrower and practical: it makes a dangerous network posture less likely to arise accidentally.
CISA's amplification guidance places memcached among UDP services that can be abused for distributed reflection. [6] That category helps operators search for exposure, but it should not erase protocol differences. A sound article asks which service was open, which request produced the response, whether the source was forged, how the traffic reached the victim and which network boundary could have stopped it. “Amplification” is a mechanism to investigate, not a complete allocation of fault.
Source-address validation is a distributed control with an incentive problem
Reflection relies on a lie in the packet header. The request reaches the reflector carrying the victim's address as its source. The reflector has no knowledge of the attacker's actual address and returns data to the victim. Source-address validation tries to stop that lie close to the network where the packet originates.
RFC 2827, commonly known as BCP 38, describes ingress filtering at the edge of a network. A provider serving a customer prefix can reject outbound packets that claim source addresses outside the prefixes legitimately reachable through that customer. [9] RFC 3704 extends the discussion for multihomed networks, where strict reverse-path assumptions can fail because legitimate traffic may enter and leave through different paths. [10]
The distinction between simple and multihomed environments is important. A slogan that every provider should “turn on BCP 38” understates the engineering work. Operators need accurate customer-prefix records, filters that change when assignments change, exceptions for legitimate designs, monitoring of drops and procedures that do not break asymmetric traffic. Poorly maintained validation can block valid packets. No validation leaves the wider Internet exposed to spoofing from that edge.
CAIDA's Spoofer project measures whether networks permit clients to send packets with forged source addresses. [14] Its existence reflects a central accountability difficulty: the victim of spoofing is often outside the network where the control must be deployed. The deploying operator bears local engineering and support costs, while the security benefit is broadly distributed. Customers may not demand the control because they do not see the attacks their connection could enable. The market signal is weak even when the operational value is high.
MANRS frames anti-spoofing as an action for network operators and supplies implementation guidance. [15] Such norms matter because they turn an abstract good into a checkable practice. But neither a norm nor a measurement should be used to accuse a named network without evidence. The GitHub incident report did not publish a complete list of reflector or source autonomous systems. The public record does not establish which provider carried which forged request or whether a specific provider knowingly accepted the risk.
Accountability therefore requires evidence at the right granularity. A provider should be able to show which customer prefixes were authorized on an edge, which filtering policy was active, how exceptions were approved, what spoofing tests found and how dropped traffic was investigated. Aggregated deployment rates can show ecosystem progress. They cannot replace incident-specific attribution.
Anti-spoofing also has a defined limit. It constrains attacks that depend on forged sources. It does not stop a compromised device from sending direct traffic with its real address. It does not close a publicly exposed memcached port. It does not provide GitHub with scrubbing capacity. It does not ensure that a BGP mitigation handoff succeeds. Treating it as a complete DDoS solution would convert a necessary distributed control into an excuse to ignore the rest of the path.
Detection had to identify a problem before the route change could help
GitHub reported that monitoring detected an anomaly in the ratio of inbound to outbound traffic. [1] That is a useful public signal because it connects mitigation to an observable condition rather than presenting the route shift as an unexplained operator action. A service that receives far more traffic than its normal responses or user behavior would predict can indicate reflection, a flash crowd, a measurement error or another network event. Detection begins the investigation; it does not finish classification.
An accountable detection system needs multiple views. Edge interfaces show bandwidth and packet rate. Flow records can show protocol, ports, source distribution and destination concentration. Application telemetry shows whether legitimate requests complete. Routing data shows which paths carry the traffic. System counters show whether routers, firewalls, load balancers or servers approach resource limits. User reports reveal failures that infrastructure averages may hide.
Those views answer different questions. A bandwidth alarm can show saturation but not whether the traffic is malicious. A protocol signature can identify UDP responses from port 11211 but not prove that every packet is unwanted. Application success can show customer impact but may lag the network event. Route telemetry can confirm the handoff while saying nothing about filtering quality. Operators need the views together because a response that protects one component can move harm elsewhere.
Threshold design is an accountability choice. If a mitigation provider is activated too late, a service can become unavailable before routes converge. If every short spike triggers diversion, the operator can pay unnecessary cost, create route churn or expose customers to the failure modes of the mitigation path. A threshold therefore needs a documented basis, observable inputs, authority to override it and post-incident review.
GitHub later said it was investigating ways to reduce dependence on human intervention by automating mitigation activation. [1] Automation can shorten the interval between detection and route change, but it also changes the failure surface. A false positive could divert legitimate traffic. A bad policy could announce incomplete prefixes. A compromised control plane could redirect traffic. An unavailable provider could receive routes it cannot serve.
The responsible question is not whether humans or automation are categorically better. It is whether the activation design is bounded. Automated action should be constrained to approved prefixes, verified provider sessions and tested route policies. It should preserve an operator stop control, record the evidence that triggered it and confirm that the intended announcements became visible. Human action should be rehearsed, time-bounded and supported by the same evidence. Speed without observability is not resilience.
A BGP handoff transfers reachability and operational risk
GitHub identified AS36459 in its account. [1] An autonomous-system number is not merely a label. It identifies a routing domain that can originate reachability for IP prefixes and exchange routes with other networks. When GitHub changed which connections carried its announcements, external networks recalculated paths according to the routes and policies visible to them.
That process is distributed. GitHub can withdraw or announce a route to its neighbors, but it cannot command every router on the Internet to update at the same instant. Neighbors process the change, apply policy and propagate selected routes. Other networks choose paths based on their own policies. During convergence, some users may still follow an old path while others reach the mitigation provider.
The public timeline suggests that the route shift and filtering produced recovery within minutes. It does not disclose the exact policy, prefix lengths, communities, local preference, provider architecture or regional convergence. Those details should remain unknown. What the evidence supports is the operational sequence: detection, decision, route withdrawal, exclusive announcement through mitigation links, convergence, filtering and restoration.
Each step has a failure mode. A missing prefix can leave part of the service unreachable. A more-specific or less-specific announcement can interact unexpectedly with existing routes. A route leak can send traffic to the wrong place. A provider access-control list can reject a legitimate announcement. Limited public evidence clean capacity can turn the scrubbing network into a bottleneck. Return-path asymmetry can complicate stateful controls. DNS or application dependencies can remain unavailable even when the primary prefix is reachable.
A rehearsed handoff should therefore produce evidence before an attack. The operator should know which prefixes will move, which sessions and communities will be used, which maximum-prefix and authorization controls apply, how the provider validates the announcement, how clean traffic returns and how the path is withdrawn after the event. Exercises should test partial failure, not only a successful full diversion.
The handoff also creates dependency. GitHub's direct transit and peering capacity no longer determined the entire outcome once the prefixes moved. Akamai's network, filters, capacity, control systems and connectivity became part of GitHub's service path. That dependency can be responsible when it is intentional, tested and observable. It becomes fragile when the operator cannot verify provider readiness or cannot return traffic to the normal path safely.
Capacity is not the same as resilience
GitHub said it had increased transit capacity and maintained peering at multiple exchanges, yet the attack was large enough to justify mitigation through Akamai. [1] This is not evidence that direct capacity was pointless. Additional capacity can absorb ordinary growth, localized attacks and the time required to activate mitigation. It can also prevent one congested connection from becoming a single point of failure. But capacity alone does not classify traffic or guarantee a clean path.
Resilience depends on where capacity exists and how it is controlled. Ten terabits of aggregate backbone capacity do not help if one customer-facing link saturates at a much lower rate. A scrubbing fleet with ample compute does not help if routes cannot move to it. A mitigation provider with global reach does not help if the customer's prefixes are not authorized or the clean return link is too small. A direct network with multiple peers does not help if all paths share the same congested facility or filtering bottleneck.
Packet rate adds another boundary. A stream of small packets can stress forwarding or filtering systems at a lower bit rate than a stream of large packets. GitHub published both Tbps and Mpps, which helps readers avoid treating bandwidth as the only capacity dimension. [1] Responsible reporting should ask which component experienced which load, rather than using the largest number as a proxy for every part of the system.
Capacity claims also need a reference point. Was the figure observed at one interface, summed across sites, measured before or after filtering, or reported by a provider? Did it include attack traffic that never reached the service? Was the peak sustained or momentary? GitHub's report gives useful peak values but does not disclose every measurement detail. An article can use the values while preserving that limitation.
The same principle applies to “always-on” mitigation. Always-on can describe continuous routing through a provider, continuous detection with on-demand diversion, or a commercial package with defined limits. The label does not prove that every dependency is redundant or that every attack is within capacity. Accountability requires the actual path, activation state, measured limits and fallback behavior.
The practical objective is not infinite capacity. No operator can promise to absorb every conceivable flood. The objective is a bounded service design that detects approaching limits, shifts traffic before hard failure, preserves essential functions, communicates what is affected and records why the chosen response was proportionate.
Clean-traffic delivery is the result that mitigation must prove
Filtering an attack is not useful if legitimate users remain unable to reach the service. DDoS mitigation therefore has two outputs: unwanted traffic rejected and wanted traffic delivered. Public incident accounts often emphasize the first because dropped volume is easy to dramatize. Customers experience the second.
A mitigation provider may filter by protocol behavior, packet validity, reputation, rate, challenge response or application context. Each method can produce false positives. A rule tuned to a known memcached response pattern may be precise for that vector, while a broad UDP block could disrupt legitimate services. A rate limit can protect a server while excluding users behind large shared networks. A challenge can distinguish browsers but fail for APIs or automation.
GitHub's account says filtering at Akamai's border restored service. [1] It does not disclose the rules or false-positive rate. The evidence supports the result at a high level, not a claim that every legitimate request succeeded. A rigorous post-incident record would compare successful application transactions, latency, regional reachability and error rates before, during and after mitigation.
Clean delivery also depends on the path from the mitigation network to the origin. If filtered traffic returns over a constrained tunnel or private connection, that link can become the new bottleneck. If the origin accepts unfiltered traffic on another path, attackers can bypass scrubbing. If routing is asymmetric, stateful devices can drop legitimate sessions. These are design questions, not claims about GitHub's undisclosed architecture.
The declaration of recovery should therefore be evidence based. Route visibility should show that intended prefixes reach the mitigation network. Provider telemetry should show filtering activity. Origin interfaces should remain below harmful thresholds. Application probes should complete from multiple networks and regions. User-facing errors should return to baseline. The operator should continue watching after the first green signal because attackers can change vectors or send a second wave.
GitHub's report notes a later 400 Gbps attack that did not produce the same effect. [1] That observation is useful because it shows continued monitoring and a changed outcome. It does not prove that all future attacks were solved. It does suggest that the mitigation path remained engaged or ready enough to contain another substantial spike during the incident period.
Software defaults, exposure and network policy divide responsibility
The reflector was not GitHub's server. That fact prevents a simplistic allocation of responsibility to the victim. The attack depended on memcached deployments elsewhere, the networks connecting them and forged requests sent from attacker-controlled infrastructure. GitHub controlled its own detection and mitigation, not the configuration of every reflector.
Memcached maintainers nevertheless controlled an important part of the ecosystem: the default behavior and operational guidance supplied to users. Disabling UDP by default in version 1.5.6 reduced the chance that a new installation would expose the amplification path unintentionally. [7] Documentation warning against untrusted exposure gives administrators a clearer standard. These controls do not transfer responsibility for existing misconfiguration to the software project, but they show how maintainers can reduce systemic risk without knowing each deployment.
Server operators controlled binding, firewall and upgrade choices. A cache intended for use by local applications generally had no reason to answer arbitrary Internet hosts. Restricting the listening interface or filtering UDP port 11211 could remove the server from the reflector population. An operator may have inherited a legacy deployment or lacked awareness of the risk, but operational accountability still asks whether exposure was inventoried and corrected.
Hosting providers could identify customers exposing the service and notify or filter where contracts and law allowed. They could also provide abuse contacts and telemetry. That does not mean every provider should silently block every UDP service. It means providers should know which high-risk exposures exist, how they communicate with customers and what emergency action they can justify when infrastructure is actively causing harm.
Access networks controlled the boundary at which forged-source packets entered the wider Internet. Their accountability is different from the reflector operator's. A network could fully block spoofing while a customer still exposed memcached; the server would remain insecure but could no longer be abused through forged requests from that filtered network. Another network could permit spoofing even if none of its own customers ran memcached. The attack combined weaknesses from different places.
Mitigation providers controlled filtering capacity and the rules at their borders. Victims controlled whether and when to route through them. Exchanges and transit providers carried reachability and traffic according to policy. Each actor's control was partial. The case is strongest when it maps those controls precisely instead of declaring that “the Internet” failed.
Automation should shorten the handoff without hiding authority
GitHub's stated interest in reducing human dependence reflects a real timing problem. [1] Four or five minutes can represent a large number of failed requests and a substantial operational burden. A pre-authorized automated response can act faster than a conference call, manual route edit and multistep approval.
But automation is not accountable merely because it is fast. The system must know which signal is sufficient, which prefixes it may change, which provider path is healthy and which evidence confirms success. It must prevent a local monitoring error from becoming global reachability loss. It must also expose who approved the policy and who can stop it.
A bounded design separates detection, recommendation and action. Detection gathers evidence. A policy engine can recommend diversion when multiple conditions agree. Action can be automatic for known vectors and limited scopes, while unfamiliar conditions require operator confirmation. Every stage should write a record that can be reviewed after the event.
Route safety controls are essential. Prefix lists should be current. Authorization with the mitigation provider should be tested. Maximum-prefix limits and route filters should constrain mistakes. Origin authorization should remain valid for the intended arrangement. Monitoring should verify external route visibility from independent vantage points, not only the local router's configuration state.
Automation also needs a return path. When attack volume falls, withdrawing mitigation routes too early can expose the service to another wave. Leaving them indefinitely can create cost, latency or dependency. The policy should define a stable observation period, a staged return and a rollback if direct paths degrade. Recovery is a controlled transition, not a binary “attack over” flag.
The incident record should make automation legible. Operators should be able to say which condition fired, which action occurred, which route changed, what external systems observed, how clean traffic behaved and why the system returned to normal routing. Without that record, automation can reduce outage time while making responsibility harder to reconstruct.
Human oversight remains necessary because DDoS events are adversarial. Attackers can change protocols, packet sizes, targets and timing in response to controls. An automated rule optimized for one vector can be exploited or bypassed. Operators need authority to change strategy, but that authority should operate through rehearsed, logged controls rather than improvisation under pressure.
Incident disclosure is part of network accountability
GitHub's report is useful because it includes operational facts rather than only reassurance. The company published UTC timestamps, traffic rates, packet rate, an autonomous-system number, the route action, the mitigation partner and a recovery sequence. [1] That level of detail lets network operators compare the event with their own readiness.
Disclosure has limits. Publishing exact filtering rules during an attack could aid an adversary. Revealing private topology or contract terms may create security and commercial risk. Customer data and internal communications require protection. Accountability does not require disclosing every sensitive fact in real time.
It does require enough evidence to distinguish a cause from a slogan. “We mitigated a sophisticated attack” does not show when detection occurred, what control changed or whether service recovered. A bounded public record can state the vector, measured scale, affected interval, major control action, recovery signal and corrective work without revealing exploitable detail.
The record should also separate observation from inference. GitHub measured traffic at its environment and described its response. Cloudflare measured amplification behavior in its analysis. CISA catalogued the protocol as a reflection vector. CAIDA measures spoofing capability. None of those sources, alone, identifies every server or source network involved in GitHub's attack. Combining them can explain the mechanism, but it cannot manufacture incident-specific attribution.
That boundary matters legally and operationally. A server seen responding to a forged request may be misconfigured, compromised or deliberately exposed; the packet alone does not establish intent. A network appearing in an address list may be a transit path rather than the origin. Public accountability should demand corrective evidence without turning incomplete telemetry into an accusation.
Post-incident disclosure can improve shared defense. Operators can search for the abused port, update defaults, test spoofing controls, prepare route handoffs and tune monitoring. The value is greatest when the report states which facts are measured and which remain unknown. Precision encourages action; overstatement encourages defensive denial.
A practical accountability matrix for reflection attacks
The first control domain is the target network. GitHub needed anomaly detection, sufficient direct headroom, authority to activate mitigation, tested route policy, clean return capacity and application-level recovery evidence. Its public report demonstrates parts of that chain. Private exercises, thresholds and contracts remain outside the record.
The second domain is the mitigation provider. Akamai needed to accept the announcements, absorb the flood, identify the memcached response pattern, filter without excessive collateral damage and return legitimate traffic. GitHub's recovery account supports the conclusion that this path worked during the event. It does not disclose the provider's internal method or every regional outcome.
The third domain is software and deployment. Memcached maintainers could reduce dangerous defaults and publish guidance. Server operators could disable UDP, bind privately, filter the port and upgrade. Hosting providers could inventory exposure and provide response channels. The later default change is a concrete risk reduction, not evidence that all deployments became safe.
The fourth domain is source networking. Customer-edge and access operators could validate that source addresses matched authorized prefixes. Multihomed customers required policies that tolerated legitimate asymmetry. Measurements and tests could show whether spoofing was possible. The control protects third parties, which is why incentives and auditability matter.
The fifth domain is shared coordination. Abuse contacts, threat intelligence, standards, measurement projects and incident reports allow actors who do not share a contract to exchange useful evidence. That coordination is often weaker than the technical capability. A provider may know a source is abusive but lack a current contact. A victim may see a reflector address but not know the responsible customer. A measurement project may show a network can spoof but not which incident it enabled.
The matrix prevents an all-or-nothing conclusion. GitHub could be well prepared for a route handoff while the ecosystem remained weak on spoofing. Memcached could ship a safer default while legacy servers remained exposed. A mitigation provider could filter successfully while a victim lacked clear recovery metrics. Progress in one domain should be credited without declaring the whole system solved.
Accountability becomes measurable when each domain has artifacts. The target can preserve activation and recovery logs. The mitigation provider can report filtering and clean-delivery indicators. The software project can document default changes and supported configurations. Server operators can show exposure scans. Access networks can show source-validation policy and tests. Coordination bodies can track response time and closure.
What the public evidence cannot prove
The public sources do not identify the attacker. GitHub did not publish a definitive attribution in its incident report. Later legal cases involving botnets do not automatically establish who launched this particular attack. The article should not convert a mechanism into an identity claim.
The sources do not provide a complete reflector list. They do not show which autonomous systems hosted the servers, which networks originated spoofed requests or whether a named provider had validation in place. General spoofing measurements cannot be backdated and applied to an incident without matching evidence.
The sources do not disclose GitHub's private routing policy or Akamai contract. They do not state the commercial trigger, capacity guarantee, route communities, tunnel design, filtering rule or return-path architecture. The public sequence supports analysis of the handoff, not a proprietary implementation diagram.
The traffic peak does not prove that every link or device processed 1.35 Tbps. Measurement location matters. Nor does the 126.9 Mpps figure establish the limiting resource. The service interruption and recovery are evidence of impact and response, but they do not reveal which component reached a hard limit.
The report does not quantify customer loss or contractual damages. A high-profile outage can have substantial effects, but a responsible article should not invent financial estimates. It can explain why availability matters to software development, code hosting and dependent workflows without assigning a number absent evidence.
The later absence of a similar outage during a 400 Gbps spike does not prove permanent immunity. Attack vectors and capacity change. It shows that the later traffic did not reproduce the earlier outcome under the conditions GitHub observed.
These limits strengthen the accountability analysis. They keep the article focused on controls that can be supported: detection timing, route authority, mitigation handoff, protocol exposure, safer defaults, source validation, clean delivery and evidence preservation. Unknowns become questions for governance rather than gaps filled by speculation.
The standard should be demonstrable continuity, not perfect defense
No network can guarantee that every attack will be harmless. Attackers can aggregate more devices, exploit new protocols, target dependencies or shift from volumetric floods to application-layer exhaustion. Demanding perfect defense would create an impossible standard and encourage vague claims.
A workable standard is demonstrable continuity under defined conditions. The operator should know its direct-path limits, mitigation activation time, route-convergence assumptions, clean-return capacity and critical application probes. It should test the handoff before an emergency and record exceptions. It should know which services can degrade gracefully and which must remain available.
The source ecosystem needs a similarly demonstrable standard. Access networks should be able to test whether customers can emit forged-source packets. Hosting providers should be able to identify exposed high-risk services and contact responsible operators. Software projects should choose safe defaults and make network exposure explicit. Measurement should be repeatable and time bounded.
The standard also recognizes tradeoffs. Strict filtering can break legitimate asymmetric designs if deployed carelessly. Aggressive DDoS rules can block real users. Route diversion can increase latency or dependency. Disabling a protocol can affect applications that rely on it. Responsible operation records those tradeoffs and chooses bounded controls instead of denying that costs exist.
This is where accountability differs from blame. Blame asks which actor can be named after harm. Accountability asks which actor controlled a decision, what evidence informed it, what limit applied, how the action was observed and what changed afterward. Multiple actors can be accountable for different controls without being equally responsible for the attack.
The GitHub incident is valuable because it exposes that structure. A vulnerable service default and public deployment enabled amplification. Weak source validation enabled redirection. GitHub's monitoring detected the flood. Routing authority moved traffic. Akamai filtered it. Public reporting preserved a timeline. Each step offers a separate control that operators can test.
Conclusion
GitHub's 2018 memcached attack was not only a record-setting DDoS event. It was a live test of how network authority moves under pressure. GitHub detected an abnormal traffic pattern, withdrew normal transit announcements for AS36459, announced its prefixes through Akamai and reported recovery after BGP convergence and filtering. [1]
The mechanism also exposed a distributed failure chain. Public memcached services generated amplified responses. Forged source addresses redirected those responses. Networks carried the traffic. GitHub and its mitigation provider had to preserve reachability while rejecting the flood. Software defaults, server exposure, anti-spoofing, routing policy, scrubbing capacity and application recovery all mattered.
No single control explains the result. More transit capacity would not close reflectors. BGP withdrawal would not classify packets. Anti-spoofing would not configure servers or provide clean delivery. Safer memcached defaults would not repair every legacy deployment. A mitigation provider could not act if the target lacked a tested handoff.
The accountability standard is therefore a chain of evidence. Targets should show when they detected harm, who could move routes, how the mitigation path was verified and which application signals proved recovery. Providers should show filtering and clean-delivery performance. Server and hosting operators should show exposure control. Access networks should show source-address validation. Software projects should show safe defaults and clear guidance.
GitHub's public timeline made much of that chain visible without claiming that every unknown was solved. That is the lasting lesson. Network resilience is credible when the organizations with practical control can demonstrate how traffic was measured, how authority moved, how legitimate users were protected and how the conditions that enabled the attack were reduced.
Sources
- https://github.blog/news-insights/company-news/ddos-incident-report/
- https://github.blog/news-insights/the-library/denial-of-service-attacks/
- https://blog.cloudflare.com/memcrashed-major-amplification-attacks-from-port-11211/
- https://blog.cloudflare.com/the-root-cause-of-large-ddos-ip-spoofing/
- https://blog.cloudflare.com/the-rise-of-multivector-amplifications/
- https://www.cisa.gov/ncas/alerts/ta14-017a
- https://docs.memcached.org/advisories/ddos/
- https://github.com/memcached/memcached/wiki/ConfiguringServer
- https://datatracker.ietf.org/doc/rfc2827/
- https://datatracker.ietf.org/doc/rfc3704/
- https://datatracker.ietf.org/doc/rfc4948/
- https://www.akamai.com/site/en/documents/brochure/memcached-reflection-attacks-launch-a-new-era-for-ddos-brochure.pdf
- https://www.akamai.com/site/en/documents/state-of-the-internet/soti-summer-2018-attack-spotlight.pdf
- https://www.caida.org/projects/spoofer/
- https://docs.manrs.org/docs/network-guide/anti-spoofing/
- https://www.cloudflare.com/learning/ddos/memcached-ddos-attack/
- https://www.cloudflare.com/learning/ddos/famous-ddos-attacks/
- https://www.ietf.org/archive/id/draft-qin-savnet-incentive-00.html
Member Briefing
Deeper Profile Context
Sign in with the right membership level to unlock the full briefing and source notes.
Only for Strategic Circle
Strategic Circle
Open to all readers. Unlock profile briefings after joining and signing in.
Join Strategic CircleOnly for Leadership Alliance
Leadership Alliance
For qualified IP-asset owners and management; sign in to unlock alliance briefings.
Join Leadership Alliance
