CVE-2024-1681
Medium · 5.3CVSS
5.3
EPSS
0.6%
Published
Apr 19, 2024
CISA due date
—
Cloudanix analysis
Attackers can sneak fake entries into an application's log files by sending specially crafted web requests, making it harder to spot real security problems.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- Low
- Impact
- Data Tampering
- Component
- Library
- Class
- Improper Input Validation
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
Improper neutralization of CRLF sequences in request paths allows an unauthenticated remote attacker to inject arbitrary text into application debug logs when log level is set to DEBUG.
Why it matters to the business
Attackers can corrupt or forge log entries, potentially hiding evidence of other intrusions, defeating log analysis tools, and complicating incident response without direct system compromise.
How an attack unfolds
An attacker sends a crafted GET request containing CRLF characters in the URL path to any endpoint protected by flask-cors; when the application is running with debug logging enabled, the injected content is written verbatim into the log file, allowing forged entries or log poisoning.
How to fix it
Upgrade arvados/arvados to commit 70d75d34808372e4ae3aeffc6347e28b916f35e4 or later; ensure production deployments run with logging level higher than DEBUG; sanitize or encode log output for any user-controlled fields.
How to confirm the fix worked
Confirm the presence of the fixed commit in the running codebase; test that CRLF sequences in request paths no longer appear verbatim in debug logs; review logging configuration to verify non-debug levels in production.
Typical attack path
- Identify an application endpoint that uses flask-cors and has debug logging enabled.
- Craft a GET request whose path contains %0D%0A or literal CRLF followed by attacker-controlled log text.
- Send the request to inject the desired log lines.
- Use the corrupted logs to mask subsequent malicious activity or mislead investigators.
How to detect it
Search web server and application logs for requests containing encoded or literal CRLF sequences in the path; look for log lines that appear out of context or contain HTTP request fragments without corresponding legitimate entries.
- %0D%0A in request paths
- CRLF sequences followed by common log forgery strings such as 'GET /fake' or timestamp manipulation
What your security team should do
- Immediately apply the referenced commit or newer release to all arvados deployments.
- Disable debug logging in all production and staging environments.
- Add input sanitization or structured logging that prevents raw user input from reaching log files.
- Audit recent logs for suspicious injected entries if debug logging was previously active.
The record
corydolphin/flask-cors is vulnerable to log injection when the log level is set to debug. An attacker can inject fake log entries into the log file by sending a specially crafted GET request containing a CRLF sequence in the request path. This vulnerability allows attackers to corrupt log files, potentially covering tracks of other attacks, confusing log post-processing tools, and forging log entries. The issue is due to improper output neutralization for logs.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| PyPI | flask-cors | 0 | 4.0.1 |
| Chainguard | kubeflow-jupyter-web-app | 0 | 1.8.0-r7 |
| Chainguard | kubeflow-volumes-web-app | 0 | 1.8.0-r6 |
| Chainguard | py3-flask-cors | 0 | 4.0.1-r0 |
| Chainguard | py3-supported-flask-cors | 0 | 4.0.1-r0 |
| Chainguard | py3.10-flask-cors | 0 | 4.0.1-r0 |
| Chainguard | py3.11-flask-cors | 0 | 4.0.1-r0 |
| Chainguard | py3.12-flask-cors | 0 | 4.0.1-r0 |
| Chainguard | py3.13-flask-cors | 0 | 4.0.1-r0 |
| Debian:11 | python-flask-cors | 0 | No fix |
| Debian:12 | python-flask-cors | 0 | No fix |
| Debian:13 | python-flask-cors | 0 | 4.0.1-1 |
| Debian:14 | python-flask-cors | 0 | 4.0.1-1 |
| Mageia:9 | python-flask-cors | 0 | 3.0.10-1.1.mga9 |
| Ubuntu:20.04:LTS | python-flask-cors | 0 | No fix |
| Ubuntu:22.04:LTS | python-flask-cors | 0 | No fix |
| Ubuntu:22.04:LTS | python-flask-cors | 0 | 3.0.9-2ubuntu0.1 |
| Ubuntu:24.04:LTS | python-flask-cors | 0 | No fix |
| Ubuntu:24.10 | python-flask-cors | 0 | No fix |
| Ubuntu:Pro:20.04:LTS | python-flask-cors | 0 | 3.0.8-2ubuntu0.1+esm1 |
| Ubuntu:Pro:24.04:LTS | python-flask-cors | 0 | 4.0.0-1ubuntu0.1~esm1 |
| Wolfi | kubeflow-jupyter-web-app | 0 | 1.8.0-r7 |
| Wolfi | kubeflow-volumes-web-app | 0 | 1.8.0-r6 |
| Wolfi | py3-flask-cors | 0 | 4.0.1-r0 |
| Wolfi | py3-supported-flask-cors | 0 | 4.0.1-r0 |
| Wolfi | py3.10-flask-cors | 0 | 4.0.1-r0 |
| Wolfi | py3.11-flask-cors | 0 | 4.0.1-r0 |
| Wolfi | py3.12-flask-cors | 0 | 4.0.1-r0 |
| Wolfi | py3.13-flask-cors | 0 | 4.0.1-r0 |
| openSUSE:Tumbleweed | python-Flask-Cors | 0 | 4.0.1-1.1 |
Related vulnerabilities
- CVE-2024-6844 Flask-CORS allows for inconsistent CORS matching Also affects flask-cors
- CVE-2024-6866 Flask-CORS vulnerable to Improper Handling of Case Sensitivity Also affects flask-cors
- CVE-2024-6839 Flask-CORS improper regex path matching vulnerability Also affects flask-cors
- CVE-2024-6221 A vulnerability in corydolphin/flask-cors version 4.0.1 allows the… Also affects flask-cors
- CVE-2026-34073 cryptography is a package designed to expose cryptographic primitives and recipes to… Also affects kubeflow-jupyter-web-app
- CVE-2026-25645 Requests is a HTTP library. Also affects kubeflow-jupyter-web-app
- CVE-2026-30922 pyasn1 is a generic ASN.1 library for Python. Also affects kubeflow-jupyter-web-app
- CVE-2026-26007 cryptography is a package designed to expose cryptographic primitives and recipes to… Also affects kubeflow-jupyter-web-app