{"id":"CVE-2021-39286","aliases":["EUVD-2021-0213","GHSA-947x-pv47-pp3q","PYSEC-2021-120"],"status":"published","title":"Cross-site scripting in pywb","description":"Webrecorder pywb before 2.6.0 allows XSS because it does not ensure that Jinja2 templates are autoescaped.","severity":{"version":"3.1","score":6.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N","level":"medium","assessor":"primary","from":"nvd"},"epss":{"day":"2026-11-09","score":0.00699,"percentile":0.53427,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-79"],"published":"2021-08-18T17:31:34Z","modified":"2026-10-20T10:53:54Z","fixes":[{"ecosystem":"PyPI","package":"pywb","fixed_in":["2.6.0"],"sources":["ghsa","osv"]}],"affected":[{"source":"ghsa","ecosystem":"PyPI","package":"pywb","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.6.0"}]}]},{"source":"osv","ecosystem":"PyPI","package":"pywb","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.6.0"}]}],"versions":["0.10.0","0.10.1","0.10.10","0.10.2","0.10.5","0.10.6","0.10.7","0.10.8","0.10.9","0.10.9.1","0.11.0","0.11.1","0.11.2","0.11.3","0.11.4","0.11.5","0.2.0","0.2.2","0.3.0","0.30.0","0.30.1","0.31.0","0.32.0","0.32.1","0.33.0","0.33.1","0.33.2","0.4.0","0.4.5","0.4.7","0.5.0","0.5.1","0.5.3","0.5.4","0.6.0","0.6.2","0.6.3","0.6.4","0.6.5","0.6.6","0.7.0","0.7.1","0.7.2","0.7.5","0.7.6","0.7.7","0.7.8","0.8.0","0.8.1","0.8.2","0.8.3","0.9.0","0.9.0b1","0.9.1","0.9.2","0.9.3","0.9.5","0.9.6","0.9.7","0.9.8","2.0.0","2.0.1","2.0.2","2.0.3","2.0.4","2.1.0","2.2.20190227","2.2.20190311","2.3.0","2.3.1","2.3.2","2.3.3","2.3.4","2.3.5","2.4.0","2.4.1","2.4.2","2.5.0","2.6.0b0","2.6.0b1","2.6.0b2","2.6.0b3","2.6.0b4"]},{"source":"osv","ecosystem":"PyPI","package":"pywb","ranges":[{"type":"GIT","events":[{"introduced":"0"},{"fixed":"f7bd84cdacdd665ff73ae8d09a202f60be2ebae9"}]},{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.6.0"}]}],"versions":["0.10.0","0.10.1","0.10.10","0.10.2","0.10.5","0.10.6","0.10.7","0.10.8","0.10.9","0.10.9.1","0.11.0","0.11.1","0.11.2","0.11.3","0.11.4","0.11.5","0.2.0","0.2.2","0.3.0","0.30.0","0.30.1","0.31.0","0.32.0","0.32.1","0.33.0","0.33.1","0.33.2","0.4.0","0.4.5","0.4.7","0.5.0","0.5.1","0.5.3","0.5.4","0.6.0","0.6.2","0.6.3","0.6.4","0.6.5","0.6.6","0.7.0","0.7.1","0.7.2","0.7.5","0.7.6","0.7.7","0.7.8","0.8.0","0.8.1","0.8.2","0.8.3","0.9.0","0.9.0b1","0.9.1","0.9.2","0.9.3","0.9.5","0.9.6","0.9.7","0.9.8","2.0.0","2.0.1","2.0.2","2.0.3","2.0.4","2.1.0","2.2.20190227","2.2.20190311","2.3.0","2.3.1","2.3.2","2.3.3","2.3.4","2.3.5","2.4.0","2.4.1","2.4.2","2.5.0","2.6.0b0","2.6.0b1","2.6.0b2","2.6.0b3","2.6.0b4"]}],"products":[{"vendor":"webrecorder","product":"pywb"}],"references":[{"url":"https://github.com/webrecorder/pywb/commit/f7bd84cdacdd665ff73ae8d09a202f60be2ebae9","tags":["x_refsource_MISC","x_transferred","Patch","Third Party Advisory","fix","web"]},{"url":"https://github.com/webrecorder/pywb/compare/v-2.5.0...v-2.6.0","tags":["x_refsource_MISC","x_transferred","Release Notes","Third Party Advisory","advisory","web"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2021-39286","tags":["advisory"]},{"url":"https://github.com/advisories/GHSA-947x-pv47-pp3q","tags":["advisory"]},{"url":"https://github.com/pypa/advisory-database/tree/main/vulns/pywb/PYSEC-2021-120.yaml","tags":["web"]},{"url":"https://github.com/webrecorder/pywb","tags":["package"]}],"sources":{"cve":[{"id":"CVE-2021-39286","description":"Webrecorder pywb before 2.6.0 allows XSS because it does not ensure that Jinja2 templates are autoescaped.","status":"published","published":"2021-08-18T17:31:34Z","modified":"2024-08-04T02:06:41.495Z","updated_at":"2026-11-02T14:33:09.175141Z"}],"euvd":[{"id":"EUVD-2021-0213","description":"Webrecorder pywb before 2.6.0 allows XSS because it does not ensure that Jinja2 templates are autoescaped.","status":"published","published":"2021-08-18T17:31:34Z","modified":"2024-08-04T02:06:41Z","updated_at":"2026-11-03T03:24:23.719378Z"}],"ghsa":[{"id":"GHSA-947x-pv47-pp3q","title":"Cross-site scripting in pywb","description":"Webrecorder pywb before 2.6.0 allows XSS because it does not ensure that Jinja2 templates are autoescaped.","status":"published","published":"2021-09-02T17:16:18Z","modified":"2024-10-25T20:52:19Z","cvss":[{"version":"4.0","score":5.3,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N","level":"medium"},{"version":"3.1","score":6.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N","level":"medium"}],"cwes":["CWE-79"],"updated_at":"2026-11-02T14:38:13.09489Z"}],"nvd":[{"id":"CVE-2021-39286","description":"Webrecorder pywb before 2.6.0 allows XSS because it does not ensure that Jinja2 templates are autoescaped.","status":"published","published":"2021-08-18T18:15:08.177Z","modified":"2026-06-17T04:03:28.253Z","cvss":[{"version":"3.1","score":6.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N","level":"medium","assessor":"primary"},{"version":"2.0","score":4.3,"vector":"AV:N/AC:M/Au:N/C:N/I:P/A:N","level":"medium","assessor":"primary"}],"cwes":["CWE-79"],"updated_at":"2026-11-02T14:06:57.318236Z"}],"osv":[{"id":"CVE-2021-39286","description":"Webrecorder pywb before 2.6.0 allows XSS because it does not ensure that Jinja2 templates are autoescaped.","status":"published","published":"2021-08-18T18:15:08.177Z","modified":"2026-10-20T10:53:54.000312324Z","cvss":[{"version":"3.1","score":6.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N","level":"medium"}],"updated_at":"2026-11-02T15:44:20.843843Z"},{"id":"GHSA-947x-pv47-pp3q","title":"Cross-site scripting in pywb","description":"Webrecorder pywb before 2.6.0 allows XSS because it does not ensure that Jinja2 templates are autoescaped.","status":"published","published":"2021-09-02T17:16:18Z","modified":"2024-10-25T21:03:32.751263Z","cvss":[{"version":"3.1","score":6.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N","level":"medium"},{"version":"4.0","score":5.3,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N","level":"medium"}],"cwes":["CWE-79"],"updated_at":"2026-11-02T15:46:43.123867Z"},{"id":"PYSEC-2021-120","description":"Webrecorder pywb before 2.6.0 allows XSS because it does not ensure that Jinja2 templates are autoescaped.","status":"published","published":"2021-08-18T18:15:00Z","modified":"2023-11-08T04:06:35.401095Z","updated_at":"2026-11-02T15:52:52.682031Z"}]}}
