CVE-2026-104993: GeoDirectory <= 2.8.188 - Authenticated (Subscriber+) Stored Cross-Site Scripting via Contact Email Custom Field
The GeoDirectory – WP Business Directory Plugin and Classified Listings Directory plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the 'email (Contact Email custom field htmlvarname)' parameter in all versions up to, and including, 2.8.188 due to insufficient input sanitization and output escaping. This makes it possible for authenticated attackers, with subscriber-level access and above, to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page. Successful exploitation requires that an administrator has added and configured the Contact Email custom field to render on the public single-listing output page, and that the administrator subsequently approves the attacker's submitted listing.
Affected Software
Event History
Frequently Asked Questions
Which sites are actually exposed to this issue?
A site is exposed only if it uses GeoDirectory version 2.8.188 or earlier, an administrator has configured the Contact Email custom field to appear on public single-listing pages, and submitted listings can be approved. The vulnerable field must be present in that public output path.
What access and actions does an attacker need?
An attacker needs an authenticated WordPress account with at least Subscriber-level access. They must submit a listing containing script content in the Contact Email custom field, and an administrator must approve that listing before the payload can execute for visitors to the affected listing page.
What should administrators do while a fix is unavailable or cannot be deployed immediately?
Remove the Contact Email custom field from public single-listing output and avoid approving untrusted listings that contain values in that field. Review already approved listings using the Contact Email field for injected script content.