CVE-2026-7660 affects Easy Updates Manager in versions up to 9.0.20 and it is a reflected Cross Site Scripting issue in the admin pagination flow. The vulnerable path is the Updates Options plugins tab, where the paged request parameter can be reflected into the value attribute of the current page input when action=eum_ajax is present. A successful attack requires an administrator or another user with update management access to open a crafted admin URL, so the practical risk is a privileged reflected script sink that can execute in the WordPress dashboard if the browser accepts the injected attribute payload.

CVECVE-2026-7660
Plugin VersionEasy Updates Manager <= 9.0.20, fixed in 9.0.21
All Time7 924 400
Active installations300 000+
Publicly PublishedMay 27, 2026
Last UpdatedMay 28, 2026
ResearcherDmitrii Ignatyev
PoCYes
ExploitNo
Referencehttps://www.cve.org/CVERecord?id=CVE-2026-7660
https://www.wordfence.com/threat-intel/vulnerabilities/wordpress-plugins/stops-core-theme-and-plugin-updates/easy-updates-manager-9020-reflected-cross-site-scripting-via-paged-parameter
Plugin Security Certification by CleanTalk
Logo of the plugin

Join the community of developers who prioritize security. Highlight your plugin in the WordPress catalog.

PSC by Cleantalk

Timeline

April 10, 2026Plugin testing and vulnerability detection in Easy Updates Manager have been completed
May 13, 2026The plugin author released version 9.0.21 with validation and output escaping fixes after responsible disclosure
May 27, 2026Public vulnerability publication by Wordfence
May 28, 2026Published CVE-2026-7660 in the CVE record

Discovery of the Vulnerability

The vulnerable surface is the Easy Updates Manager admin page at wp-admin/index.php?page=mpsum-update-options&tab=plugins when action=eum_ajax is present. The issue appears in the pagination output used by the plugin list view. The current page value can be influenced through the paged request parameter and then rendered into an input attribute without context correct escaping.

sanitize_text_field() is useful for text cleanup, but it is not a substitute for esc_attr() when a value is printed inside an HTML attribute. In vulnerable versions, a crafted value can break out of the intended value attribute and add a browser event attribute to the pagination input. The sink is easier to interact with when the plugin list has more than one pagination page, such as a site with more than 100 plugins or a lower per page setting.

Understanding of Reflected XSS attacks

Reflected XSS in a WordPress admin page usually depends on getting a logged in user to open a crafted dashboard URL. The payload is not stored on the server. It is reflected from the request into the page response and runs only in the browser that opens the link.

The role requirement narrows the exposed victim set, but the affected users are highly privileged. A script running in the dashboard origin can interact with the current admin page and send same origin requests available to that user. For this reason, output escaping bugs in admin screens should still be treated seriously even when the vulnerable page is not public.

Exploiting the Reflected XSS Vulnerability

To demonstrate CVE-2026-7660, open the Easy Updates Manager plugins tab as an administrator and load the crafted dashboard URL:

POC:

http://138.124.55.33/wp-admin/index.php?page=mpsum-update-options&tab=plugins&action=eum_ajax&paged=1%27+onmouseover%3Dalert%281%29%2F%2F

____

The proof of concept uses an alert handler to show that attacker controlled content can reach an attribute context on the admin page. The payload is non-destructive and is only meant to confirm browser side execution in the affected pagination control.

Recommendations for Improved Security

Site owners should update Easy Updates Manager to version 9.0.21 or a newer patched version. Administrators should also avoid opening dashboard links from untrusted sources while logged in, especially links that include unusual query parameters.

Developers should validate pagination values as integers before using them and escape every value for its final output context. For this case, paged should be normalized with integer validation and then escaped with esc_attr() before it is printed in an input value. Regression tests should cover attribute contexts because sanitization alone does not guarantee safe HTML output.

By taking proactive measures to address Reflected XSS like CVE-2026-7660, WordPress website owners can reduce risk in privileged admin workflows and keep update management safe. Stay vigilant, stay secure.

#WordPressSecurity #ReflectedXSS #WebsiteSafety #StayProtected #MediumVulnerability

Use CleanTalk solutions to improve the security of your website

CVE-2026-7660 – Easy Updates Manager – Reflected XSS – POC