{"generated_at":"2026-08-07T05:34:09.010Z","count":20,"catches":[{"id":"twenty-crm-sqli-rce-cve-2026-46624","cve":"CVE-2026-46624","title":"SQL Injection leading to OS Command Execution via timeZone","project":"twentyhq/twenty","cvss":9.1,"severity":"critical","bug_class":"sql-injection","disclosed_at":"2026-05-26","case_study_url":"https://pulllight.io/case-studies/twenty-crm-sqli-rce-cve-2026-46624","summary":"twentyhq/twenty interpolates timeZone directly into a raw SQL template literal — any authenticated user can execute arbitrary SQL, chaining to OS command execution via PostgreSQL COPY TO PROGRAM."},{"id":"nextjs-websocket-ssrf-cve-2026-44578","cve":"CVE-2026-44578","title":"WebSocket Upgrade Handler SSRF","project":"next","cvss":8.6,"severity":"high","bug_class":"ssrf","disclosed_at":"2026-05-13","case_study_url":"https://pulllight.io/case-studies/nextjs-websocket-ssrf-cve-2026-44578","summary":"Next.js WebSocket upgrade path forwards the Host header to an internal service without validation — attacker can redirect the upgrade to any internal host."},{"id":"vm2-sandbox-prototype-pollution","cve":"CVE-2026-44005","title":"Prototype Pollution / Sandbox Escape in vm2","project":"vm2","cvss":10,"severity":"critical","bug_class":"deserialization","disclosed_at":"2026-05-01","case_study_url":"https://pulllight.io/case-studies/vm2-sandbox-prototype-pollution","summary":"vm2's object-bridge between guest and host pollutes Object.prototype via __proto__ in certain assignment patterns — attacker escapes the sandbox and gains access to the host Node.js process."},{"id":"avideo-sqli-cve-2026-33352","cve":"CVE-2026-33352","title":"SQL Injection via Backslash-Escape Bypass in AVideo","project":"WWBN/AVideo","cvss":9.8,"severity":"critical","bug_class":"sql-injection","disclosed_at":"2026-03-23","case_study_url":"https://pulllight.io/case-studies/avideo-sqli-cve-2026-33352","summary":"WWBN/AVideo uses str_replace(\"'\", \"'\") to sanitize SQL input, but this only escapes single quotes, not backslashes. An attacker injects a backslash to break the string context and execute arbitrary SQL."},{"id":"cve-2026-22731-spring-boot-actuator-bypass","cve":"CVE-2026-22731","title":"Authentication Bypass under Actuator Health Groups Paths","project":"spring-boot","cvss":8.2,"severity":"high","bug_class":"authentication-bypass","disclosed_at":"2026-03-19","case_study_url":"https://pulllight.io/case-studies/cve-2026-22731-spring-boot-actuator-bypass","summary":"Spring Boot maps custom health groups to additional server paths but actuator path mapping can bypass authentication on subpaths — allowing admin access without credentials."},{"id":"casl-ability-prototype-pollution-cve-2026-1774","cve":"CVE-2026-1774","title":"Prototype Pollution → Authorization Bypass in CASL","project":"@casl/ability","cvss":9.8,"severity":"critical","bug_class":"authentication-bypass","disclosed_at":"2026-02-10","case_study_url":"https://pulllight.io/case-studies/casl-ability-prototype-pollution-cve-2026-1774","summary":"@casl/ability's rule-building path merges attacker-controlled condition objects without sanitizing prototype keys — pollutes Object.prototype, causing all subsequent ability checks to return true."},{"id":"golang-jwt-claims-parsing-file-read-cve-2025-20868","cve":"CVE-2025-20868","title":"Arbitrary File Read via pct-decoding in JWT Claims Parsing","project":"golang-jwt/jwt","cvss":9.1,"severity":"critical","bug_class":"os-command-injection","disclosed_at":"2026-01-20","case_study_url":"https://pulllight.io/case-studies/golang-jwt-claims-parsing-file-read-cve-2025-20868","summary":"golang-jwt/jwt v3.3.0 and earlier parses the JWT `aud` claim using Go's net/url.Parse(), which interprets percent-encoded characters before path normalization. An attacker supplies `aud=%2f%2f..%2f..%2f%2fetc%2fpasswd` to read arbitrary server-side files."},{"id":"cve-2025-11953-react-native-cli-command-injection","cve":"CVE-2025-11953","title":"OS Command Injection via CLI Package Installation","project":"@react-native-community/cli","cvss":9.8,"severity":"critical","bug_class":"os-command-injection","disclosed_at":"2025-11-14","case_study_url":"https://pulllight.io/case-studies/cve-2025-11953-react-native-cli-command-injection","summary":"The React Native CLI package installer interpolates user-supplied package names into a shell command without validation, enabling arbitrary OS command execution during package installation."},{"id":"cve-2025-55182-react2shell","cve":"CVE-2025-55182","title":"RCE via Unvalidated RSC Deserialization","project":"react2shell","cvss":10,"severity":"critical","bug_class":"deserialization","disclosed_at":"2025-11-01","case_study_url":"https://pulllight.io/case-studies/cve-2025-55182-react2shell","summary":"Attacker-controlled React Server Component payload reaches eval()-like deserializer with no validation — full RCE on any server running react2shell."},{"id":"helmetjs-content-security-policy-parser-prototype-pollution-cve-2025-55164","cve":"CVE-2025-55164","title":"Prototype Pollution in helmetjs/content-security-policy-parser","project":"@helmetjs/content-security-policy-parser","cvss":8.8,"severity":"high","bug_class":"prototype-pollution","disclosed_at":"2025-10-28","case_study_url":"https://pulllight.io/case-studies/helmetjs-content-security-policy-parser-prototype-pollution-cve-2025-55164","summary":"@helmetjs/content-security-policy-parser recursively merges attacker-controlled CSP directive values into an object without sanitizing __proto__ keys — prototype pollution enables CSP bypass and potential XSS."},{"id":"jspdf-path-traversal","cve":"CVE-2025-68428","title":"Path Traversal via Unsanitized File Write","project":"jspdf","cvss":9.2,"severity":"critical","bug_class":"path-traversal","disclosed_at":"2025-09-15","case_study_url":"https://pulllight.io/case-studies/jspdf-path-traversal","summary":"jsPDF's file output helper concatenates user-supplied filenames directly into a filesystem path — allows arbitrary file write outside the intended directory."},{"id":"roundcube-rce-cve-2025-49113","cve":"CVE-2025-49113","title":"PHP Object Deserialization via _from Parameter","project":"roundcubemail","cvss":9.9,"severity":"critical","bug_class":"deserialization","disclosed_at":"2025-06-10","case_study_url":"https://pulllight.io/case-studies/roundcube-rce-cve-2025-49113","summary":"Roundcube's mail composition endpoint passes the _from POST parameter to PHP's unserialize() — attacker crafts a POP chain via installed PHP classes to achieve RCE with webserver privileges."},{"id":"winston-auth-rce","cve":"CVE-2025-31488","title":"RCE via eval() on Unsanitized Auth Metadata","project":"winston-auth","cvss":9.8,"severity":"critical","bug_class":"remote-code-execution","disclosed_at":"2025-04-14","case_study_url":"https://pulllight.io/case-studies/winston-auth-rce","summary":"winston-auth's log formatter calls eval() on a metadata field that can be shaped by auth context — attacker injects JS payload via a crafted authentication header."},{"id":"nextjs-middleware-bypass","cve":"CVE-2025-29927","title":"Auth Bypass via Middleware Logic Gap","project":"next","cvss":9.1,"severity":"critical","bug_class":"authentication-bypass","disclosed_at":"2025-03-22","case_study_url":"https://pulllight.io/case-studies/nextjs-middleware-bypass","summary":"Next.js middleware checks authentication on most paths but a logic branch for static asset prefixes skips the check — authenticated pages reachable without a session."},{"id":"tomcat-partial-put-rce-cve-2025-24813","cve":"CVE-2025-24813","title":"RCE via Partial PUT Path Equivalence in Tomcat","project":"tomcat","cvss":9.8,"severity":"critical","bug_class":"deserialization","disclosed_at":"2025-03-10","case_study_url":"https://pulllight.io/case-studies/tomcat-partial-put-rce-cve-2025-24813","summary":"Apache Tomcat's DefaultServlet stores partial PUT uploads to a temp file whose path is derived from the request URI — attacker uploads a malicious serialized Java object to a predictable temp path, then triggers deserialization."},{"id":"waitress-http-pipelining-race-condition","cve":"CVE-2024-49768","title":"TOCTOU Race in HTTP Pipelining","project":"waitress","cvss":9.1,"severity":"critical","bug_class":"race-condition","disclosed_at":"2024-11-12","case_study_url":"https://pulllight.io/case-studies/waitress-http-pipelining-race-condition","summary":"Waitress's pipelined request handler checks connection state before processing but re-reads it after — a race window lets an attacker smuggle a second request as the authenticated identity of the first."},{"id":"jsonpath-plus-vm-sandbox-escape","cve":"CVE-2024-21534","title":"Sandbox Escape via unsafe vm.compile","project":"jsonpath-plus","cvss":9,"severity":"critical","bug_class":"remote-code-execution","disclosed_at":"2024-10-08","case_study_url":"https://pulllight.io/case-studies/jsonpath-plus-vm-sandbox-escape","summary":"jsonpath-plus passes attacker-controlled expressions to Node.js's vm module via a code path that bypasses the safe-eval flag — full sandbox escape to host process."},{"id":"axios-ssrf-cve-2024-39338","cve":"CVE-2024-39338","title":"axios SSRF via NO_PROXY Environment Variable Bypass","project":"axios","cvss":8.7,"severity":"high","bug_class":"ssrf","disclosed_at":"2024-08-01","case_study_url":"https://pulllight.io/case-studies/axios-ssrf-cve-2024-39338","summary":"axios < 1.7.4 does not correctly honor the NO_PROXY environment variable, allowing internal network access via crafted hostnames that should be excluded by NO_PROXY."},{"id":"ip-package-ssrf","cve":"CVE-2024-29415","title":"SSRF via IPv4/IPv6 Canonicalization Bypass","project":"ip","cvss":8.1,"severity":"high","bug_class":"ssrf","disclosed_at":"2024-04-17","case_study_url":"https://pulllight.io/case-studies/ip-package-ssrf","summary":"The ip package's isPrivate() check normalizes IPv4-mapped IPv6 addresses incorrectly — attackers pass addresses that appear public but resolve to RFC-1918 space, bypassing SSRF guards."},{"id":"jenkins-cli-argument-injection-cve-2024-23897","cve":"CVE-2024-23897","title":"CLI Argument Injection via args4j expandAtFiles()","project":"jenkins","cvss":9.8,"severity":"critical","bug_class":"os-command-injection","disclosed_at":"2024-01-24","case_study_url":"https://pulllight.io/case-studies/jenkins-cli-argument-injection-cve-2024-23897","summary":"Jenkins's CLI parser calls args4j's expandAtFiles() on user-supplied arguments before authentication — attacker reads arbitrary server-side files by injecting @/path/to/file as a CLI arg."}]}