Security Alert Summary
The Animated Number Counters WordPress plugin contains a second-order SQL injection vulnerability in the handling of the counterid parameter in versions up to and including 3.0. Authenticated users with editor-level access or higher can cause crafted input to be persisted and later concatenated into unprepared SQL queries, allowing extraction of sensitive information from the database.
CVE Details
- CVE ID:
CVE-2026-15399 - Affected component: Animated Number Counters plugin for WordPress
- Affected versions: All versions up to and including 3.0
- Published: October 13, 2026 at 08:17:00 AM
- Last modified: October 13, 2026 at 02:17:36 PM
- CVSS v3.1 base score: 4.9 (MEDIUM) –
CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:N/A:N - Authentication / privileges / user interaction:
- Privileges required: High (authenticated user with editor-level access or above)
- User interaction: None
- Attack vector: Network
- Primary impact:
- Confidentiality: High (ability to extract sensitive information from the database)
- Integrity: None indicated
- Availability: None indicated
- Weakness (CWE): CWE-89 (SQL Injection)
Technical Details
The plugin exposes a generic SQL injection via the counterid parameter. This is a second-order SQL injection: during the write path the plugin uses $wpdb->prepare(), but that prepared protection is not preserved for the read path. Values retrieved from storage are concatenated unsanitized into subsequent, unprepared SQL queries. The concatenation occurs both inside a single-quoted string context and in a bare numeric context, which allows an authenticated user with sufficient privileges to append additional SQL that can be executed by the database.
The description identifies the problematic parameter (counterid) and the lack of sufficient escaping and preparation on the read/query side, which is the root cause of the issue. Because the vulnerability requires an account with editor-level privileges or higher, exploitation depends on the attacker being able to write or modify stored values that later influence unprepared queries.
How This Could Impact Your Website
In a typical small or medium business WordPress site, the site owner or administrator grants editor access to internal staff or external contractors to manage content. If an individual with editor-level access stores a crafted value for the counterid parameter, that value can later be used in unprepared queries and may allow an attacker to read sensitive data from the database.
Practical consequences include the potential exposure of internal user email addresses or other confidential records stored in the database. Such disclosures can increase the risk of targeted phishing or social engineering against staff or contractors. The vulnerability does not indicate direct integrity or availability impacts, but disclosure of confidential data is a meaningful privacy and operational concern.
If youre unsure whether your site is affected or how to assess your current user roles and plugins, it may be worth having a professional review your setup.
Recommended Actions
- Update the affected plugin as soon as a patched version is available.
- Review and reduce unnecessary user roles, especially contributor and editor accounts.
- Enforce strong passwords and enable two-factor authentication for editors and administrators.
- Remove unused or unmaintained plugins from your site.
- Monitor site and database activity for unusual behavior or unexpected queries.
If youd like help reviewing your plugins, user roles, or overall WordPress security posture, our team at Freshy is happy to help.
References
- https://plugins.trac.wordpress.org/browser/animated-number-counters/tags/2.7/settings/counters/counter-01.php#L20
- https://plugins.trac.wordpress.org/browser/animated-number-counters/tags/2.7/settings/counters/counter-01.php#L61
- https://plugins.trac.wordpress.org/browser/animated-number-counters/tags/2.7/settings/helper/functions.php#L312
- https://plugins.trac.wordpress.org/browser/animated-number-counters/tags/2.7/settings/helper/number-counter-save.php#L8
- https://plugins.trac.wordpress.org/browser/animated-number-counters/tags/2.8/settings/counters/counter-01.php#L20
- https://plugins.trac.wordpress.org/browser/animated-number-counters/tags/2.8/settings/counters/counter-01.php#L61
- https://plugins.trac.wordpress.org/browser/animated-number-counters/tags/2.8/settings/helper/functions.php#L312
- https://plugins.trac.wordpress.org/browser/animated-number-counters/tags/2.8/settings/helper/number-counter-save.php#L8
- https://plugins.trac.wordpress.org/changeset/3603796/animated-number-counters/trunk/settings/counters/counter-01.php
- https://wordpress.org/plugins/animated-number-counters
- https://www.wordfence.com/threat-intel/vulnerabilities/id/fed4591b-b7e3-4a55-a747-1c17f6c6f643?source=cve