CVE-2026-3643: Accessibly (WordPress plugin) · Cross-site Scripting
Affects Accessibly (WordPress plugin)Source CVE Database V5
Not known to be exploited · CVSS 7.2 High.
Data as of 30 Oct 2026, 11:52 UTC
- EPSS
- 0.4% chance of exploitation in 30 days – higher than 35% of CVEsExploit Prediction Scoring System: the likelihood attackers will use this flaw soon.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:NExploitation evidence
Disclosed: evidence found.
CVE published 15 Apr 2026
Detectable: no evidence on record.
No public nuclei template indexed
Weaponized: no evidence on record.
No public exploit code indexed in Metasploit or Exploit-DB
Exploited in the wildExploited: no evidence on record.
Not in CISA KEV and no source reports exploitation
Observed by OffSeq MirageSeen by Mirage: no evidence on record.
No attack traffic recorded by OffSeq Mirage sensors
A missing step is not evidence of safety. Sources: cve.org (opens in a new tab), the Metasploit, Exploit-DB and nuclei-templates index as of 30 Oct 2026.
What to do
Affected software
| Product | Affected | Fixed in |
|---|---|---|
| onthemapmarketingAccessibly – WordPress Website Accessibility | Affected
| Fixed in– |
AI-suggested
Since the REST API endpoints lack authentication and allow unsafe data storage, site administrators should consider disabling or restricting access to these endpoints if possible. Monitor the vendor advisory for updates and apply any official fixes once available. Until then, avoid using the affected plugin version or remove it if feasible to prevent exploitation.
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.
References
- wordfence.com/threat-intel/vulnerabilities/id/f8234ea2-ff80-425f-b83d-29c422b40c6a?source=cve (opens in a new tab)
- plugins.trac.wordpress.org/browser/otm-accessibly/trunk/public/Api/BaseApiController.php (opens in a new tab)
- plugins.trac.wordpress.org/browser/otm-accessibly/tags/3.0.3/public/Api/BaseApiController.php (opens in a new tab)
- plugins.trac.wordpress.org/browser/otm-accessibly/trunk/public/admin/AdminApi.php (opens in a new tab)
- plugins.trac.wordpress.org/browser/otm-accessibly/tags/3.0.3/public/admin/AdminApi.php (opens in a new tab)
- plugins.trac.wordpress.org/browser/otm-accessibly/trunk/public/Data/AccessiblyOptions.php (opens in a new tab)
- plugins.trac.wordpress.org/browser/otm-accessibly/tags/3.0.3/public/Data/AccessiblyOptions.php (opens in a new tab)
- plugins.trac.wordpress.org/browser/otm-accessibly/trunk/public/AssetsManager.php (opens in a new tab)
- plugins.trac.wordpress.org/browser/otm-accessibly/tags/3.0.3/public/AssetsManager.php (opens in a new tab)