---
id: CVE-2024-21645
aliases:
  - GHSA-ghmw-rwh8-6qmr
  - PYSEC-2026-1818
title: pyload Log Injection vulnerability
summary: pyload Log Injection vulnerability
severity: medium
cvss: 5.3
cvssVector: 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N'
vendor: pyload-ng
product: pyload-ng
ecosystem: pip
affected:
  - pyload-ng < 0.5.0b3.dev77
patched:
  - pyload-ng 0.5.0b3.dev77
published: '2024-01-08'
updated: '2026-09-10'
sourceUpdated: '2026-09-10T03:49:59.706603499Z'
source: OSV
sourceUrl: 'https://osv.dev/vulnerability/GHSA-ghmw-rwh8-6qmr'
references:
  - url: 'https://github.com/pyload/pyload/security/advisories/GHSA-ghmw-rwh8-6qmr'
  - url: 'https://nvd.nist.gov/vuln/detail/CVE-2024-21645'
  - url: >-
      https://github.com/pyload/pyload/commit/4159a1191ec4fe6d927e57a9c4bb8f54e16c381d
  - url: 'https://github.com/pyload/pyload'
tags:
  - osv
  - pip
  - exploit-available
epss: 0.24698
epssPercentile: 0.97795
exploits:
  nuclei:
    - CVE-2024-21645
  checkedAt: '2026-09-24T07:52:50.963Z'
exploitAvailable: true
ingestedAt: '2026-07-08T18:25:49.718Z'
---

## Overview

### Summary
A log injection vulnerability was identified in `pyload`. This vulnerability allows any unauthenticated actor to inject arbitrary messages into the logs gathered by `pyload`.

### Details
`pyload` will generate a log entry when attempting to sign in with faulty credentials. This entry will be in the form of `Login failed for user 'USERNAME'`. However, when supplied with a username containing a newline, this newline is not properly escaped. Newlines are also the delimiter between log entries. This allows the attacker to inject new log entries into the log file.

### PoC
Run `pyload` in the default configuration by running the following command
```
pyload
```

We can now sign in as the pyload user and view the logs at `http://localhost:8000/logs`.
![Viewing the logs](https://user-images.githubusercontent.com/44903767/294433796-f2c96e39-8000-4649-99bb-9c50e786243d.png)

Any unauthenticated attacker can now make the following request to inject arbitrary logs.

```
curl 'http://localhost:8000/login?next=http://localhost:8000/' -X POST -H 'Content-Type: application/x-www-form-urlencoded' --data-raw $'do=login&username=wrong\'%0a[2024-01-05 02:49:19]  HACKER               PinkDraconian  THIS ENTRY HAS BEEN INJECTED&password=wrong&submit=Login'
```

If we now were to look at the logs again, we see that the entry has successfully been injected.
![PoC2](https://user-images.githubusercontent.com/44903767/294434785-2fc6dce4-3e2c-4da0-8e80-a6bba882f756.png)

### Impact
Forged or otherwise, corrupted log files can be used to cover an attacker’s tracks or even to implicate another party in the commission of a malicious act.


## Affected packages

- `pyload-ng < 0.5.0b3.dev77`

## Remediation

Upgrade to a patched release:

- `pyload-ng 0.5.0b3.dev77`
