Alta

Quart leaks raw request body (incl. plaintext passwords) to stdout via stray debug print in Body.__await__

  • Publicada: 05.10.2026
  • Actualizado: 11.10.2026 15:18

Summary

Quart 0.23.0 contains a stray debug statement (print(data)) inside Body.__await__ in quart/wrappers/request.py. Any request whose body is awaited — await request.form, await request.get_data(), WTForms validate_on_submit(), etc. — has its raw, unparsed body printed to stdout, including plaintext form fields such as passwords and CSRF tokens. Confirmed present in 0.23.0, confirmed absent in 0.22.0.

Details

In src/quart/wrappers/request.py, Body.__await__ accumulates the request body into a bytearray:

​python data = bytearray() while not self._queue.empty(): data.extend(self._queue.get_nowait()) print(data) # <-- not present in 0.22.0 if ( self._max_content_length is not None and len(data) > self._max_content_length ): raise RequestEntityTooLarge() ​

This fires for every request that awaits its body — the overwhelming majority of POST/PUT routes in a typical Quart app (form submissions, JSON APIs via request.get_json(), file uploads, etc.).

PoC

  1. pip install quart==0.23.0 (requires Python 3.13+)
  2. Minimal route: ​python @app.route("/login", methods=["POST"]) async def login(): form_data = await request.form ... ​
  3. Submit a POST with form data, e.g. a login form with staff_id/password fields.
  4. Observe stdout: the full raw body is printed as bytearray(b'csrf_token=...&staff_id=...&password=...').

Confirmed via source diff against 0.22.0's request.py, where this line does not exist.

Impact

Any app that captures stdout in logs (terminal redirect, systemd/journald, Docker logs, cloud log aggregation, etc.) will have every submitted form body — including login credentials — written to logs in plaintext. This affects any Quart 0.23.0 app handling authentication or any sensitive form data, and is trivially triggerable by any user simply submitting a form (no attacker action required beyond normal use).

Software afectado

Haz clic en una tecnología para ver todas sus vulnerabilidades.

PlataformaPaqueteVersiones vulnerablesCorregida en
Python (PyPI) quart >= 0.23.0, < 0.23.1 0.23.1

Referencias

Puntuación CVSS 7.5/10
Vector CVSS
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
Debilidad (CWE)
CWE-532
Plataforma
Python (PyPI)
Paquete
quart
Publicada
05.10.2026
Actualizado
11.10.2026 15:18

Fuentes y licencias

OSV / GitHub Advisory Database - GHSA-v853-p72q-4cfw - CC BY 4.0

Historial de vulnerabilidades: quart

Todas las vulnerabilidades publicadas de este paquete (Python (PyPI)), de la más reciente a la más antigua. Muestra si es un fallo aislado o un paquete que hay que vigilar.

Entradas en total
2
Primera → última
10.2024 10.2026
Sin corrección
0
Explotada en ataques
0

Distribución por gravedad

  • Alta 1
  • Media 1

Divulgaciones por año

  1. 2024: 1
  2. 2025: 0
  3. 2026: 1
  1. Quart leaks raw request body (incl. plaintext passwords) to stdout via stray debug print in Body.__await__ esta entrada
    Alta · 7.5 ghsa-v853-p72q-4cfw >= 0.23.0, < 0.23.1 0.23.1
  2. Media · 7.5 CVE-2024-49767 < 0.20.0 0.20.0

Identifica las vulnerabilidades de tu aplicación

Con la integración de DockRay y el inventario de software activado, DockRay compara las versiones notificadas de los componentes con las vulnerabilidades conocidas y avisa de las coincidencias confirmadas. La cobertura depende de la tecnología compatible y de los avisos disponibles.

Conectar tu aplicación
Newsletter DockRay

La seguridad de tus aplicaciones en tu correo

Vulnerabilidades importantes, recomendaciones concretas y consejos prácticos para tus aplicaciones. Elige tus tecnologías y sigue lo que importa para tu proyecto.

  • Un resumen diario de nuevas vulnerabilidades, también las críticas.
  • Avisos sobre actualizaciones importantes.
  • Consejos prácticos sobre seguridad y monitorización de aplicaciones.

Déjalo vacío para recibir avisos de todas las tecnologías.

Suscripción gratuita. Date de baja con un clic en cualquier correo.