{"answers":{"affected":"3 open source packages ship an affected version, including pyrofork.","exploited":"There is no known exploitation of CVE-2025-67720 in the wild and no public exploit code.","fix":"Upgrade pyrofork to 2.3.69 or later.","what":"CVE-2025-67720 is a medium-severity path traversal vulnerability in Mayuri-Chan pyrofork, published on 11 Dec 2025. An attacker can exploit it over the internet without logging in, and only if a user opens a file or follows a link."},"fix_prompt":"Check this codebase for CVE-2025-67720 and fix it if it is affected.\n\nWhat it is: CVE-2025-67720 is a medium-severity path traversal vulnerability in Mayuri-Chan pyrofork, published on 11 Dec 2025. An attacker can exploit it over the internet without logging in, and only if a user opens a file or follows a link.\nExploitation: There is no known exploitation of CVE-2025-67720 in the wild and no public exploit code.\n\nAffected packages and fixed versions:\n- pyrofork (PyPI): affected all versions; fixed in 2.3.69\n- pyrofork (PyPI): affected all versions; fixed in 2.3.69\n- pyrofork (PyPI): affected all versions; fixed in 2.3.69\n\nTask:\n1. Search the dependency manifests and lockfiles (for example package.json, package-lock.json, requirements.txt, poetry.lock, uv.lock, pom.xml, build.gradle, go.mod, Cargo.lock, Gemfile.lock) and any Dockerfiles for the affected packages, including transitive dependencies.\n2. If an affected version is in use, upgrade it to the fixed version for its release line with the project's package manager, so the lockfile is regenerated. Prefer the smallest upgrade that fixes it.\n3. If there is no fix, or the upgrade would break the build, do not guess: explain the risk and the safest workaround instead.\n4. Run the tests and summarise what changed and why.\n5. If nothing in the project is affected, say so and change nothing.\n\nReference: https://insights.sbomify.com/CVE-2025-67720/ (Markdown: https://insights.sbomify.com/CVE-2025-67720/index.md)","id":"CVE-2025-67720","markdown":"https://insights.sbomify.com/CVE-2025-67720/index.md","name":"CVE-2025-67720","record":{"aliases":["GHSA-6h2f-wjhf-4wjx","PYSEC-2026-1841"],"analysis":{"component_type":"library","fix_type":"upgrade","impacts":["data_read","data_modify"],"network_reachable":"yes","non_default_config":false,"product_category":"Python MTProto library","requires_auth":"none","summary":"Attackers can exploit unsanitized filenames in Pyrofork's download_media method to write or read arbitrary files on the host system.","user_interaction":"required","vuln_class":"path_traversal"},"analysis_generated_by":"qwen3.8-flash-next","assigner":"GitHub_M","cpe":[],"cvss":{"score":6.5,"severity":"medium","source":"cna","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:N","version":"3.1"},"cwes":[{"id":"CWE-22","name":"Improper Limitation of a Pathname to a Restricted Directory"}],"description":"Pyrofork is a modern, asynchronous MTProto API framework. Versions 2.3.68 and earlier do not properly sanitize filenames received from Telegram messages in the download_media method before using them in file path construction. When downloading media, if the user does not specify a custom filename (which is the common/default usage), the method falls back to using the file_name attribute from the media object. The attribute originates from Telegram's DocumentAttributeFilename and is controlled by the message sender. This issue is fixed in version 2.3.69.","ecosystems":["PyPI"],"exploits":{"exploitdb":0,"first_seen":null,"github_poc":0,"max_poc_stars":null,"metasploit":0,"nuclei":0,"refs":[],"tier":"none_known"},"has_fix":true,"headline":"Pyrofork has a Path Traversal in download_media Method","id":"CVE-2025-67720","indexable":true,"kev":null,"kind":"cve","links":{"ecosystem":"PyPI","product":null,"products":[],"type":"path_traversal","year":"2025"},"n_packages":3,"n_references":2,"next":{"headline":"Aircompressor's Snappy and LZ4 Java-based decompressor implementation can leak information from reused output buffer","id":"CVE-2025-67721"},"packages":[{"ecosystem":"PyPI","fixed":["2.3.69"],"introduced":["0"],"last_affected":[],"package":"pyrofork","purl":null,"source":"GHSA-6h2f-wjhf-4wjx"},{"ecosystem":"PyPI","fixed":["2.3.69"],"introduced":["0"],"last_affected":[],"package":"pyrofork","purl":"pkg:pypi/pyrofork","source":"GHSA-6h2f-wjhf-4wjx"},{"ecosystem":"PyPI","fixed":["2.3.69"],"introduced":["0"],"last_affected":[],"package":"pyrofork","purl":"pkg:pypi/pyrofork","source":"PYSEC-2026-1841"}],"prev":{"headline":"Ibexa User Bundle is missing password change validation","id":"CVE-2025-67719"},"products":["pyrofork"],"published":"2025-12-11","related":[],"sources":[{"class":"attribution","licence":"CVE Terms of Use (MITRE)","name":"CVE List","prefix":"CVE"},{"class":"attribution","licence":"CC BY 4.0","name":"GitHub Advisory Database","prefix":"GHSA"},{"class":"attribution","licence":"CC BY 4.0","name":"PyPA Advisory Database","prefix":"PYSEC"},{"class":"attribution","licence":"CWE Terms of Use","name":"CWE (MITRE)"},{"class":"attribution","licence":"FIRST CVSS licence","name":"CVSS (FIRST)"}],"ssvc":{"automatable":"no","exploitation":"none","technical_impact":"partial"},"state":"PUBLISHED","updated":"2025-12-11","vendors":["Mayuri-Chan"]},"summary":"Attackers can exploit unsanitized filenames in Pyrofork's download_media method to write or read arbitrary files on the host system.","url":"https://insights.sbomify.com/CVE-2025-67720/"}