CVE-2026-15399: Animated Number Counters <= 3.0 - Authenticated (Editor+) SQL Injection via 'counterid' Parameter
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.
Affected Software
Event History
Frequently Asked Questions
Who can exploit this issue?
An attacker must already be authenticated to WordPress with an Editor-level role or higher. Unauthenticated visitors and lower-privileged users are not described as able to exploit it.
Which installations are affected?
All Animated Number Counters versions up to and including 3.0 are affected. The issue applies where an Editor or higher-privileged account can supply a malicious counterid value.
What could an attacker obtain?
The injection can be used to append SQL to existing queries and extract sensitive information from the WordPress database. The provided impact information identifies confidentiality impact, not modification or availability impact.
How does the second-order behavior affect triage?
The malicious counterid is stored through a write path that uses prepared statements, then later retrieved and concatenated into unprepared read queries. Review existing counter data and actions performed by Editor-level and higher accounts, since the exploit payload may be persisted before the vulnerable query is reached.