CVE-2026-15399
4.9MediumPublished 13 Oct 2026 · NVD status: Deferred · AI triage by gemini-3.8-flash
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- High
- User interaction
- None
- Impact
- High impact on confidentiality
- Weakness
- CWE-89
Impact
Authenticated attackers with editor-level access can extract sensitive data from the WordPress database via SQL injection. Exploitation requires valid editor or higher credentials.
Root cause
A second-order SQL injection occurs because stored counter values are concatenated unsanitized into unprepared database queries on the read path.
Affected systems
Animated Number Counters plugin for WordPress through version 3.0
CVSS v3.1 · CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:N/A:N
Fix & remediation
Upgrade Animated Number Counters past version 3.0 when a patched release is available, or deactivate and delete the plugin immediately if patching cannot occur.
$ wp plugin deactivate animated-number-countersAI-suggested. Run it in staging first and check it against the vendor advisory. Why?
NVD description
The Animated Number Counters plugin for WordPress is vulnerable to generic SQL Injection via the 'counterid' parameter in all versions up to, and including, 3.0 due to insufficient escaping on the user supplied parameter and lack of sufficient preparation on the existing SQL query. This makes it possible for authenticated attackers, with editor-level access and above, to append additional SQL queries into already existing queries that can be used to extract sensitive information from the database. This is a second-order SQL injection: the write path correctly uses $wpdb->prepare(), but that protection is not carried forward to the read path, where the retrieved value is concatenated unsanitized into unprepared queries in both a single-quoted string context and a bare numeric context.
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