Introduction
An unauthenticated AJAX endpoint in the GeekyBot WordPress plugin lets any internet visitor install arbitrary ZIP archives as plugins. That gives an attacker remote code execution with no credentials and no user interaction. The flaw has a CVSS score of 9.8, and more than 6,000 active WordPress installations run the affected versions.
GeekyBot is an AI-powered WordPress plugin developed by ahmadgb. It provides chatbot functionality, WooCommerce lead generation, and content creation features. The plugin has been downloaded more than 156,000 times and has more than 6,000 active installations. It sits in the growing market for WordPress AI plugins, so it reaches a broad range of site operators who want to add AI capabilities to their WordPress deployments.
Technical information
The root cause of CVE-2026-5294 is a Missing Authorization weakness, classified under CWE-862. The vulnerability is in a WordPress AJAX action registered as geekybot_frontendajax. In WordPress, any visitor can call an AJAX action registered with the wp_ajax_nopriv_ prefix, including unauthenticated users. GeekyBot registered this action with no authorization checks, no nonce verification, and no capability validation.
The geekybot_frontendajax endpoint exposes a model/function dispatch mechanism. The AJAX handler accepts parameters that decide which internal class (model) and which method (function) to invoke. An attacker can send a crafted POST request to this endpoint and set the dispatch parameters so that they reach a plugin installer helper function built into the plugin.
The installer helper accepts a URL pointing to a ZIP file, downloads the file, and extracts its contents directly into the wp-content/plugins/ directory. The AJAX route has no authorization gates, and the attacker controls the URL parameter passed to the installer helper. Together, these put the entire chain, from the first request to file extraction, in reach of any unauthenticated user on the internet.
Attack flow
Exploitation works like this:
- The attacker identifies a WordPress site running GeekyBot version 1.2.2 or earlier.
- The attacker sends a crafted POST request to the WordPress AJAX handler at
wp-admin/admin-ajax.php, with the action parameter set togeekybot_frontendajax. - The request includes dispatch parameters that route execution to the plugin installer helper function.
- The attacker supplies a URL pointing to a malicious ZIP archive that contains arbitrary PHP code structured as a WordPress plugin.
- The GeekyBot installer helper downloads the ZIP file from the attacker-controlled URL and extracts it into
wp-content/plugins/. - The malicious PHP files are now on the server. The attacker can activate them or access them directly to execute arbitrary code.
Successful exploitation means complete server compromise. The attacker can execute arbitrary PHP code and use it to exfiltrate data, install backdoors, deface the site, or move laterally within the hosting environment.
Patch analysis
Version 1.2.3 fixes the vulnerability, as shown in changeset 3497169 on the WordPress plugin repository. The fix adds a cryptographic nonce check using wp_create_nonce and properly initializes the WordPress filesystem API to secure file operations. With these controls in place, only authenticated, authorized requests with a valid nonce can reach the installer functionality.
Affected systems and versions
The vulnerability affects all versions of the GeekyBot plugin for WordPress up to and including 1.2.2. Version 1.2.3 resolved the issue. The latest available version at the time of writing is 1.2.4.
Any WordPress installation running GeekyBot versions 1.0 through 1.2.2 with the plugin activated is vulnerable. The flaw is in a nopriv AJAX handler, so the site does not need user registration enabled or any specific configuration. The vulnerable endpoint is exposed by default on any site where the plugin is active.
Vendor security history
Several high-severity vulnerabilities in the GeekyBot plugin have been disclosed in a short period:
| Vulnerability ID | Type | Severity | Patch Status |
|---|---|---|---|
| CVE-2026-5294 | Missing Authorization (RCE) | 9.8 Critical | Patched in 1.2.3 |
| CVE-2026-40772 | Unauthenticated Arbitrary File Upload | 8.8 High | Patched |
| CVE-2025-15266 | Cross Site Scripting | High | Unpatched as of January 2026 |
The vendor has patched the most critical disclosures promptly. Even so, the repeated severe flaws in authorization and file handling suggest that organizations should monitor this plugin closely and decide whether its functionality justifies the risk.
References
- Wordfence Advisory: GeekyBot <= 1.2.2 Missing Authorization to Unauthenticated Arbitrary Plugin Installation
- NVD Entry for CVE-2026-5294
- CVE Record: CVE-2026-5294
- WordPress Plugin Repository Changeset 3497169 for GeekyBot
- GeekyBot WordPress Plugin Page
- Wordfence Vulnerability Database: GeekyBot
- Wordfence Intelligence Weekly WordPress Vulnerability Report, April 20 to April 26, 2026
- SolidWP WordPress Vulnerability Report, January 21, 2026



