{"id":"CVE-2019-15587","aliases":["DEBIAN-CVE-2019-15587","DSA-4554-1","EUVD-2019-0741","GHSA-c3gv-9cxf-6f57","SUSE-SU-2022:3868-1","SUSE-SU-2022:4075-1","UBUNTU-CVE-2019-15587","USN-4498-1","openSUSE-SU-2024:11337-1","openSUSE-SU-2024:11900-1","openSUSE-SU-2024:13162-1","openSUSE-SU-2024:14171-1","openSUSE-SU-2025:15120-1","openSUSE-SU-2026:10353-1"],"status":"published","title":"Loofah Allows Cross-site Scripting","description":"In the Loofah gem for Ruby through v2.3.0 unsanitized JavaScript may occur in sanitized output when a crafted SVG element is republished.","severity":{"version":"3.1","score":5.4,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N","level":"medium","assessor":"primary","from":"nvd"},"epss":{"day":"2026-11-08","score":0.01561,"percentile":0.7541,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-79"],"published":"2019-10-22T20:07:47Z","modified":"2026-10-20T10:50:44Z","fixes":[{"ecosystem":"RubyGems","package":"loofah","fixed_in":["2.3.1"],"sources":["ghsa","osv"]},{"ecosystem":"Debian:12","package":"ruby-loofah","fixed_in":["2.3.1+dfsg-1"],"sources":["osv"]},{"ecosystem":"Debian:13","package":"ruby-loofah","fixed_in":["2.3.1+dfsg-1"],"sources":["osv"]},{"ecosystem":"Debian:14","package":"ruby-loofah","fixed_in":["2.3.1+dfsg-1"],"sources":["osv"]},{"ecosystem":"Debian:9","package":"ruby-loofah","fixed_in":["2.0.3-2+deb9u3"],"sources":["osv"]},{"ecosystem":"Debian:10","package":"ruby-loofah","fixed_in":["2.2.3-1+deb10u1"],"sources":["osv"]},{"ecosystem":"SUSE:Linux Enterprise High Availability Extension 15","package":"rubygem-loofah","fixed_in":["2.2.2-150000.4.6.1"],"sources":["osv"]},{"ecosystem":"SUSE:Linux Enterprise High Availability Extension 15 SP1","package":"rubygem-loofah","fixed_in":["2.2.2-150000.4.6.1"],"sources":["osv"]},{"ecosystem":"SUSE:Linux Enterprise High Availability Extension 15 SP2","package":"rubygem-loofah","fixed_in":["2.2.2-150000.4.6.1"],"sources":["osv"]},{"ecosystem":"SUSE:Linux Enterprise High Availability Extension 15 SP3","package":"rubygem-loofah","fixed_in":["2.2.2-150000.4.6.1"],"sources":["osv"]},{"ecosystem":"SUSE:Linux Enterprise High Availability Extension 15 SP4","package":"rubygem-loofah","fixed_in":["2.2.2-150000.4.6.1"],"sources":["osv"]},{"ecosystem":"openSUSE:Leap 15.3","package":"rubygem-loofah","fixed_in":["2.2.2-150000.4.6.1"],"sources":["osv"]},{"ecosystem":"openSUSE:Leap 15.4","package":"rubygem-loofah","fixed_in":["2.2.2-150000.4.6.1"],"sources":["osv"]},{"ecosystem":"Ubuntu:16.04:LTS","package":"ruby-loofah","fixed_in":["2.0.3-2+deb9u3build0.16.04.1"],"sources":["osv"]}],"affected":[{"source":"ghsa","ecosystem":"RubyGems","package":"loofah","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.3.1"}]}]},{"source":"osv","ecosystem":"Debian:12","package":"ruby-loofah","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.3.1+dfsg-1"}]}]},{"source":"osv","ecosystem":"Debian:13","package":"ruby-loofah","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.3.1+dfsg-1"}]}]},{"source":"osv","ecosystem":"Debian:14","package":"ruby-loofah","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.3.1+dfsg-1"}]}]},{"source":"osv","ecosystem":"Debian:9","package":"ruby-loofah","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.0.3-2+deb9u3"}]}],"versions":["2.0.3-2","2.0.3-2+deb9u1","2.0.3-2+deb9u2"]},{"source":"osv","ecosystem":"Debian:10","package":"ruby-loofah","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.2.3-1+deb10u1"}]}],"versions":["2.2.3-1"]},{"source":"osv","ecosystem":"RubyGems","package":"loofah","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.3.1"}]}],"versions":["0.2.0","0.2.1","0.2.2","0.3.0","0.3.1","0.4.0","0.4.1","0.4.2","0.4.3","0.4.4","0.4.5","0.4.6","0.4.7","1.0.0","1.0.0.beta.1","1.1.0","1.2.0","1.2.1","2.0.0","2.0.1","2.0.2","2.0.3","2.1.0","2.1.0.rc1","2.1.0.rc2","2.1.1","2.2.0","2.2.1","2.2.2","2.2.3","2.3.0"]},{"source":"osv","ecosystem":"SUSE:Linux Enterprise High Availability Extension 15","package":"rubygem-loofah","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.2.2-150000.4.6.1"}]}]},{"source":"osv","ecosystem":"SUSE:Linux Enterprise High Availability Extension 15 SP1","package":"rubygem-loofah","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.2.2-150000.4.6.1"}]}]},{"source":"osv","ecosystem":"SUSE:Linux Enterprise High Availability Extension 15 SP2","package":"rubygem-loofah","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.2.2-150000.4.6.1"}]}]},{"source":"osv","ecosystem":"SUSE:Linux Enterprise High Availability Extension 15 SP3","package":"rubygem-loofah","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.2.2-150000.4.6.1"}]}]},{"source":"osv","ecosystem":"SUSE:Linux Enterprise High Availability Extension 15 SP4","package":"rubygem-loofah","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.2.2-150000.4.6.1"}]}]},{"source":"osv","ecosystem":"openSUSE:Leap 15.3","package":"rubygem-loofah","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.2.2-150000.4.6.1"}]}]},{"source":"osv","ecosystem":"openSUSE:Leap 15.4","package":"rubygem-loofah","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.2.2-150000.4.6.1"}]}]},{"source":"osv","ecosystem":"SUSE:OpenStack Cloud Crowbar 8","package":"rubygem-loofah","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.0.2-3.11.1"}]}],"bundled":2},{"source":"osv","ecosystem":"SUSE:OpenStack Cloud Crowbar 9","package":"rubygem-loofah","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.0.2-3.11.1"}]}],"bundled":2},{"source":"osv","ecosystem":"Ubuntu:16.04:LTS","package":"ruby-loofah","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.0.3-2+deb9u3build0.16.04.1"}]}],"versions":["2.0.2-1","2.0.3-1","2.0.3-2","2.0.3-2+deb9u1build0.16.04.1","2.0.3-2+deb9u2build0.16.04.1"]},{"source":"osv","ecosystem":"Ubuntu:18.04:LTS","package":"ruby-loofah","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.0.3-2","2.2.2-1"]},{"source":"osv","ecosystem":"Ubuntu:16.04:LTS","package":"ruby-loofah","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.0.3-2+deb9u3build0.16.04.1"}]}],"versions":["2.0.2-1","2.0.3-1","2.0.3-2","2.0.3-2+deb9u1build0.16.04.1","2.0.3-2+deb9u2build0.16.04.1"]},{"source":"osv","ecosystem":"openSUSE:Tumbleweed","package":"rubygem-loofah","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.14.0-1.1"}]}],"bundled":3},{"source":"osv","ecosystem":"openSUSE:Tumbleweed","package":"ruby3.2-rubygem-loofah","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.19.1-1.2"}]}],"bundled":3},{"source":"osv","ecosystem":"openSUSE:Tumbleweed","package":"rubygem-loofah","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.22.0-1.5"}]}],"bundled":6},{"source":"osv","ecosystem":"openSUSE:Tumbleweed","package":"rubygem-loofah","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.23.1-1.3"}]}],"bundled":6},{"source":"osv","ecosystem":"openSUSE:Tumbleweed","package":"rubygem-loofah","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.23.1-1.5"}]}],"bundled":6}],"products":[{"vendor":"canonical","product":"ubuntu_linux"},{"vendor":"debian","product":"debian_linux"},{"vendor":"fedoraproject","product":"fedora"},{"vendor":"loofah_project","product":"loofah"}],"references":[{"url":"https://hackerone.com/reports/709009","tags":["x_refsource_MISC","x_transferred","Permissions Required","Third Party Advisory","report","web"]},{"url":"https://github.com/flavorjones/loofah/issues/171","tags":["x_refsource_CONFIRM","x_transferred","Third Party Advisory","advisory","web"]},{"url":"https://www.debian.org/security/2019/dsa-4554","tags":["vendor-advisory","x_refsource_DEBIAN","x_transferred","Third Party Advisory","advisory","web"]},{"url":"https://security.netapp.com/advisory/ntap-20191122-0003/","tags":["x_refsource_CONFIRM","x_transferred","Third Party Advisory","advisory"]},{"url":"https://lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/4WK2UG7ORKRQOJ6E4XJ2NVIHYJES6BYZ/","tags":["vendor-advisory","x_refsource_FEDORA","x_transferred","web"]},{"url":"https://lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/XMCWPLYPNIWYAY443IZZJ4IHBBLIHBP5/","tags":["vendor-advisory","x_refsource_FEDORA","x_transferred","web"]},{"url":"https://usn.ubuntu.com/4498-1/","tags":["vendor-advisory","x_refsource_UBUNTU","x_transferred","Third Party Advisory","advisory"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2019-15587","tags":["advisory"]},{"url":"https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/4WK2UG7ORKRQOJ6E4XJ2NVIHYJES6BYZ/"},{"url":"https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/XMCWPLYPNIWYAY443IZZJ4IHBBLIHBP5/"},{"url":"https://github.com/flavorjones/loofah/commit/0c6617af440879ce97440f6eb6c58636456dc8ec","tags":["web"]},{"url":"https://github.com/rubysec/ruby-advisory-db/blob/master/gems/loofah/CVE-2019-15587.yml","tags":["web"]},{"url":"https://github.com/advisories/GHSA-c3gv-9cxf-6f57"},{"url":"https://security-tracker.debian.org/tracker/CVE-2019-15587","tags":["advisory"]},{"url":"https://github.com/flavorjones/loofah","tags":["package"]},{"url":"https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/4WK2UG7ORKRQOJ6E4XJ2NVIHYJES6BYZ","tags":["web"]},{"url":"https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/XMCWPLYPNIWYAY443IZZJ4IHBBLIHBP5","tags":["web"]},{"url":"https://security.netapp.com/advisory/ntap-20191122-0003","tags":["web"]},{"url":"https://usn.ubuntu.com/4498-1","tags":["web"]},{"url":"https://www.suse.com/support/update/announcement/2022/suse-su-20223868-1/","tags":["advisory"]},{"url":"https://bugzilla.suse.com/1154751","tags":["report"]},{"url":"https://www.suse.com/security/cve/CVE-2019-15587","tags":["web"]},{"url":"https://www.suse.com/support/update/announcement/2022/suse-su-20224075-1/","tags":["advisory"]},{"url":"https://www.suse.com/security/cve/CVE-2018-8048","tags":["web"]},{"url":"https://ubuntu.com/security/CVE-2019-15587","tags":["report"]},{"url":"https://ubuntu.com/security/notices/USN-4498-1","tags":["advisory"]},{"url":"https://www.cve.org/CVERecord?id=CVE-2019-15587","tags":["report"]},{"url":"","tags":["advisory"]},{"url":"https://www.suse.com/security/cve/CVE-2018-16468","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2022-23514","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2022-23515","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2022-23516","tags":["web"]},{"url":"https://lists.opensuse.org/archives/list/security-announce@lists.opensuse.org/thread/4IMNBB7ILYWTPHGNZ6BMSJ6C3YZLGIWO/","tags":["advisory"]}],"sources":{"cve":[{"id":"CVE-2019-15587","description":"In the Loofah gem for Ruby through v2.3.0 unsanitized JavaScript may occur in sanitized output when a crafted SVG element is republished.","status":"published","published":"2019-10-22T20:07:47Z","modified":"2024-08-05T00:49:13.632Z","cwes":["CWE-79"],"updated_at":"2026-11-02T14:20:21.059499Z"}],"euvd":[{"id":"EUVD-2019-0741","description":"In the Loofah gem for Ruby through v2.3.0 unsanitized JavaScript may occur in sanitized output when a crafted SVG element is republished.","status":"published","published":"2019-10-22T20:07:47Z","modified":"2024-08-05T00:49:13Z","updated_at":"2026-11-03T02:40:36.129589Z"}],"ghsa":[{"id":"GHSA-c3gv-9cxf-6f57","title":"Loofah Allows Cross-site Scripting","description":"In the Loofah gem for Ruby through v2.3.0, unsanitized JavaScript may occur in sanitized output when a crafted SVG element is republished.","status":"published","published":"2019-11-05T23:58:25Z","modified":"2023-08-25T21:37:29Z","cvss":[{"version":"3.1","score":5.4,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N","level":"medium"}],"cwes":["CWE-79"],"updated_at":"2026-11-02T14:37:00.680009Z"}],"nvd":[{"id":"CVE-2019-15587","description":"In the Loofah gem for Ruby through v2.3.0 unsanitized JavaScript may occur in sanitized output when a crafted SVG element is republished.","status":"published","published":"2019-10-22T21:15:10.61Z","modified":"2026-06-17T02:20:41.79Z","cvss":[{"version":"3.1","score":5.4,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N","level":"medium","assessor":"primary"},{"version":"2.0","score":3.5,"vector":"AV:N/AC:M/Au:S/C:N/I:P/A:N","level":"low","assessor":"primary"}],"cwes":["CWE-79"],"updated_at":"2026-11-02T14:05:32.982925Z"}],"osv":[{"id":"CVE-2019-15587","description":"In the Loofah gem for Ruby through v2.3.0 unsanitized JavaScript may occur in sanitized output when a crafted SVG element is republished.","status":"published","published":"2019-10-22T21:15:10.61Z","modified":"2026-10-20T10:50:44.552511373Z","cvss":[{"version":"3.1","score":5.4,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N","level":"medium"}],"updated_at":"2026-11-02T15:44:11.361782Z"},{"id":"DEBIAN-CVE-2019-15587","description":"In the Loofah gem for Ruby through v2.3.0 unsanitized JavaScript may occur in sanitized output when a crafted SVG element is republished.","status":"published","published":"2019-10-22T21:15:10.61Z","modified":"2026-09-21T07:02:12.411618312Z","cvss":[{"version":"3.1","score":5.4,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N","level":"medium"}],"updated_at":"2026-11-02T15:45:31.867036Z"},{"id":"GHSA-c3gv-9cxf-6f57","title":"Loofah Allows Cross-site Scripting","description":"In the Loofah gem for Ruby through v2.3.0, unsanitized JavaScript may occur in sanitized output when a crafted SVG element is republished.","status":"published","published":"2019-11-05T23:58:25Z","modified":"2024-02-16T08:24:36.818396Z","cvss":[{"version":"3.1","score":5.4,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N","level":"medium"}],"cwes":["CWE-79"],"updated_at":"2026-11-02T15:46:44.571161Z"},{"id":"UBUNTU-CVE-2019-15587","description":"In the Loofah gem for Ruby through v2.3.0 unsanitized JavaScript may occur in sanitized output when a crafted SVG element is republished.","status":"published","published":"2019-10-22T21:15:00Z","modified":"2026-02-04T03:00:29.117226Z","cvss":[{"version":"3.1","score":5.4,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N","level":"medium"}],"updated_at":"2026-11-02T15:54:19.6877Z"},{"id":"DSA-4554-1","title":"ruby-loofah - security update","status":"published","published":"2019-10-28T00:00:00Z","modified":"2026-03-09T02:09:29.361925Z","updated_at":"2026-11-02T15:46:17.19998Z"},{"id":"openSUSE-SU-2024:11337-1","title":"ruby2.7-rubygem-loofah-2.12.0-1.2 on GA media","description":"These are all security issues fixed in the ruby2.7-rubygem-loofah-2.12.0-1.2 package on the GA media of openSUSE Tumbleweed.","status":"published","published":"2024-06-15T00:00:00Z","modified":"2026-02-04T02:31:28.562913Z","updated_at":"2026-11-02T16:58:35.195147Z"},{"id":"openSUSE-SU-2024:11900-1","title":"ruby3.1-rubygem-loofah-2.14.0-1.1 on GA media","description":"These are all security issues fixed in the ruby3.1-rubygem-loofah-2.14.0-1.1 package on the GA media of openSUSE Tumbleweed.","status":"published","published":"2024-06-15T00:00:00Z","modified":"2026-02-04T03:15:23.372183Z","updated_at":"2026-11-02T16:58:35.485255Z"},{"id":"openSUSE-SU-2024:13162-1","title":"ruby3.2-rubygem-loofah-2.19.1-1.2 on GA media","description":"These are all security issues fixed in the ruby3.2-rubygem-loofah-2.19.1-1.2 package on the GA media of openSUSE Tumbleweed.","status":"published","published":"2024-06-15T00:00:00Z","modified":"2026-02-04T04:04:48.137469Z","updated_at":"2026-11-02T16:58:36.025801Z"},{"id":"openSUSE-SU-2024:14171-1","title":"ruby3.3-rubygem-loofah-2.22.0-1.5 on GA media","description":"These are all security issues fixed in the ruby3.3-rubygem-loofah-2.22.0-1.5 package on the GA media of openSUSE Tumbleweed.","status":"published","published":"2024-07-12T00:00:00Z","modified":"2026-02-04T03:46:41.313947Z","updated_at":"2026-11-02T16:58:36.662953Z"},{"id":"openSUSE-SU-2025:15120-1","title":"ruby3.4-rubygem-loofah-2.23.1-1.3 on GA media","description":"These are all security issues fixed in the ruby3.4-rubygem-loofah-2.23.1-1.3 package on the GA media of openSUSE Tumbleweed.","status":"published","published":"2025-05-17T00:00:00Z","modified":"2026-02-04T02:26:16.054067Z","updated_at":"2026-11-02T16:58:37.399567Z"},{"id":"openSUSE-SU-2026:10353-1","title":"ruby4.0-rubygem-loofah-2.23.1-1.5 on GA media","description":"These are all security issues fixed in the ruby4.0-rubygem-loofah-2.23.1-1.5 package on the GA media of openSUSE Tumbleweed.","status":"published","published":"2026-03-13T00:00:00Z","modified":"2026-03-14T08:44:10.491758Z","updated_at":"2026-11-02T16:58:38.415593Z"},{"id":"SUSE-SU-2022:3868-1","title":"Security update for rubygem-loofah","description":"This update for rubygem-loofah fixes the following issues:\n\n  - CVE-2019-15587: Fixed issue in sanitization of crafted SVG elements (bsc#1154751).\n","status":"published","published":"2022-11-04T09:08:33Z","modified":"2026-02-04T02:57:43.377302Z","updated_at":"2026-11-02T15:53:51.440565Z"},{"id":"SUSE-SU-2022:4075-1","title":"Security update for rubygem-loofah","description":"This update for rubygem-loofah fixes the following issues:\n\n  - CVE-2019-15587: Fixed issue in sanitization of crafted SVG elements (bsc#1154751).\n","status":"published","published":"2022-11-18T13:01:56Z","modified":"2026-02-04T03:07:49.529741Z","updated_at":"2026-11-02T15:53:51.440565Z"},{"id":"USN-4498-1","title":"ruby-loofah vulnerability","description":"It was discovered that Loofah does not properly sanitize JavaScript in \nsanitized output. An attacker could possibly use this issue to perform \nXSS attacks. (CVE-2019-15587)\n","status":"published","published":"2020-09-15T19:25:01Z","modified":"2026-04-27T15:40:44.861279Z","updated_at":"2026-11-02T16:58:14.547547Z"}]}}
