{"id":"CVE-2026-55891","summary":"PrivateBin: Reflected JSON injection in backend responses via unescaped REQUEST_URI","details":"PrivateBin is an online pastebin where the server has zero knowledge of pasted data. Prior to 2.0.5, Request::getRequestUri() in lib/Request.php passes $_SERVER['REQUEST_URI'] through FILTER_SANITIZE_URL, which does not remove quotation marks, angle brackets, or apostrophes, and Controller::_init() stores the attacker-controlled value in Controller::$_urlBase. Controller::_jsonld() in lib/Controller.php then uses str_replace() to insert that value without JSON escaping into js/types.jsonld, js/paste.jsonld, and the other JSON-LD templates used by /?jsonld= and /?pasteid. A raw quotation mark delivered by an HTTP client, proxy, or structured-data crawler that does not normalize the request target can break out of the JSON string and inject arbitrary key-value data into a CORS-open application/ld+json response. The jsonld branch in Controller::__construct() returns before _setCacheHeaders(), so the response also lacks X-Content-Type-Options: nosniff, Content Security Policy, X-Frame-Options, and Referrer-Policy. Direct script execution was not demonstrated, but manipulated responses can affect structured-data consumers or combine with less strict clients. This issue is fixed in version 2.0.5.","aliases":["GHSA-xrjc-c68j-hp7w"],"modified":"2026-08-30T03:47:22.384535581Z","published":"2026-08-28T20:23:50.477Z","database_specific":{"osv_generated_from":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/55xxx/CVE-2026-55891.json","cna_assigner":"GitHub_M","cwe_ids":["CWE-116"]},"references":[{"type":"WEB","url":"https://github.com/PrivateBin/PrivateBin/releases/tag/2.0.5"},{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/55xxx/CVE-2026-55891.json"},{"type":"ADVISORY","url":"https://github.com/PrivateBin/PrivateBin/security/advisories/GHSA-xrjc-c68j-hp7w"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-55891"},{"type":"FIX","url":"https://github.com/PrivateBin/PrivateBin/commit/164c839c39688533ef0086575878e8392cd21249"}],"affected":[{"ranges":[{"type":"GIT","repo":"https://github.com/privatebin/privatebin","events":[{"introduced":"0"},{"fixed":"164c839c39688533ef0086575878e8392cd21249"},{"fixed":"3035d6e5d3cceb7f06f7b7bb80968727879c52b0"}],"database_specific":{"source":["AFFECTED_FIELD","REFERENCES"],"extracted_events":[{"introduced":"0"},{"fixed":"2.0.5"}]}}],"versions":["2.0.4","1.7.8","2.0.3","2.0.2","2.0.1","2.0.0","1.7.7","1.7.6","1.7.5","1.7.3","1.7.2","1.7.1","1.7.0","1.6.2","1.6.1","1.6.0","1.5.2","1.5.1","1.5.0","1.4.0","1.3.5","1.3.4","1.3.3","1.3.2","1.2.1","1.3.1","1.3","1.1","1.0","0.22","0.21.1","0.21","0.20","0.19","0.18"],"database_specific":{"source":"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-55891.json"}}],"schema_version":"1.9.0","severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:N"}]}