2018 年 2 月,GitHub 遭受了一場峰值 1.35 Tbps 的 DDoS 攻擊——不是靠成千上萬台殭屍主機,而是靠不到 2 千台暴露的 Memcached 伺服器。攻擊者發送極小的請求,卻換來高達 5.1 萬倍的回應放大。這就是反射放大攻擊(Reflection/Amplification):它把「攻擊者手裡的帶寬」與「受害者承受的帶寬」徹底脫鉤。本文帶你拆解這場持續十年的軍備競賽。

一、放大係數:攻擊的「槓桿率」

放大係數(Amplification Factor, AF)的定義極其簡單:AF = 回應封包大小 / 請求封包大小。攻擊的核心前提是源地址偽造(IP Spoofing)——攻擊者把請求的源 IP 偽造成受害者,於是伺服器的「大回應」全部砸向受害者,而攻擊者只需付出極小的請求帶寬。

向量埠典型放大係數現狀
MemcachedUDP/11211~5,000–51,000×已大量收斂,仍需警惕
NTP monlistUDP/123~556×絕大多數已關閉 monlist
CLDAPUDP/389~56–70×2017–2019 主流
WS-DD(WSDD)UDP/3702~15–50×2021 起暴增,微軟警示
SSDP(UPnP)UDP/1900~30×家用路由器普遍
DNS(ANY)UDP/53~28–54×開放解析器長期威脅
SNMPUDP/161~6.5×v3 已緩解

這張表揭示了一個殘酷事實:只要網際網路上還有一個開放的 UDP 服務可被偽造源地址查詢,它就能成為攻擊者的「免費放大器」。

二、為什麼是 UDP?無連接才是原罪

反射放大本質上依賴 UDP 的無連接特性:UDP 不握手、不校驗源地址真偽,一個偽造源 IP 的請求就能騙到回應。US-CERT 早在 TA14-017A 中就列出了 14 種基於 UDP 的放大向量。TCP 因為三次握手(SYN 必須得到真實源的 ACK)天然抗偽造,所以反射放大幾乎只發生在 UDP 服務上。

關鍵洞察:放大攻擊的「槓桿」不是算力,而是開放服務的存量。攻擊者不養殭屍,只「租借」全網錯誤配置的主機——這讓攻擊成本降至近乎零。

三、向量的遷移史:打地鼠遊戲

防禦方每堵死一個向量,攻擊者就轉向下一個:

  • 2013–2014:NTP monlist(~556×)橫行,單次即可打出數百 Gbps;隨後 NTP 社群預設關閉 monlist。
  • 2017–2018:CLDAP(~70×)與 Memcached(~5 萬×)接棒,後者催生 1.35 Tbps 紀錄。
  • 2021 起:WS-DD(UDP/3702,用於設備發現)暴增——微軟報告其觀測到的 WS-DD 放大攻擊在一年內增長 3,300%,因為海量 IoT/打印机/攝像頭預設開啟該服務。
  • 2024–2025:Cloudflare 年度報告顯示,純反射/放大仍佔 L3/4 攻擊主體,但單向量峰值已讓位於多向量混合(反射 + 直接洪流 + L7)與 Mirai 變種驅動的 Tbps 級直接攻擊。

四、根源解 vs 症狀解:BCP 38 的失落

理論上,反射放大的終極解藥是 BCP 38 / RFC 2827(入口過濾):每個網路運營商在邊緣丟棄「源地址不屬於本網段」的封包,讓源地址偽造在網際網路上根本無法成立。但三十年過去,BCP 38 的部署率仍遠未普及——因為它要求所有運營商協同,且對單邊部署者無直接收益。

這就是「公地悲劇」:每個運營商都盼別人過濾,自己不過濾也能免費搭車。結果是,2025 年的我們依然在和 2014 年的同一個漏洞作戰。

五、防禦方的雙線作戰

在 BCP 38 全面落地之前,防禦方必須兩手抓:

  • 身為潛在放大器(服務加固):關閉 NTP monlist、限制 DNS 解析器為遞歸僅本地、在邊緣 ACL 丟棄 UDP/3702 入站、為 Memcached 綁定 localhost。別讓你的伺服器成為攻擊者的幫兇。
  • 身為潛在受害者(吸收與清洗):依賴具備 Tbps 級吸收能力的全球分散清洗網路;對 UDP 反射流量做基於行為的限速而非簡單封 IP(偽造源讓封 IP 無效);啟用 Anycast 就近稀釋。
  • 主動情報:訂閱 Shadowserver、掃描自身暴露的 UDP 服務並修復,避免登上「可放大資產」清單。

結語

反射放大攻擊是一面鏡子,照出網際網路基礎設施的「責任分散」困境。只要開放 UDP 服務與源地址偽造仍然存在,這場軍備競賽就不會結束。對防禦方而言,真正的壁壘不是某條 ACL,而是一個能在本質上吸收 Tbps 級洪峰、並在秒級識別異常 UDP 行為的架構——畢竟你無法指望全網明天就都部署 BCP 38。