{"id":"CVE-2026-48484","aliases":["GHSA-vq8p-m3wm-gv5f","PYSEC-2026-4293"],"url":"https://o3.security/vulnerability/CVE-2026-48484","summary":"pyLoad: Lack of Input Size Validation Leads to Denial of Service (DoS) and Process Termination","details":"## Description:\nThe API `rpc` function in `api_blueprint.py` handles `multipart/form-data` uploads by reading the whole content of the uploaded file into memory with `file.read()`. This occurs before the data is sent to the underlying function. Since there is no size limit set at this point, a large file upload can exhaust the server's available memory which led to process termination.\n\n## VulnerableCode & Path: \nhttps://github.com/pyload/pyload/blob/8e447958b8a66c5899775e725a8b90bce6643004/src/pyload/webui/app/blueprints/api_blueprint.py#L73  \n\n## Steps to Reproduce:\n1. Log in to pyLoad (or use an API key, here i used api to communicate).\n2. Prepare a large file (e.g., 10GB) .\n  ```bash\ntruncate -s 10G large_file.bin\n  ```\n3. Send a multipart request to an API function that accepts a file, such as `check_online_status_container`:\n```bash\ncurl -X POST \"http://localhost:8000/api/rpc\" \\\n     -H \"X-API-Key: YOUR_API_KEY\" \\\n     -F \"func=check_online_status_container\" \\\n     -F \"container=@large_file.bin\"\n```\n4. Monitor the server's memory usage. The process will attempt to allocate memory for the entire file and last the process will be killed by the kernel.\n<img width=\"1902\" height=\"610\" alt=\"dos-process-kill-poc\" src=\"https://github.com/user-attachments/assets/2b9bfd0f-5b9f-48dd-983f-f97dfcc358cc\" />\n\n## Impact\n- **Denial of Service (DoS)**: The pyLoad process will be killed by the Operating System's Out-Of-Memory (OOM) killer, or the entire system may become unresponsive due to swap thrashing or memory exhaustion.\n- **Service Instability**: Any active downloads or tasks will be interrupted.\n\n## Mitigations\n- **Implement File Size Limits**: Enforce a maximum size for uploaded files in the web server configuration (e.g., Nginx `client_max_body_size`).","published":"2026-10-09T16:26:37.728Z","modified":"2026-10-21T02:58:19.158567712Z","cvss":{"score":6.5,"severity":"MEDIUM","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H"},"epss":null,"cisaKev":null,"exploitsKnown":null,"affectedPackages":[{"ecosystem":"PyPI","name":"pyload-ng","fixedVersion":"0.5.0b3.dev101"}],"fix":{"url":"https://github.com/pyload/pyload/commit/461cd66f30fa9e96453fb4d8c5c47467e452363c","label":"pyload/pyload@461cd66"},"references":[{"type":"WEB","url":"https://github.com/pyload/pyload/blob/8e447958b8a66c5899775e725a8b90bce6643004/src/pyload/webui/app/blueprints/api_blueprint.py#L73"},{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/48xxx/CVE-2026-48484.json"},{"type":"ADVISORY","url":"https://github.com/pyload/pyload/security/advisories/GHSA-vq8p-m3wm-gv5f"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-48484"},{"type":"FIX","url":"https://github.com/pyload/pyload/commit/461cd66f30fa9e96453fb4d8c5c47467e452363c"},{"type":"PACKAGE","url":"https://github.com/pyload/pyload"}],"provenance":{"sources":["OSV.dev","FIRST.org (EPSS)"],"lastVerified":"2026-10-21T02:58:19.158567712Z"}}