PYSEC-2026-1818

    Dashboard / Vulnerabilities / PYSEC-2026-1818

    PYSEC-2026-1818

    Published: 7 Jul 2026Last Modified: 7 Jul 2026

    Summary: pyload Log Injection vulnerability

    Details: ### 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

    Package

    Name: pyload-ng

    Purl: pkg:pypi/pyload-ng

    Affected ranges

    Type: ECOSYSTEM

    Events:

    Introduced- 0
    Fixed -0.5.0b3.dev77

    Affected versions

    0.5.0a5.dev528
    0.5.0a5.dev532
    0.5.0a5.dev535
    0.5.0a5.dev536
    0.5.0a5.dev537
    0.5.0a5.dev539
    0.5.0a5.dev540
    0.5.0a5.dev545
    0.5.0a5.dev562
    0.5.0a5.dev564
    0.5.0a5.dev565
    0.5.0a6.dev570
    0.5.0a6.dev578
    0.5.0a6.dev587
    0.5.0a7.dev596
    0.5.0a8.dev602
    0.5.0a9.dev615
    0.5.0a9.dev629
    0.5.0a9.dev632
    0.5.0a9.dev641
    0.5.0a9.dev643
    0.5.0a9.dev655
    0.5.0a9.dev806
    0.5.0b1.dev1
    0.5.0b1.dev2
    0.5.0b1.dev3
    0.5.0b1.dev4
    0.5.0b1.dev5
    0.5.0b2.dev10
    0.5.0b2.dev11
    0.5.0b2.dev12
    0.5.0b2.dev9
    0.5.0b3.dev13
    0.5.0b3.dev14
    0.5.0b3.dev17
    0.5.0b3.dev18
    0.5.0b3.dev19
    0.5.0b3.dev20
    0.5.0b3.dev21
    0.5.0b3.dev22
    0.5.0b3.dev24
    0.5.0b3.dev26
    0.5.0b3.dev27
    0.5.0b3.dev28
    0.5.0b3.dev29
    0.5.0b3.dev30
    0.5.0b3.dev31
    0.5.0b3.dev32
    0.5.0b3.dev33
    0.5.0b3.dev34
    0.5.0b3.dev35
    0.5.0b3.dev38
    0.5.0b3.dev39
    0.5.0b3.dev40
    0.5.0b3.dev41
    0.5.0b3.dev42
    0.5.0b3.dev43
    0.5.0b3.dev44
    0.5.0b3.dev45
    0.5.0b3.dev46
    0.5.0b3.dev47
    0.5.0b3.dev48
    0.5.0b3.dev49
    0.5.0b3.dev50
    0.5.0b3.dev51
    0.5.0b3.dev52
    0.5.0b3.dev53
    0.5.0b3.dev54
    0.5.0b3.dev57
    0.5.0b3.dev60
    0.5.0b3.dev62
    0.5.0b3.dev64
    0.5.0b3.dev65
    0.5.0b3.dev66
    0.5.0b3.dev67
    0.5.0b3.dev68
    0.5.0b3.dev69
    0.5.0b3.dev70
    0.5.0b3.dev71
    0.5.0b3.dev72
    0.5.0b3.dev73
    0.5.0b3.dev74
    0.5.0b3.dev75
    0.5.0b3.dev76

    Common Vulnerability Scoring System

    Attack Vector
    Network
    Adjacent
    Local
    Physical
    Privileges Required
    None
    Low
    High
    User Interaction
    None
    Required
    Scope
    Unchanged
    Changed
    Confidentiality
    None
    Low
    High
    Integrity
    None
    Low
    High
    Availability
    None
    Low
    High
    PYSEC-2026-1818 | CVE-DB