{"id":"CVE-2026-87869","aliases":["EUVD-2026-96060","GHSA-g983-662m-2fg8"],"status":"published","title":"Filter Everything — WordPress \u0026 WooCommerce Filters \u003c= 1.9.6 - Reflected Cross-Site Scripting via Elementor Posts Widget Pagination URL","description":"The Filter Everything — WordPress \u0026 WooCommerce Filters plugin for WordPress is vulnerable to Reflected Cross-Site Scripting in versions up to, and including, 1.9.6. This is due to insufficient input sanitization and output escaping in the flrt_elementor_load_more_anchor() function. The function reads query parameters from $_SERVER['REQUEST_URI'] via getFormActionOrFullPageUrl(true), which URL-decodes them through parse_str() and re-assembles them using build_query() — a WordPress core function that does NOT re-encode values ($urlencode=false). The resulting URL, containing unescaped special characters, is injected into a data-next-page HTML attribute via preg_replace() without esc_attr() or esc_url(). This makes it possible for unauthenticated attackers to inject arbitrary web scripts in pages that execute if they can successfully trick a user into performing an action such as clicking on a specially crafted link.","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":"cna","from":"cve"},"epss":{"day":"2026-11-11","score":0.0022,"percentile":0.12687,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":false},"cwes":["CWE-79"],"published":"2026-10-10T04:26:45Z","modified":"2026-10-13T13:30:21Z","products":[{"vendor":"stepasyuk","product":"filter everything — wordpress \u0026 woocommerce filters"}],"references":[{"url":"https://www.wordfence.com/threat-intel/vulnerabilities/id/7f0f453c-ca01-4ccc-b8c0-4468db40386a?source=cve"},{"url":"https://plugins.trac.wordpress.org/browser/filter-everything/tags/1.9.6/src/wpc-third-party.php#L793"},{"url":"https://plugins.trac.wordpress.org/browser/filter-everything/tags/1.9.6/src/UrlManager.php#L197"},{"url":"https://plugins.trac.wordpress.org/browser/filter-everything/tags/1.9.6/src/wpc-helpers.php#L207"},{"url":"https://plugins.trac.wordpress.org/browser/filter-everything/tags/1.9.2.1/src/wpc-third-party.php#L793"},{"url":"https://plugins.trac.wordpress.org/browser/filter-everything/tags/1.9.2.1/src/UrlManager.php#L197"},{"url":"https://plugins.trac.wordpress.org/browser/filter-everything/tags/1.9.2.1/src/wpc-helpers.php#L207"},{"url":"https://plugins.trac.wordpress.org/changeset?reponame=\u0026old=3707235%40filter-everything\u0026new=3707235%40filter-everything"},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-87869"},{"url":"https://github.com/advisories/GHSA-g983-662m-2fg8"}],"sources":{"cve":[{"id":"CVE-2026-87869","title":"Filter Everything — WordPress \u0026 WooCommerce Filters \u003c= 1.9.6 - Reflected Cross-Site Scripting via Elementor Posts Widget Pagination URL","description":"The Filter Everything — WordPress \u0026 WooCommerce Filters plugin for WordPress is vulnerable to Reflected Cross-Site Scripting in versions up to, and including, 1.9.6. This is due to insufficient input sanitization and output escaping in the flrt_elementor_load_more_anchor() function. The function reads query parameters from $_SERVER['REQUEST_URI'] via getFormActionOrFullPageUrl(true), which URL-decodes them through parse_str() and re-assembles them using build_query() — a WordPress core function that does NOT re-encode values ($urlencode=false). The resulting URL, containing unescaped special characters, is injected into a data-next-page HTML attribute via preg_replace() without esc_attr() or esc_url(). This makes it possible for unauthenticated attackers to inject arbitrary web scripts in pages that execute if they can successfully trick a user into performing an action such as clicking on a specially crafted link.","status":"published","published":"2026-10-10T04:26:45.199Z","modified":"2026-10-11T12:23:58.93Z","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":"cna"}],"cwes":["CWE-79"],"updated_at":"2026-11-02T13:37:47.463822Z"}],"euvd":[{"id":"EUVD-2026-96060","description":"The Filter Everything — WordPress \u0026 WooCommerce Filters plugin for WordPress is vulnerable to Reflected Cross-Site Scripting in versions up to, and including, 1.9.6. This is due to insufficient input sanitization and output escaping in the flrt_elementor_load_more_anchor() function. The function reads query parameters from $_SERVER['REQUEST_URI'] via getFormActionOrFullPageUrl(true), which URL-decodes them through parse_str() and re-assembles them using build_query() — a WordPress core function that does NOT re-encode values ($urlencode=false). The resulting URL, containing unescaped special characters, is injected into a data-next-page HTML attribute via preg_replace() without esc_attr() or esc_url(). This makes it possible for unauthenticated attackers to inject arbitrary web scripts in pages that execute if they can successfully trick a user into performing an action such as clicking on a specially crafted link.","status":"published","published":"2026-10-10T04:26:45Z","modified":"2026-10-11T12:23:58Z","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-02T17:27:22.526044Z"}],"ghsa":[{"id":"GHSA-g983-662m-2fg8","title":"The Filter Everything — WordPress \u0026 WooCommerce Filters plugin for WordPress is vulnerable to...","description":"The Filter Everything — WordPress \u0026 WooCommerce Filters plugin for WordPress is vulnerable to Reflected Cross-Site Scripting in versions up to, and including, 1.9.6. This is due to insufficient input sanitization and output escaping in the flrt_elementor_load_more_anchor() function. The function reads query parameters from $_SERVER['REQUEST_URI'] via getFormActionOrFullPageUrl(true), which URL-decodes them through parse_str() and re-assembles them using build_query() — a WordPress core function that does NOT re-encode values ($urlencode=false). The resulting URL, containing unescaped special characters, is injected into a data-next-page HTML attribute via preg_replace() without esc_attr() or esc_url(). This makes it possible for unauthenticated attackers to inject arbitrary web scripts in pages that execute if they can successfully trick a user into performing an action such as clicking on a specially crafted link.","status":"published","published":"2026-10-10T06:30:58Z","modified":"2026-10-10T06:31:07Z","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"}],"cwes":["CWE-79"],"updated_at":"2026-11-02T15:13:01.290603Z"}],"nvd":[{"id":"CVE-2026-87869","description":"The Filter Everything — WordPress \u0026 WooCommerce Filters plugin for WordPress is vulnerable to Reflected Cross-Site Scripting in versions up to, and including, 1.9.6. This is due to insufficient input sanitization and output escaping in the flrt_elementor_load_more_anchor() function. The function reads query parameters from $_SERVER['REQUEST_URI'] via getFormActionOrFullPageUrl(true), which URL-decodes them through parse_str() and re-assembles them using build_query() — a WordPress core function that does NOT re-encode values ($urlencode=false). The resulting URL, containing unescaped special characters, is injected into a data-next-page HTML attribute via preg_replace() without esc_attr() or esc_url(). This makes it possible for unauthenticated attackers to inject arbitrary web scripts in pages that execute if they can successfully trick a user into performing an action such as clicking on a specially crafted link.","status":"published","published":"2026-10-10T05:16:40.277Z","modified":"2026-10-13T13:30:21.62Z","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":"secondary"}],"cwes":["CWE-79"],"updated_at":"2026-11-02T14:12:55.473789Z"}]}}
