Severity by source
AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
Network-reachable via any page URL with no authentication or interaction; impact limited to partial confidentiality of donation CSV records, no integrity or availability effect.
Primary rating from Vendor (Wordfence).
CVSS VectorVendor: Wordfence
Lifecycle Timeline
2DescriptionCVE.org
The Age Verification & Identity Verification by Token of Trust plugin for WordPress is vulnerable to unauthorized access in all versions up to and including 4.0.2. This is due to the handle_export_table() function being registered on the WordPress 'init' hook, which fires for all requests, including those from unauthenticated visitors, without any capability check. This makes it possible for unauthenticated attackers to download a CSV file containing sensitive WooCommerce donation data, including order dates, order IDs, charitable donation amounts, and admin-only order edit URLs, simply by visiting any page on the site with the 'tot_export_table' GET parameter set to a numeric value (0-3).
AnalysisAI
Unauthenticated export of sensitive WooCommerce donation records is possible in the Token of Trust WordPress plugin through version 4.0.2 due to a missing capability check on a publicly accessible export function. Any unauthenticated visitor can retrieve a CSV file containing charitable donor order dates, order IDs, donation amounts, and admin-only order edit URLs by appending a single GET parameter to any page on the affected site. No public exploit code has been identified and this vulnerability is not listed in CISA KEV, but the trivial exploitation mechanism - requiring only a browser and a known URL parameter - means low-skill attackers can exploit it at scale.
Technical ContextAI
The vulnerability resides in the handle_export_table() function within the WooCommerce integration layer of the Token of Trust plugin, specifically at integrations/woocommerce/class-donations.php (lines 99-100), as confirmed by multiple WordPress Trac browser references across plugin versions 3.31.5, 3.34.2, and trunk. The function is registered on WordPress's init hook, which fires on every request - including from unauthenticated visitors - without conditional access gating. CWE-862 (Missing Authorization) is the precise root cause: the function inspects the tot_export_table GET parameter but never calls WordPress's current_user_can() or any equivalent capability check before streaming the CSV export. The affected CPE is cpe:2.3:a:tokenoftrust:age_verification_&_identity_verification_by_token_of_trust:*:*:*:*:*:*:*:*. The exposure is contingent on the WooCommerce donations sub-feature being active, not just the plugin itself being installed.
RemediationAI
An upstream code fix has been committed to the plugin's WordPress Trac repository (changeset https://plugins.trac.wordpress.org/changeset?reponame=&old=3539532%40token-of-trust&new=3539532%40token-of-trust); however, the exact patched release version number is not confirmed in available data - administrators should update to the latest available version via the WordPress plugin dashboard immediately and verify that the installed version is newer than 4.0.2. As a compensating control prior to patching, deploy a WAF rule blocking any GET request containing the tot_export_table parameter; note this will also prevent legitimate admin-initiated CSV exports until the plugin is updated, so coordinate timing with site operators. Alternatively, temporarily deactivating the plugin eliminates exposure entirely at the cost of disabling age and identity verification workflows.
Same weakness CWE-862 – Missing Authorization
View allSame technique Authentication Bypass
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-42524
GHSA-v9rj-7f7r-32jj