Instituto Nacional de ciberseguridad. Sección Incibe
Instituto Nacional de Ciberseguridad. Sección INCIBE-CERT

Vulnerabilidad en Bref (CVE-2024-29186)

Gravedad CVSS v3.1:
MEDIA
Tipo:
CWE-400 Consumo de recursos no controlado (Agotamiento de recursos)
Fecha de publicación:
22/03/2024
Última modificación:
22/03/2024

Descripción

Bref es un proyecto de código abierto que ayuda a los usuarios a utilizar PHP sin servidor en Amazon Web Services. Cuando se usa Bref anterior a la versión 2.1.17 con el tiempo de ejecución de la función controlada por eventos y el controlador es "RequestHandlerInterface", el evento Lambda se convierte en un objeto PSR7. Durante el proceso de conversión, si la solicitud es MultiPart, se analiza cada parte. En el proceso de análisis, el encabezado `Content-Type` de cada parte se lee usando la librería `Riverline/multipart-parser`. La librería, en la función `StreamedPart::parseHeaderContent`, realiza operaciones lentas de cadenas multibyte en el valor del encabezado. Precisamente, la función `mb_convert_encoding` se utiliza con el primer (`$string`) y el tercer parámetro (`$from_encoding`) leídos del valor del encabezado. Un atacante podría enviar solicitudes específicamente manipuladas que obligarían al servidor a realizar operaciones prolongadas con la consiguiente larga duración facturada. El ataque tiene los siguientes requisitos y limitaciones: Lambda debe usar el tiempo de ejecución de la función controlada por eventos y el controlador `RequestHandlerInterface` y debe implementar al menos un endpoint que acepte solicitudes POST; el atacante puede enviar solicitudes de hasta 6 MB de longitud (esto es suficiente para provocar una duración facturada de entre 400 ms y 500 ms con la imagen Lambda de RAM predeterminada de Bref de 1024 MB); y si Lambda usa un tiempo de ejecución PHP <= php-82, el impacto es mayor ya que la duración facturada en la imagen Lambda de RAM predeterminada de Bref de 1024 MB podría aumentar a más de 900 ms para cada solicitud. Tenga en cuenta que la vulnerabilidad se aplica solo a los encabezados leídos del cuerpo de la solicitud, ya que el encabezado de la solicitud tiene una limitación que permite un tamaño máximo total de ~10 KB. La versión 2.1.17 contiene una solución para este problema.