{"api_version":"1","generated_at":"2026-10-24T09:35:49+00:00","cve":"CVE-2026-15399","urls":{"html":"https://cve.report/CVE-2026-15399","api":"https://cve.report/api/cve/CVE-2026-15399.json","docs":"https://cve.report/api","cve_org":"https://www.cve.org/CVERecord?id=CVE-2026-15399","nvd":"https://nvd.nist.gov/vuln/detail/CVE-2026-15399"},"summary":{"title":"Animated Number Counters <= 3.0 - Authenticated (Editor+) SQL Injection via 'counterid' Parameter","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.","state":"PUBLISHED","assigner":"Wordfence","published_at":"2026-10-13 08:17:00","updated_at":"2026-10-13 14:17:36"},"problem_types":["CWE-89","CWE-89 CWE-89 Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection')"],"metrics":[{"version":"3.1","source":"security@wordfence.com","type":"Secondary","score":"4.9","severity":"MEDIUM","vector":"CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:N/A:N","data":{"version":"3.1","vectorString":"CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:N/A:N","baseScore":4.9,"baseSeverity":"MEDIUM","attackVector":"NETWORK","attackComplexity":"LOW","privilegesRequired":"HIGH","userInteraction":"NONE","scope":"UNCHANGED","confidentialityImpact":"HIGH","integrityImpact":"NONE","availabilityImpact":"NONE"}},{"version":"3.1","source":"CNA","type":"DECLARED","score":"4.9","severity":"MEDIUM","vector":"CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:N/A:N","data":{"baseScore":4.9,"baseSeverity":"MEDIUM","vectorString":"CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:N/A:N","version":"3.1"}}],"references":[{"url":"https://plugins.trac.wordpress.org/browser/animated-number-counters/tags/2.7/settings/helper/functions.php#L312","name":"https://plugins.trac.wordpress.org/browser/animated-number-counters/tags/2.7/settings/helper/functions.php#L312","refsource":"security@wordfence.com","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://plugins.trac.wordpress.org/browser/animated-number-counters/tags/2.8/settings/helper/functions.php#L312","name":"https://plugins.trac.wordpress.org/browser/animated-number-counters/tags/2.8/settings/helper/functions.php#L312","refsource":"security@wordfence.com","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://plugins.trac.wordpress.org/browser/animated-number-counters/tags/2.7/settings/counters/counter-01.php#L61","name":"https://plugins.trac.wordpress.org/browser/animated-number-counters/tags/2.7/settings/counters/counter-01.php#L61","refsource":"security@wordfence.com","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://plugins.trac.wordpress.org/browser/animated-number-counters/tags/2.8/settings/counters/counter-01.php#L61","name":"https://plugins.trac.wordpress.org/browser/animated-number-counters/tags/2.8/settings/counters/counter-01.php#L61","refsource":"security@wordfence.com","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://wordpress.org/plugins/animated-number-counters","name":"https://wordpress.org/plugins/animated-number-counters","refsource":"security@wordfence.com","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://plugins.trac.wordpress.org/browser/animated-number-counters/tags/2.7/settings/helper/number-counter-save.php#L8","name":"https://plugins.trac.wordpress.org/browser/animated-number-counters/tags/2.7/settings/helper/number-counter-save.php#L8","refsource":"security@wordfence.com","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://plugins.trac.wordpress.org/browser/animated-number-counters/tags/2.8/settings/helper/number-counter-save.php#L8","name":"https://plugins.trac.wordpress.org/browser/animated-number-counters/tags/2.8/settings/helper/number-counter-save.php#L8","refsource":"security@wordfence.com","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://www.wordfence.com/threat-intel/vulnerabilities/id/fed4591b-b7e3-4a55-a747-1c17f6c6f643?source=cve","name":"https://www.wordfence.com/threat-intel/vulnerabilities/id/fed4591b-b7e3-4a55-a747-1c17f6c6f643?source=cve","refsource":"security@wordfence.com","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://plugins.trac.wordpress.org/changeset/3603796/animated-number-counters/trunk/settings/counters/counter-01.php","name":"https://plugins.trac.wordpress.org/changeset/3603796/animated-number-counters/trunk/settings/counters/counter-01.php","refsource":"security@wordfence.com","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://plugins.trac.wordpress.org/browser/animated-number-counters/tags/2.7/settings/counters/counter-01.php#L20","name":"https://plugins.trac.wordpress.org/browser/animated-number-counters/tags/2.7/settings/counters/counter-01.php#L20","refsource":"security@wordfence.com","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://plugins.trac.wordpress.org/browser/animated-number-counters/tags/2.8/settings/counters/counter-01.php#L20","name":"https://plugins.trac.wordpress.org/browser/animated-number-counters/tags/2.8/settings/counters/counter-01.php#L20","refsource":"security@wordfence.com","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-15399","name":"CVE Program record","refsource":"CVE.ORG","tags":["canonical"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-15399","name":"NVD vulnerability detail","refsource":"NVD","tags":["canonical","analysis"]}],"affected":[{"source":"CNA","vendor":"wpmart","product":"Animated Number Counters","version":"affected 3.0 semver","platforms":[]}],"timeline":[{"source":"CNA","time":"2026-07-10T15:10:21.000Z","lang":"en","value":"Vendor Notified"},{"source":"CNA","time":"2026-10-12T19:05:41.000Z","lang":"en","value":"Disclosed"}],"solutions":[],"workarounds":[],"exploits":[],"credits":[{"source":"CNA","value":"Wordfence PRISM","lang":"en"}],"nvd_cpes":[],"vendor_comments":[],"enrichments":{"kev":null,"epss":null,"legacy_qids":[]},"source_records":{"cve_program":{"containers":{"adp":[{"metrics":[{"other":{"content":{"id":"CVE-2026-15399","options":[{"Exploitation":"none"},{"Automatable":"no"},{"Technical Impact":"partial"}],"role":"CISA Coordinator","timestamp":"2026-10-13T13:16:35.780895Z","version":"2.0.3"},"type":"ssvc"}}],"providerMetadata":{"dateUpdated":"2026-10-13T13:16:47.378Z","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","shortName":"CISA-ADP"},"title":"CISA ADP Vulnrichment"}],"cna":{"affected":[{"defaultStatus":"unaffected","product":"Animated Number Counters","vendor":"wpmart","versions":[{"lessThanOrEqual":"3.0","status":"affected","version":"0","versionType":"semver"}]}],"credits":[{"lang":"en","type":"finder","value":"Wordfence PRISM"}],"descriptions":[{"lang":"en","value":"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."}],"metrics":[{"cvssV3_1":{"baseScore":4.9,"baseSeverity":"MEDIUM","vectorString":"CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:N/A:N","version":"3.1"}}],"problemTypes":[{"descriptions":[{"cweId":"CWE-89","description":"CWE-89 Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection')","lang":"en","type":"CWE"}]}],"providerMetadata":{"dateUpdated":"2026-10-13T07:46:23.915Z","orgId":"b15e7b5b-3da4-40ae-a43c-f7aa60e62599","shortName":"Wordfence"},"references":[{"url":"https://www.wordfence.com/threat-intel/vulnerabilities/id/fed4591b-b7e3-4a55-a747-1c17f6c6f643?source=cve"},{"url":"https://plugins.trac.wordpress.org/browser/animated-number-counters/tags/2.8/settings/counters/counter-01.php#L61"},{"url":"https://plugins.trac.wordpress.org/browser/animated-number-counters/tags/2.8/settings/helper/functions.php#L312"},{"url":"https://plugins.trac.wordpress.org/browser/animated-number-counters/tags/2.8/settings/helper/number-counter-save.php#L8"},{"url":"https://plugins.trac.wordpress.org/browser/animated-number-counters/tags/2.8/settings/counters/counter-01.php#L20"},{"url":"https://plugins.trac.wordpress.org/browser/animated-number-counters/tags/2.7/settings/counters/counter-01.php#L61"},{"url":"https://plugins.trac.wordpress.org/browser/animated-number-counters/tags/2.7/settings/helper/functions.php#L312"},{"url":"https://plugins.trac.wordpress.org/browser/animated-number-counters/tags/2.7/settings/helper/number-counter-save.php#L8"},{"url":"https://plugins.trac.wordpress.org/browser/animated-number-counters/tags/2.7/settings/counters/counter-01.php#L20"},{"url":"https://wordpress.org/plugins/animated-number-counters"},{"url":"https://plugins.trac.wordpress.org/changeset/3603796/animated-number-counters/trunk/settings/counters/counter-01.php"}],"timeline":[{"lang":"en","time":"2026-07-10T15:10:21.000Z","value":"Vendor Notified"},{"lang":"en","time":"2026-10-12T19:05:41.000Z","value":"Disclosed"}],"title":"Animated Number Counters <= 3.0 - Authenticated (Editor+) SQL Injection via 'counterid' Parameter"}},"cveMetadata":{"assignerOrgId":"b15e7b5b-3da4-40ae-a43c-f7aa60e62599","assignerShortName":"Wordfence","cveId":"CVE-2026-15399","datePublished":"2026-10-13T07:46:23.915Z","dateReserved":"2026-07-10T13:26:55.433Z","dateUpdated":"2026-10-13T13:16:47.378Z","state":"PUBLISHED"},"dataType":"CVE_RECORD","dataVersion":"5.2"},"nvd":{"publishedDate":"2026-10-13 08:17:00","lastModifiedDate":"2026-10-13 14:17:36","problem_types":["CWE-89","CWE-89 CWE-89 Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection')"],"metrics":{"cvssMetricV31":[{"source":"security@wordfence.com","type":"Secondary","cvssData":{"version":"3.1","vectorString":"CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:N/A:N","baseScore":4.9,"baseSeverity":"MEDIUM","attackVector":"NETWORK","attackComplexity":"LOW","privilegesRequired":"HIGH","userInteraction":"NONE","scope":"UNCHANGED","confidentialityImpact":"HIGH","integrityImpact":"NONE","availabilityImpact":"NONE"},"exploitabilityScore":1.2,"impactScore":3.6}],"ssvcV203":[{"source":"134c704f-9b21-4f2e-91b3-4a467353bcc0","ssvcData":{"timestamp":"2026-10-13T13:16:35.780895Z","id":"CVE-2026-15399","options":[{"exploitation":"none"},{"automatable":"no"},{"technicalImpact":"partial"}],"role":"CISA Coordinator","version":"2.0.3"}}]},"configurations":[]},"legacy_mitre":{"record":{"CveYear":"2026","CveId":"15399","Ordinal":"1","Title":"Animated Number Counters <= 3.0 - Authenticated (Editor+) SQL In","CVE":"CVE-2026-15399","Year":"2026"},"notes":[{"CveYear":"2026","CveId":"15399","Ordinal":"1","NoteData":"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.","Type":"Description","Title":"Animated Number Counters <= 3.0 - Authenticated (Editor+) SQL In"}]}}}