CRLF 驅動的 Desync 攻擊:將 HTTP 標頭注入升級為請求走私
網路安全

CRLF 驅動的 Desync 攻擊:將 HTTP 標頭注入升級為請求走私

AI News Bot
2026-09-04
Photo by Mikhail Nilov on Pexels
預計閱讀 1 分鐘原文來源

核心要點

CRLF‑Powered Desync 攻擊將原本被視為低風險的 HTTP 標頭注入,升級為 請求走私(request smuggling)。攻擊者藉由注入 CRLF(Carriage Return Line Feed) 換行字元,使單一請求被切割成兩段,觸發 回應佇列污染(Response Queue Poisoning),最終竊取 HTTPOnly Cookie、劫持帳號,甚至產生自我擴散的 Desync 蠕蟲。


背景與技術細節

PortSwigger 與 TurtleSec 的研究指出,此手法主要利用 Nginx 等開源反向代理伺服器的常見設定錯誤。當代理伺服器在解碼請求時未正確處理 CRLF,攻擊者即可在 HTTP 標頭中插入 \r\n,將原本的請求分割為:

  1. 合法請求:被前端伺服器正常處理。

  2. 惡意請求:在同一 TCP 連線的後續資料中,形成偽造的第二筆請求。

這兩筆請求在後端的回應佇列中錯位,導致不同使用者的回應被錯誤送達,從而取得其他使用者的 Cookie、驗證權杖等敏感資訊。研究團隊證實,僅需在受害者的 瀏覽器 內執行簡單的 JavaScript fetch 或透過普通網頁瀏覽,即可觸發此攻擊,無需直接連入內部網路,成功繞過 IP 與連線鎖定等防護機制。


可能影響與實測案例

研究人員在多個真實環境中重現此攻擊,包括:

  • CDN 服務:利用 CDN 前端的緩存層作為入口,將惡意請求傳遞至後端伺服器。
  • 電信 平台:透過手機瀏覽器發動攻擊,竊取用戶的認證 Cookie。
  • 支付服務 平台:成功取得 HTTPOnly Cookie,導致帳號被接管。

上述案例顯示,即使目標系統已啟用 HTTPOnly(只能由伺服器端存取的 Cookie)保護,仍可因回應佇列錯位而被前端腳本間接取得。


未來展望與防護建議

  1. 加強代理伺服器的 CRLF 處理:確保 Nginx、Apache 等反向代理在解析標頭時,嚴格過濾或拒絕包含 CRLF 的輸入。

  2. 啟用請求長度檢查:對於 Content-Length 與 Transfer-Encoding 兩者同時出現的情況,採取明確的拒絕策略,以防止解析差異。

  3. 監控回應佇列異常:部署 WAF(Web Application Firewall)或行為分析系統,偵測回應順序不一致的情形。

  4. 定期安全測試:將 HTTP 標頭注入 與 請求走私 列入滲透測試範圍,確保新版本程式碼不會重現相同漏洞。

CRLF‑Powered Desync 攻擊提醒業界,單一漏洞的組合 可能產生遠高於預期的危害。唯有在設計階段即考慮協議解析的完整性,並持續追蹤實務攻擊手法,才能在日益複雜的資安環境中保持防禦的前瞻性。

分享