Continuació de l'atac d'inundació que causa problemes als servidors que utilitzen HTTP/2.0

S'ha revelat informació sobre el mètode d'atac "Continuation flood" que afecta diverses implementacions del protocol HTTP/2, com Apache httpd, Apache Traffic Server, Node.js, oghttp, Go net/http2, Envoy, oghttp i nghttp2. La vulnerabilitat es pot utilitzar per dur a terme atacs a servidors que suporten HTTP/2.0 i, segons la implementació, comporta l'esgotament de la memòria (aturant el processament de peticions o bloquejant els processos) o creant una càrrega elevada de CPU (alentiment del processament de peticions). Segons l'investigador que va descobrir la vulnerabilitat, el problema identificat és més perillós que la vulnerabilitat "Ràpid Reset" trobada l'any passat, que es va utilitzar per dur a terme els atacs DDoS més grans en aquell moment.

L'alt nivell de perill s'explica pel fet que, per tal d'interrompre l'obra servidorPer provocar un bloqueig o una degradació significativa del rendiment, n'hi ha prou amb crear un flux de sol·licituds especialment dissenyades des d'un únic ordinador normal. En certs casos, fins i tot una sola connexió TCP és suficient per dur a terme un atac. A més, el trànsit relacionat amb l'atac no destaca als registres de les sol·licituds dels usuaris normals.

La vulnerabilitat és causada pel processament de trames HEADER i CONTINUATION a les sol·licituds HTTP/2. Els marcs HEADER s'utilitzen a HTTP/2 per enviar capçaleres HTTP i els marcs CONTINUATION s'utilitzen per dividir l'enviament de capçaleres HTTP en diverses etapes (per exemple, quan les capçaleres no encaixen en un marc o quan es poden omplir capçaleres). en l'etapa actual s'han d'enviar primer i després tornar a enviar les capçaleres els valors dels quals encara no es poden determinar). Quan s'envia capçaleres en diverses etapes, primer s'envia un marc HEADERS sense el senyalador END_HEADERS, seguit de diversos marcs CONTINUATION amb capçaleres addicionals, i un marc CONTINUATION amb el senyalador END_HEADERS acaba la llista.

El mètode d'atac consisteix a enviar un flux continu de trames CONTINUATION sense establir el senyalador END_HEADERS. Aquesta activitat resulta en la transmissió de servidor Un gran nombre de capçaleres, que el servidor emmagatzema a la RAM fins que s'esgota la memòria disponible. Per crear una càrrega de CPU elevada, a més de l'esgotament de la memòria, un atacant pot explotar la compressió de les trames CONTINUATION mitjançant el format HPACK, que requereix un esforç computacional per analitzar-les. En les implementacions HTTP/1.1, els límits de mida de les capçaleres i els temps d'espera de connexió es van utilitzar per protegir-se contra les inundacions de capçaleres. A causa de la major complexitat del protocol, moltes implementacions HTTP/2 no van implementar aquesta protecció contra l'enviament infinit de capçaleres.

La vulnerabilitat és més perillosa per als usuaris de Node.js (CVE-2024-27983), ja que aquesta implementació pot provocar un error enviant només uns quants fotogrames al servidor. A causa de les condicions de carrera a Node.js, per provocar un avortament mitjançant una comprovació d'assert, n'hi ha prou amb finalitzar les connexions mentre s'envia un flux de capçalera incomplet (falla si encara no ha arribat una trama CONTINUATION amb el senyalador END_HEADERS quan es tanquen les connexions). ). La vulnerabilitat s'ha solucionat a Node.js 18.20.1, 21.7.2 i 20.12.1, així com en versions recents de les biblioteques llhttp i undici. Les noves versions de Node.js també eliminen una vulnerabilitat menys perillosa (CVE-2024-27982) de la classe "contraban de sol·licituds", que permet, mitjançant la manipulació del valor "Longitud del contingut", encaixar en el contingut de les sol·licituds d'altres usuaris. processat en el mateix fil entre el frontend i el backend.

CONTINUACIÓ manejant vulnerabilitats en altres implementacions HTTP/2.0:

  • oghttp (CVE-2024-27919) - consum de memòria il·limitat.
  • Tempesta FW (CVE-2024-2758) - restriccions de bypass.
  • Biblioteca PHP amphp/http, amphp/http-client i amphp/http-server (CVE-2024-2653): consum de memòria il·limitat, fins a l'esgotament total de la memòria disponible.
  • Go package net/http (CVE-2023-45288): crea una càrrega elevada de CPU.
  • biblioteca nghttp2 (CVE-2024-28182) - denegació de servei.
  • Apache Httpd (CVE-2024-27316 - consum excessiu de memòria i càrrega de CPU.
  • Servidor de trànsit Apache (CVE-2024-31309 - consum excessiu de recursos.
  • Envoy (CVE-2024-30255): crea una càrrega elevada a la CPU (es requereix un fil de 300 Mbit/s per carregar completament un nucli de la CPU).

Font: opennet.ru

Compreu allotjament fiable per a llocs amb protecció DDoS, servidors VPS VDS 🔥 Compra allotjament web fiable amb protecció DDoS, servidors VPS VDS | ProHoster