{"id":"CVE-2026-2300","aliases":["EUVD-2026-29388","GHSA-xfmv-2x8g-8rjp"],"status":"published","title":"BJ Lazy Load \u003c= 1.0.9 - Authenticated (Contributor+) Stored Cross-Site Scripting via Custom HTML Block","description":"The BJ Lazy Load plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the `filter_images()` function in all versions up to, and including, 1.0.9. This is due to the use of regex-based HTML processing (`preg_replace`) that does not properly handle HTML attribute boundaries when replacing `src` attributes, allowing crafted content inside a `class` attribute value to be promoted to real DOM attributes after processing. This makes it possible for authenticated attackers, with Contributor-level access and above, to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page.","severity":{"version":"3.1","score":6.4,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N","level":"medium","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-11","score":0.00193,"percentile":0.09098,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":false},"cwes":["CWE-79"],"published":"2026-05-12T07:48:29Z","modified":"2026-06-17T10:30:44Z","products":[{"vendor":"bjornjohansen","product":"bj lazy load"}],"references":[{"url":"https://www.wordfence.com/threat-intel/vulnerabilities/id/f443846f-4d70-4ca0-beeb-d2e839b14765?source=cve"},{"url":"https://plugins.trac.wordpress.org/browser/bj-lazy-load/trunk/inc/class-bjll.php#L121"},{"url":"https://plugins.trac.wordpress.org/browser/bj-lazy-load/tags/1.0.9/inc/class-bjll.php#L210"},{"url":"https://plugins.trac.wordpress.org/browser/bj-lazy-load/trunk/inc/class-bjll.php#L210"},{"url":"https://plugins.trac.wordpress.org/browser/bj-lazy-load/tags/1.0.9/inc/class-bjll.php#L121"},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-2300"},{"url":"https://github.com/advisories/GHSA-xfmv-2x8g-8rjp"}],"sources":{"cve":[{"id":"CVE-2026-2300","title":"BJ Lazy Load \u003c= 1.0.9 - Authenticated (Contributor+) Stored Cross-Site Scripting via Custom HTML Block","description":"The BJ Lazy Load plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the `filter_images()` function in all versions up to, and including, 1.0.9. This is due to the use of regex-based HTML processing (`preg_replace`) that does not properly handle HTML attribute boundaries when replacing `src` attributes, allowing crafted content inside a `class` attribute value to be promoted to real DOM attributes after processing. This makes it possible for authenticated attackers, with Contributor-level access and above, to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page.","status":"published","published":"2026-05-12T07:48:29.322Z","modified":"2026-05-13T15:52:49.069Z","cvss":[{"version":"3.1","score":6.4,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N","level":"medium","assessor":"cna"}],"cwes":["CWE-79"],"updated_at":"2026-11-02T13:48:46.911326Z"}],"euvd":[{"id":"EUVD-2026-29388","description":"The BJ Lazy Load plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the `filter_images()` function in all versions up to, and including, 1.0.9. This is due to the use of regex-based HTML processing (`preg_replace`) that does not properly handle HTML attribute boundaries when replacing `src` attributes, allowing crafted content inside a `class` attribute value to be promoted to real DOM attributes after processing. This makes it possible for authenticated attackers, with Contributor-level access and above, to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page.","status":"published","published":"2026-05-12T07:48:29Z","modified":"2026-05-13T15:52:49Z","cvss":[{"version":"3.1","score":6.4,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N","level":"medium"}],"updated_at":"2026-11-02T19:04:33.75998Z"}],"ghsa":[{"id":"GHSA-xfmv-2x8g-8rjp","title":"The BJ Lazy Load plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the ...","description":"The BJ Lazy Load plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the `filter_images()` function in all versions up to, and including, 1.0.9. This is due to the use of regex-based HTML processing (`preg_replace`) that does not properly handle HTML attribute boundaries when replacing `src` attributes, allowing crafted content inside a `class` attribute value to be promoted to real DOM attributes after processing. This makes it possible for authenticated attackers, with Contributor-level access and above, to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page.","status":"published","published":"2026-05-12T09:31:30Z","modified":"2026-05-12T09:31:31Z","cvss":[{"version":"3.1","score":6.4,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N","level":"medium"}],"cwes":["CWE-79"],"updated_at":"2026-11-02T15:08:00.106388Z"}],"nvd":[{"id":"CVE-2026-2300","description":"The BJ Lazy Load plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the `filter_images()` function in all versions up to, and including, 1.0.9. This is due to the use of regex-based HTML processing (`preg_replace`) that does not properly handle HTML attribute boundaries when replacing `src` attributes, allowing crafted content inside a `class` attribute value to be promoted to real DOM attributes after processing. This makes it possible for authenticated attackers, with Contributor-level access and above, to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page.","status":"published","published":"2026-05-12T09:16:39.623Z","modified":"2026-06-17T10:30:44.847Z","cvss":[{"version":"3.1","score":6.4,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N","level":"medium","assessor":"secondary"}],"cwes":["CWE-79"],"updated_at":"2026-11-02T14:12:18.613259Z"}]}}
