{"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.97793,"exploits":{"nuclei":["CVE-2024-21645"],"checkedAt":"2026-09-23T07:13:28.419Z"},"exploitAvailable":true,"ingestedAt":"2026-07-08T18:25:49.718Z","slug":"CVE-2024-21645","body":"## Overview\n\n### Summary\nA log injection vulnerability was identified in `pyload`. This vulnerability allows any unauthenticated actor to inject arbitrary messages into the logs gathered by `pyload`.\n\n### Details\n`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.\n\n### PoC\nRun `pyload` in the default configuration by running the following command\n```\npyload\n```\n\nWe can now sign in as the pyload user and view the logs at `http://localhost:8000/logs`.\n![Viewing the logs](https://user-images.githubusercontent.com/44903767/294433796-f2c96e39-8000-4649-99bb-9c50e786243d.png)\n\nAny unauthenticated attacker can now make the following request to inject arbitrary logs.\n\n```\ncurl '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'\n```\n\nIf we now were to look at the logs again, we see that the entry has successfully been injected.\n![PoC2](https://user-images.githubusercontent.com/44903767/294434785-2fc6dce4-3e2c-4da0-8e80-a6bba882f756.png)\n\n### Impact\nForged 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.\n\n\n## Affected packages\n\n- `pyload-ng < 0.5.0b3.dev77`\n\n## Remediation\n\nUpgrade to a patched release:\n\n- `pyload-ng 0.5.0b3.dev77`","depth":"twilight","depthScore":46,"depthScoreParts":{"impact":29.2,"likelihood":4.9,"exploitation":12,"ransomware":0},"changes":[{"seq":4694,"id":"CVE-2024-21645","ts":1788887199931,"field":"exploit_available","old":"false","new":"true"},{"seq":3577,"id":"CVE-2024-21645","ts":1788886316413,"field":"exploit_available","old":"true","new":"false"},{"seq":2431,"id":"CVE-2024-21645","ts":1788882985155,"field":"exploit_available","old":"false","new":"true"},{"seq":1460,"id":"CVE-2024-21645","ts":1788882398443,"field":"exploit_available","old":"true","new":"false"},{"seq":574,"id":"CVE-2024-21645","ts":1788881835089,"field":"exploit_available","old":"false","new":"true"}]}