{ "document": { "aggregate_severity": { "text": "medium" }, "category": "csaf_security_advisory", "csaf_version": "2.0", "distribution": { "tlp": { "label": "WHITE", "url": "https://www.first.org/tlp/" } }, "lang": "en", "notes": [ { "category": "description", "text": "Punk versions from 0.48 before 0.55 for Perl route Extended CONNECT requests to any GET route without an Origin check in ps_serve_one.\n\nOn HTTP/2 and HTTP/3 a WebSocket handshake arrives as an Extended CONNECT, which is matched as a GET and so reaches every GET route, API operation and mount. The Origin check runs only when a websocket route matches. On this transport the handler's status is the handshake response, and a 2xx accepts it.\n\nA cross-origin page can open a WebSocket to any path and learn from its open or error event whether that path returns 2xx.", "title": "Vulnerability Description" } ], "publisher": { "category": "other", "contact_details": "gdt@cpan.org", "name": "giterlizzi", "namespace": "https://github.com/giterlizzi/" }, "references": [ { "category": "self", "summary": "CPANSA-Punk-2026-104380 JSON", "url": "https://raw.githubusercontent.com/giterlizzi/perl-CPANSA-CSAF/develop/csaf/white/2026/cpansa-punk-2026-104380.json" }, { "category": "external", "summary": "https://metacpan.org/release/LNATION/Punk-0.55/changes", "url": "https://metacpan.org/release/LNATION/Punk-0.55/changes" }, { "category": "external", "summary": "https://metacpan.org/release/LNATION/Punk-0.55/diff/LNATION/Punk-0.54", "url": "https://metacpan.org/release/LNATION/Punk-0.55/diff/LNATION/Punk-0.54" }, { "category": "external", "summary": "http://www.openwall.com/lists/oss-security/2026/10/06/1", "url": "http://www.openwall.com/lists/oss-security/2026/10/06/1" }, { "category": "external", "summary": "CVE-2026-104380 (NVD)", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-104380" } ], "title": "Punk vulnerability", "tracking": { "current_release_date": "2026-10-06T00:00:00", "generator": { "engine": { "name": "CSAF Perl Toolkit", "version": "0.26" } }, "id": "CPANSA-Punk-2026-104380", "initial_release_date": "2026-10-06T00:00:00", "revision_history": [ { "date": "2026-10-06T00:00:00", "number": "1", "summary": "First release" } ], "status": "final", "version": "1" } }, "product_tree": { "branches": [ { "branches": [ { "category": "product_version_range", "name": "vers:cpan/>=0.48|<0.55", "product": { "name": "Punk greater than or equal 0.48 and less than 0.55", "product_id": "CSAFPID-0001", "product_identification_helper": { "purl": "pkg:cpan/Punk" } } }, { "category": "product_version_range", "name": "vers:cpan/>=0.55", "product": { "name": "Punk greater than or equal 0.55", "product_id": "CSAFPID-0002", "product_identification_helper": { "purl": "pkg:cpan/Punk" } } } ], "category": "product_name", "name": "Punk" } ] }, "vulnerabilities": [ { "cve": "CVE-2026-104380", "cwe": { "id": "CWE-1385", "name": "Missing Origin Validation in WebSockets" }, "notes": [ { "category": "description", "text": "Punk versions from 0.48 before 0.55 for Perl route Extended CONNECT requests to any GET route without an Origin check in ps_serve_one.\n\nOn HTTP/2 and HTTP/3 a WebSocket handshake arrives as an Extended CONNECT, which is matched as a GET and so reaches every GET route, API operation and mount. The Origin check runs only when a websocket route matches. On this transport the handler's status is the handshake response, and a 2xx accepts it.\n\nA cross-origin page can open a WebSocket to any path and learn from its open or error event whether that path returns 2xx.", "title": "Vulnerability Description" } ], "product_status": { "fixed": [ "CSAFPID-0002" ], "known_affected": [ "CSAFPID-0001" ] }, "scores": [ { "cvss_v3": { "baseScore": 5.3, "baseSeverity": "MEDIUM", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N", "version": "3.1" }, "products": [ "CSAFPID-0001" ] } ] } ] }