{"id":"CVE-2024-1728","published":"2024-04-10T17:07:56Z","modified":"2024-08-01T18:48:22Z","title":"Local File Inclusion in gradio-app/gradio","vendor":"gradio-app","product":"gradio-app/gradio","tier":"core","eol":null,"affectedVersions":[{"vendor":"gradio-app","product":"gradio-app/gradio","versions":[">= unspecified, < 4.19.2"]}],"description":{"text":"gradio-app/gradio is vulnerable to a local file inclusion vulnerability due to improper validation of user-supplied input in the UploadButton component. Attackers can exploit this vulnerability to read arbitrary files on the filesystem, such as private SSH keys, by manipulating the file path in the request to the `/queue/join` endpoint. This issue could potentially lead to remote code execution. The vulnerability is present in the handling of file upload paths, allowing attackers to redirect file uploads to unintended locations on the server.","provenance":"source","from":"CVE.org"},"summary":{"text":"The local file inclusion flaw affects the gradio-app/gradio product, specifically the UploadButton component, where user-supplied input is not properly validated in the handling of file upload paths. An attacker with network access and no authentication or user interaction can manipulate the file path in requests to the /queue/join endpoint to read arbitrary files on the filesystem, such as private SSH keys, and redirect uploads to unintended server locations, which could potentially lead to remote code execution.","provenance":"ai","model":"claude-haiku-5-5","generatedAt":"2026-10-29T07:13:12Z"},"cvss":{"score":7.5,"severity":"HIGH","version":"3.0","vector":"CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N","provenance":"source","from":"CVE.org CNA"},"epss":{"score":0.85393,"percentile":0.99719,"date":"2026-10-30","provenance":"source"},"kev":null,"vulncheckKev":null,"exploited":false,"otx":{"pulseCount":0,"pulses":[],"provenance":"machine"},"cwes":[{"id":"CWE-22","name":"Improper Limitation of a Pathname to a Restricted Directory"}],"references":[{"url":"https://huntr.com/bounties/9bb33b71-7995-425d-91cc-2c2a2f2a068a","tags":[]},{"url":"https://github.com/gradio-app/gradio/commit/16fbe9cd0cffa9f2a824a0165beb43446114eec7","tags":[]}],"techniques":[],"reports":[],"affected":[{"ecosystem":"PyPI","package":"gradio","vulnerableRanges":["<4.19.2"],"patched":["4.19.2"],"from":["GHSA-m842-4qm8-7gpq","PYSEC-2026-345"],"provenance":"source"}],"advisories":[{"id":"GHSA-m842-4qm8-7gpq","url":"https://github.com/advisories/GHSA-m842-4qm8-7gpq","severity":"CRITICAL","ecosystem":"PyPI","package":"gradio","vulnerableRanges":["<4.19.2"],"patched":["4.19.2"],"provenance":"source","from":"GHSA"}],"euvd":{"id":"EUVD-2024-1079","url":"https://euvd.enisa.europa.eu/vulnerability/EUVD-2024-1079","exploited":false,"exploitedSince":null,"provenance":"source"},"exploits":[],"exploitSources":{"nuclei":[{"id":"CVE-2024-1728","name":"Gradio > 4.19.1 UploadButton - Path Traversal","severity":"high","path":"http/cves/2024/CVE-2024-1728.yaml","url":"https://github.com/projectdiscovery/nuclei-templates/blob/main/http/cves/2024/CVE-2024-1728.yaml"}],"provenance":"source"},"exploitRefs":[],"flow":[],"timeline":[{"date":"2024-04-10","kind":"published","label":"Published (CVE.org)","url":"https://www.cve.org/CVERecord?id=CVE-2024-1728","provenance":"source"}],"speed":{"daysToPublicExploit":null,"firstExploitFrom":null,"daysToKev":null},"priority":{"score":30.2,"factors":[{"name":"In a KEV catalog","points":0.0,"detail":"not listed"},{"name":"Recent KEV listing","points":0.0,"detail":"not listed"},{"name":"Known ransomware use","points":0.0,"detail":"not known"},{"name":"EPSS percentile","points":19.94,"detail":"percentile 0.9972"},{"name":"Named in threat reports","points":0.0,"detail":"0 reports"},{"name":"Public exploit code","points":5.0,"detail":"1 nuclei template"},{"name":"Mentioned in OTX pulses","points":0.0,"detail":"0 pulses"},{"name":"CVSS severity","points":5.25,"detail":"base score 7.5"},{"name":"End-of-life product","points":0.0,"detail":"supported or unknown"}]},"lineage":{"familyId":"fam-gradio-app-gradio-cve-2023-34239","parents":[{"from":"CVE-2024-2206","to":"CVE-2024-1728","relation":"successor","confidence":"high","kind":"lineage","evidence":[{"kind":"version-step","provenance":"source","package":"PyPI:gradio","fromFixed":"4.18.0","toFixed":"4.19.2","daysApart":14},{"kind":"same-code","provenance":"machine","files":["gradio/blocks.py","gradio/processing_utils.py"],"commits":["https://github.com/gradio-app/gradio/commit/16fbe9cd0cffa9f2a824a0165beb43446114eec7","https://github.com/gradio-app/gradio/commit/49d9c48537aa706bf72628e3640389470138bdc6"],"basis":"shared function","functions":["_move_to_cache","preprocess_data"]}]},{"from":"CVE-2023-34239","to":"CVE-2024-1728","relation":"related","confidence":"medium","kind":"lineage","evidence":[{"kind":"same-code","provenance":"machine","files":["gradio/blocks.py"],"commits":["https://github.com/gradio-app/gradio/commit/37967617bd97615fb6f3b44e7750c0e0be58479a","https://github.com/gradio-app/gradio/commit/cd64130d54e678525774bbb200ef9c7166fa1543","https://github.com/gradio-app/gradio/commit/16fbe9cd0cffa9f2a824a0165beb43446114eec7"],"basis":"shared function","functions":["__init__"]}]}],"children":[{"from":"CVE-2024-1728","to":"CVE-2024-4941","relation":"related","confidence":"medium","kind":"lineage","evidence":[{"kind":"same-code","provenance":"machine","files":["gradio/processing_utils.py"],"commits":["https://github.com/gradio-app/gradio/commit/16fbe9cd0cffa9f2a824a0165beb43446114eec7","https://github.com/gradio-app/gradio/commit/ee1e2942e0a1ae84a08a05464e41c8108a03fa9c"],"basis":"shared function","functions":["_move_to_cache"]}]}],"packageHistory":[{"cve":"CVE-2023-6572","published":"2023-12-14","fixed":"4.14.0","kev":false},{"cve":"CVE-2024-2206","published":"2024-03-27","fixed":"4.18.0","kev":false},{"cve":"CVE-2024-1727","published":"2024-03-21","fixed":"4.19.2","kev":false},{"cve":"CVE-2024-1728","published":"2024-04-10","fixed":"4.19.2","kev":false},{"cve":"CVE-2024-1729","published":"2024-03-29","fixed":"4.19.2","kev":false},{"cve":"CVE-2024-34510","published":"2024-05-05","fixed":"4.20.0","kev":false,"link":{"from":"CVE-2024-1728","to":"CVE-2024-34510","relation":"successor","confidence":"low","kind":"sequence","evidence":[{"kind":"version-step","provenance":"source","package":"PyPI:gradio","fromFixed":"4.19.2","toFixed":"4.20.0","daysApart":25}]}},{"cve":"CVE-2024-4253","published":"2024-06-04","fixed":"4.29.0","kev":false}],"package":"PyPI:gradio"}}