Lookup for vulnerable packages by Package URL.

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

{
    "url": "http://public2.vulnerablecode.io/api/packages/999680?format=api",
    "purl": "pkg:npm/svgo@3.0.2",
    "type": "npm",
    "namespace": "",
    "name": "svgo",
    "version": "3.0.2",
    "qualifiers": {},
    "subpath": "",
    "is_vulnerable": true,
    "next_non_vulnerable_version": "3.3.3",
    "latest_non_vulnerable_version": "4.0.1",
    "affected_by_vulnerabilities": [
        {
            "url": "http://public2.vulnerablecode.io/api/vulnerabilities/25047?format=api",
            "vulnerability_id": "VCID-d6bq-bvvm-33f4",
            "summary": "SVGO DoS through entity expansion in DOCTYPE (Billion Laughs)\n### Summary\n\nSVGO accepts XML with custom entities, without guards against entity expansion or recursion. This can result in a small XML file (811 bytes) stalling the application and even crashing the Node.js process with `JavaScript heap out of memory`.\n\n### Details\n\nThe upstream XML parser ([sax](https://www.npmjs.com/package/sax)) doesn't interpret custom XML entities by default. We pattern matched custom XML entities from the `DOCTYPE`, inserting them into `parser.ENTITIES`, and enabled `unparsedEntities`. This gives us the desired behavior of supporting SVGs with entities declared in the `DOCTYPE`.\n\nHowever, entities can reference other entities, which can enable small SVGs to explode exponentially when we try to parse them.\n\n#### Proof of Concept\n\n```js\nimport { optimize } from 'svgo';\n\n/** Presume that this string was obtained in some other way, such as network. */\nconst original = `\n  <?xml version=\"1.0\"?>\n  <!DOCTYPE lolz [\n  <!ENTITY lol \"lol\">\n  <!ELEMENT lolz (#PCDATA)>\n  <!ENTITY lol1 \"&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;\">\n  <!ENTITY lol2 \"&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;\">\n  <!ENTITY lol3 \"&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;\">\n  <!ENTITY lol4 \"&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;\">\n  <!ENTITY lol5 \"&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;\">\n  <!ENTITY lol6 \"&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;\">\n  <!ENTITY lol7 \"&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;\">\n  <!ENTITY lol8 \"&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;\">\n  <!ENTITY lol9 \"&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;\">\n  ]>\n  <lolz>&lol9;</lolz>\n`;\n\noptimize(original);\n```\n\n### Impact\n\nIf SVGO is run on untrusted input (i.e., user uploaded to server-side application), then the untrusted SVG can effectively stall or crash the application with an SVG < 1 KB in size.\n\nIt's unlikely to impact users who just use SVGO locally on their own SVGs or in build pipelines.\n\n### Patches\n\nSVGO has patched v4.0.1, v3.3.3, and v2.8.1! However, it's strongly recommended to upgrade to v4 regardless, as previous versions are not officially supported anymore.\n\n### Workarounds\n\n#### == 4.0.0\n\nFor v4, users do not specifically have to upgrade SVGO, though it is recommended to do so. A package manager can be used to upgrade sax recursively:\n\nFor example:\n\n```sh\nyarn up -R sax\n```\n\nNew options were introduced upstream which makes the way SVGO parses SVGs safe by default.\n\n#### >= 2.1.0, <= 3.3.2\n\nUsers of v3 and v2 will have to take manual action. If users can't upgrade, they may be able to work around this as long as the project doesn't require support for custom XML entities, though it's not a simple flag.\n\nParse the DOCTYPE directly and check for the presence of custom entities. If entities are present, throw/escape before passing them to SVGO.\n\n```diff\n+ import SAX from 'sax';\n  import { optimize } from 'svgo';\n\n- const original =`\n+ let original = `\n    <?xml version=\"1.0\"?>\n    <!DOCTYPE lolz [\n    <!ENTITY lol \"lol\">\n    <!ELEMENT lolz (#PCDATA)>\n    <!ENTITY lol1 \"&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;\">\n    <!ENTITY lol2 \"&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;\">\n    <!ENTITY lol3 \"&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;\">\n    <!ENTITY lol4 \"&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;\">\n    <!ENTITY lol5 \"&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;\">\n    <!ENTITY lol6 \"&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;\">\n    <!ENTITY lol7 \"&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;\">\n    <!ENTITY lol8 \"&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;\">\n    <!ENTITY lol9 \"&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;\">\n    ]>\n    <lolz>&lol9;</lolz>\n  `;\n\n+ const parser = SAX.parser();\n+ /** @param {string} doctype */\n+ parser.ondoctype = (doctype) => {\n+   original = original.replace(doctype, '');\n+ }\n+ parser.write(original);\n\n  optimize(original);\n```\n\n### Resources\n\n* [Wikipedia: Billion laughs attack](https://en.wikipedia.org/wiki/Billion_laughs_attack)",
            "references": [
                {
                    "reference_url": "https://access.redhat.com/hydra/rest/securitydata/cve/CVE-2026-29074.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-2026-29074.json"
                },
                {
                    "reference_url": "https://api.first.org/data/v1/epss?cve=CVE-2026-29074",
                    "reference_id": "",
                    "reference_type": "",
                    "scores": [
                        {
                            "value": "0.00055",
                            "scoring_system": "epss",
                            "scoring_elements": "0.17448",
                            "published_at": "2026-04-02T12:55:00Z"
                        },
                        {
                            "value": "0.00055",
                            "scoring_system": "epss",
                            "scoring_elements": "0.17495",
                            "published_at": "2026-04-04T12:55:00Z"
                        },
                        {
                            "value": "0.0006",
                            "scoring_system": "epss",
                            "scoring_elements": "0.1888",
                            "published_at": "2026-04-12T12:55:00Z"
                        },
                        {
                            "value": "0.0006",
                            "scoring_system": "epss",
                            "scoring_elements": "0.18927",
                            "published_at": "2026-04-11T12:55:00Z"
                        },
                        {
                            "value": "0.0006",
                            "scoring_system": "epss",
                            "scoring_elements": "0.18921",
                            "published_at": "2026-04-09T12:55:00Z"
                        },
                        {
                            "value": "0.0006",
                            "scoring_system": "epss",
                            "scoring_elements": "0.18779",
                            "published_at": "2026-04-16T12:55:00Z"
                        },
                        {
                            "value": "0.0006",
                            "scoring_system": "epss",
                            "scoring_elements": "0.18869",
                            "published_at": "2026-04-08T12:55:00Z"
                        },
                        {
                            "value": "0.0006",
                            "scoring_system": "epss",
                            "scoring_elements": "0.18789",
                            "published_at": "2026-04-07T12:55:00Z"
                        },
                        {
                            "value": "0.0006",
                            "scoring_system": "epss",
                            "scoring_elements": "0.18828",
                            "published_at": "2026-04-13T12:55:00Z"
                        },
                        {
                            "value": "0.00082",
                            "scoring_system": "epss",
                            "scoring_elements": "0.23755",
                            "published_at": "2026-05-07T12:55:00Z"
                        },
                        {
                            "value": "0.00082",
                            "scoring_system": "epss",
                            "scoring_elements": "0.23987",
                            "published_at": "2026-04-18T12:55:00Z"
                        },
                        {
                            "value": "0.00082",
                            "scoring_system": "epss",
                            "scoring_elements": "0.23968",
                            "published_at": "2026-04-21T12:55:00Z"
                        },
                        {
                            "value": "0.00082",
                            "scoring_system": "epss",
                            "scoring_elements": "0.23845",
                            "published_at": "2026-04-24T12:55:00Z"
                        },
                        {
                            "value": "0.00082",
                            "scoring_system": "epss",
                            "scoring_elements": "0.23833",
                            "published_at": "2026-04-26T12:55:00Z"
                        },
                        {
                            "value": "0.00082",
                            "scoring_system": "epss",
                            "scoring_elements": "0.23792",
                            "published_at": "2026-04-29T12:55:00Z"
                        },
                        {
                            "value": "0.00082",
                            "scoring_system": "epss",
                            "scoring_elements": "0.23671",
                            "published_at": "2026-05-05T12:55:00Z"
                        }
                    ],
                    "url": "https://api.first.org/data/v1/epss?cve=CVE-2026-29074"
                },
                {
                    "reference_url": "https://ftp.suse.com/pub/projects/security/yaml/suse-cvss-scores.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"
                        }
                    ],
                    "url": "https://ftp.suse.com/pub/projects/security/yaml/suse-cvss-scores.yaml"
                },
                {
                    "reference_url": "https://github.com/svg/svgo",
                    "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/svg/svgo"
                },
                {
                    "reference_url": "https://github.com/svg/svgo/security/advisories/GHSA-xpqw-6gx7-v673",
                    "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": "cvssv3.1_qr",
                            "scoring_elements": ""
                        },
                        {
                            "value": "HIGH",
                            "scoring_system": "generic_textual",
                            "scoring_elements": ""
                        },
                        {
                            "value": "Track",
                            "scoring_system": "ssvc",
                            "scoring_elements": "SSVCv2/E:N/A:Y/T:P/P:M/B:A/M:M/D:T/2026-03-06T15:59:57Z/"
                        }
                    ],
                    "url": "https://github.com/svg/svgo/security/advisories/GHSA-xpqw-6gx7-v673"
                },
                {
                    "reference_url": "https://nvd.nist.gov/vuln/detail/CVE-2026-29074",
                    "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-2026-29074"
                },
                {
                    "reference_url": "https://bugzilla.redhat.com/show_bug.cgi?id=2445132",
                    "reference_id": "2445132",
                    "reference_type": "",
                    "scores": [],
                    "url": "https://bugzilla.redhat.com/show_bug.cgi?id=2445132"
                },
                {
                    "reference_url": "https://github.com/advisories/GHSA-xpqw-6gx7-v673",
                    "reference_id": "GHSA-xpqw-6gx7-v673",
                    "reference_type": "",
                    "scores": [
                        {
                            "value": "HIGH",
                            "scoring_system": "cvssv3.1_qr",
                            "scoring_elements": ""
                        }
                    ],
                    "url": "https://github.com/advisories/GHSA-xpqw-6gx7-v673"
                },
                {
                    "reference_url": "https://access.redhat.com/errata/RHSA-2026:11856",
                    "reference_id": "RHSA-2026:11856",
                    "reference_type": "",
                    "scores": [],
                    "url": "https://access.redhat.com/errata/RHSA-2026:11856"
                },
                {
                    "reference_url": "https://access.redhat.com/errata/RHSA-2026:11916",
                    "reference_id": "RHSA-2026:11916",
                    "reference_type": "",
                    "scores": [],
                    "url": "https://access.redhat.com/errata/RHSA-2026:11916"
                },
                {
                    "reference_url": "https://access.redhat.com/errata/RHSA-2026:13512",
                    "reference_id": "RHSA-2026:13512",
                    "reference_type": "",
                    "scores": [],
                    "url": "https://access.redhat.com/errata/RHSA-2026:13512"
                },
                {
                    "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:13553",
                    "reference_id": "RHSA-2026:13553",
                    "reference_type": "",
                    "scores": [],
                    "url": "https://access.redhat.com/errata/RHSA-2026:13553"
                },
                {
                    "reference_url": "https://access.redhat.com/errata/RHSA-2026:13826",
                    "reference_id": "RHSA-2026:13826",
                    "reference_type": "",
                    "scores": [],
                    "url": "https://access.redhat.com/errata/RHSA-2026:13826"
                },
                {
                    "reference_url": "https://access.redhat.com/errata/RHSA-2026:5807",
                    "reference_id": "RHSA-2026:5807",
                    "reference_type": "",
                    "scores": [],
                    "url": "https://access.redhat.com/errata/RHSA-2026:5807"
                },
                {
                    "reference_url": "https://access.redhat.com/errata/RHSA-2026:6277",
                    "reference_id": "RHSA-2026:6277",
                    "reference_type": "",
                    "scores": [],
                    "url": "https://access.redhat.com/errata/RHSA-2026:6277"
                },
                {
                    "reference_url": "https://access.redhat.com/errata/RHSA-2026:6309",
                    "reference_id": "RHSA-2026:6309",
                    "reference_type": "",
                    "scores": [],
                    "url": "https://access.redhat.com/errata/RHSA-2026:6309"
                },
                {
                    "reference_url": "https://access.redhat.com/errata/RHSA-2026:6404",
                    "reference_id": "RHSA-2026:6404",
                    "reference_type": "",
                    "scores": [],
                    "url": "https://access.redhat.com/errata/RHSA-2026:6404"
                },
                {
                    "reference_url": "https://access.redhat.com/errata/RHSA-2026:6568",
                    "reference_id": "RHSA-2026:6568",
                    "reference_type": "",
                    "scores": [],
                    "url": "https://access.redhat.com/errata/RHSA-2026:6568"
                },
                {
                    "reference_url": "https://access.redhat.com/errata/RHSA-2026:6926",
                    "reference_id": "RHSA-2026:6926",
                    "reference_type": "",
                    "scores": [],
                    "url": "https://access.redhat.com/errata/RHSA-2026:6926"
                },
                {
                    "reference_url": "https://access.redhat.com/errata/RHSA-2026:7110",
                    "reference_id": "RHSA-2026:7110",
                    "reference_type": "",
                    "scores": [],
                    "url": "https://access.redhat.com/errata/RHSA-2026:7110"
                },
                {
                    "reference_url": "https://access.redhat.com/errata/RHSA-2026:8483",
                    "reference_id": "RHSA-2026:8483",
                    "reference_type": "",
                    "scores": [],
                    "url": "https://access.redhat.com/errata/RHSA-2026:8483"
                },
                {
                    "reference_url": "https://access.redhat.com/errata/RHSA-2026:8484",
                    "reference_id": "RHSA-2026:8484",
                    "reference_type": "",
                    "scores": [],
                    "url": "https://access.redhat.com/errata/RHSA-2026:8484"
                },
                {
                    "reference_url": "https://access.redhat.com/errata/RHSA-2026:8490",
                    "reference_id": "RHSA-2026:8490",
                    "reference_type": "",
                    "scores": [],
                    "url": "https://access.redhat.com/errata/RHSA-2026:8490"
                },
                {
                    "reference_url": "https://access.redhat.com/errata/RHSA-2026:8491",
                    "reference_id": "RHSA-2026:8491",
                    "reference_type": "",
                    "scores": [],
                    "url": "https://access.redhat.com/errata/RHSA-2026:8491"
                },
                {
                    "reference_url": "https://access.redhat.com/errata/RHSA-2026:8493",
                    "reference_id": "RHSA-2026:8493",
                    "reference_type": "",
                    "scores": [],
                    "url": "https://access.redhat.com/errata/RHSA-2026:8493"
                },
                {
                    "reference_url": "https://access.redhat.com/errata/RHSA-2026:9742",
                    "reference_id": "RHSA-2026:9742",
                    "reference_type": "",
                    "scores": [],
                    "url": "https://access.redhat.com/errata/RHSA-2026:9742"
                }
            ],
            "fixed_packages": [
                {
                    "url": "http://public2.vulnerablecode.io/api/packages/68204?format=api",
                    "purl": "pkg:npm/svgo@3.3.3",
                    "is_vulnerable": false,
                    "affected_by_vulnerabilities": [],
                    "resource_url": "http://public2.vulnerablecode.io/packages/pkg:npm/svgo@3.3.3"
                },
                {
                    "url": "http://public2.vulnerablecode.io/api/packages/999689?format=api",
                    "purl": "pkg:npm/svgo@4.0.0-rc.0",
                    "is_vulnerable": false,
                    "affected_by_vulnerabilities": [],
                    "resource_url": "http://public2.vulnerablecode.io/packages/pkg:npm/svgo@4.0.0-rc.0"
                },
                {
                    "url": "http://public2.vulnerablecode.io/api/packages/68206?format=api",
                    "purl": "pkg:npm/svgo@4.0.1",
                    "is_vulnerable": false,
                    "affected_by_vulnerabilities": [],
                    "resource_url": "http://public2.vulnerablecode.io/packages/pkg:npm/svgo@4.0.1"
                }
            ],
            "aliases": [
                "CVE-2026-29074",
                "GHSA-xpqw-6gx7-v673"
            ],
            "risk_score": 4.0,
            "exploitability": "0.5",
            "weighted_severity": "8.0",
            "resource_url": "http://public2.vulnerablecode.io/vulnerabilities/VCID-d6bq-bvvm-33f4"
        }
    ],
    "fixing_vulnerabilities": [],
    "risk_score": "4.0",
    "resource_url": "http://public2.vulnerablecode.io/packages/pkg:npm/svgo@3.0.2"
}