// For flags

CVE-2022-24667

 

Severity Score

7.5
*CVSS v3.1

Exploit Likelihood

*EPSS

Affected Versions

*CPE

Public Exploits

0
*Multiple Sources

Exploited in Wild

-
*KEV

Decision

-
*SSVC
Descriptions

A program using swift-nio-http2 is vulnerable to a denial of service attack, caused by a network peer sending a specially crafted HPACK-encoded header block. This attack affects all swift-nio-http2 versions from 1.0.0 to 1.19.1. There are a number of implementation errors in the parsing of HPACK-encoded header blocks that allow maliciously crafted HPACK header blocks to cause crashes in processes using swift-nio-http2. Each of these crashes is triggered instead of an integer overflow. A malicious HPACK header block could be sent on any of the HPACK-carrying frames in a HTTP/2 connection (HEADERS and PUSH_PROMISE), at any position. Sending a HPACK header block does not require any special permission, so any HTTP/2 connection peer may send one. For clients, this means any server to which they connect may launch this attack. For servers, anyone they allow to connect to them may launch such an attack. The attack is low-effort: it takes very little resources to send an appropriately crafted field block. The impact on availability is high: receiving a frame carrying this field block immediately crashes the server, dropping all in-flight connections and causing the service to need to restart. It is straightforward for an attacker to repeatedly send appropriately crafted field blocks, so attackers require very few resources to achieve a substantial denial of service. The attack does not have any confidentiality or integrity risks in and of itself: swift-nio-http2 is parsing the field block in memory-safe code and the crash is triggered instead of an integer overflow. However, sudden process crashes can lead to violations of invariants in services, so it is possible that this attack can be used to trigger an error condition that has confidentiality or integrity risks. The risk can be mitigated if untrusted peers can be prevented from communicating with the service. This mitigation is not available to many services. The issue is fixed by rewriting the parsing code to correctly handle all conditions in the function. The principal issue was found by automated fuzzing by oss-fuzz, but several associated bugs in the same code were found by code audit and fixed at the same time

Un programa usando swift-nio-http2 es vulnerable a un ataque de denegación de servicio, causado por un compañero de red que envía un bloque de encabezado codificado con HPACK especialmente diseñado. Este ataque afecta a todas las versiones de swift-nio-http2 desde 1.0.0 hasta 1.19.1. Se presenta una serie de errores de implementación en el análisis de bloques de encabezados codificados con HPACK que permiten que bloques de encabezados HPACK diseñados de forma maliciosa causen bloqueos en los procesos que usan swift-nio-http2. Cada uno de estos bloqueos son desencadenados en lugar de un desbordamiento de enteros. Un bloque de encabezado HPACK malicioso podría enviarse en cualquiera de las tramas que llevan HPACK en una conexión HTTP/2 (HEADERS y PUSH_PROMISE), en cualquier posición. El envío de un bloque de encabezado HPACK no requiere ningún permiso especial, por lo que cualquier compañero de conexión HTTP/2 puede enviar uno. Para los clientes, esto significa que cualquier servidor al que sean conectados puede lanzar este ataque. Para los servidores, cualquier persona a la que permitan conectarse puede lanzar este ataque. El ataque es de bajo esfuerzo: son necesarios muy pocos recursos para enviar un bloque de campo apropiadamente diseñado. El impacto en la disponibilidad es alto: la recepción de una trama que lleve este bloque de campo bloquea inmediatamente el servidor, cayendo todas las conexiones en vuelo y causando la necesidad de reiniciar el servicio. Es sencillo para un atacante enviar repetidamente bloques de campo apropiadamente diseñados, por lo que atacantes necesitan muy pocos recursos para lograr una denegación de servicio sustancial. El ataque no presenta ningún riesgo de confidencialidad o integridad en sí mismo: swift-nio-http2 está analizando el bloque de campo en código seguro para la memoria y el bloqueo es desencadenado en lugar de un desbordamiento de enteros. Sin embargo, los bloqueos repentinos de procesos pueden conllevar a violaciones de invariantes en los servicios, por lo que es posible que este ataque pueda ser usado para desencadenar una condición de error que tenga riesgos de confidencialidad o integridad. El riesgo puede mitigarse si puede evitarse que los compañeros que no son confiables sean comunicados con el servicio. Esta mitigación no está disponible para muchos servicios. El problema es corregido al reescribir el código de análisis para manejar correctamente todas las condiciones de la función. El problema principal fue encontrado por el fuzzing automatizado por oss-fuzz, pero varios errores asociados en el mismo código fueron encontrados por la auditoría de código y corregidos al mismo tiempo

*Credits: N/A
CVSS Scores
Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High
Attack Vector
Network
Attack Complexity
Low
Authentication
None
Confidentiality
None
Integrity
None
Availability
Partial
* Common Vulnerability Scoring System
SSVC
  • Decision:-
Exploitation
-
Automatable
-
Tech. Impact
-
* Organization's Worst-case Scenario
Timeline
  • 2022-02-07 CVE Reserved
  • 2022-02-09 CVE Published
  • 2024-08-03 CVE Updated
  • 2024-09-15 EPSS Updated
  • ---------- Exploited in Wild
  • ---------- KEV Due Date
  • ---------- First Exploit
CWE
  • CWE-190: Integer Overflow or Wraparound
CAPEC
Affected Vendors, Products, and Versions
Vendor Product Version Other Status
Vendor Product Version Other Status <-- --> Vendor Product Version Other Status
Apple
Search vendor "Apple"
Swiftnio Http\/2
Search vendor "Apple" for product "Swiftnio Http\/2"
>= 1.0.0 < 1.19.2
Search vendor "Apple" for product "Swiftnio Http\/2" and version " >= 1.0.0 < 1.19.2"
swift
Affected