High, CVSS 7.5PyPIAmendedPublished
Quart leaks raw request body (incl. plaintext passwords) to stdout via stray debug print in Body.__await__
GHSA-v853-p72q-4cfw
- Affected
- PyPI quart >= 0.23.0, <= 0.23.0
- Fixed in
- 0.23.1· Vendor fix available
- Issue
- 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.getdata(), WTForms validateonsubmit(), 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: 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.getjson(), file uploads, etc.). PoC 1. pip install quart==0.23.0 (requires Python 3.13+) 2. Minimal route: 3. Submit a POST with form data, e.g. a login form with staffid/password fields. 4. Observe stdout: the full raw body is printed as bytearray(b'csrftoken=...&staffid=...&password=...'). Confirmed via source diff against…
Recommended action: Upgrade to 0.23.1 or later, then redeploy and verify.A vendor fix does not resolve your finding until you verify it in your own systems.