CVE-2026-9855: Custom Field Template (WordPress plugin) · SQL Injection
Affects Custom Field Template (WordPress plugin)Source CVE Database V5
Not known to be exploited · CVSS 6.5 Medium.
Data as of 2 Nov 2026, 10:58 UTC
- EPSS
- 0.5% chance of exploitation in 30 days – higher than 47% of CVEsExploit Prediction Scoring System: the likelihood attackers will use this flaw soon.
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:NExploitation evidence
Disclosed: evidence found.
CVE published 19 Sep 2026
Detectable: no evidence on record.
No public nuclei template indexed
Weaponized: no evidence on record.
No public exploit code indexed in Metasploit or Exploit-DB
Exploited in the wildExploited: no evidence on record.
Not in CISA KEV and no source reports exploitation
Observed by OffSeq MirageSeen by Mirage: no evidence on record.
No attack traffic recorded by OffSeq Mirage sensors
A missing step is not evidence of safety. Sources: cve.org (opens in a new tab), the Metasploit, Exploit-DB and nuclei-templates index as of 2 Nov 2026.
What to do
Affected software
| Product | Affected | Fixed in |
|---|---|---|
| hiroaki-miyashitaCustom Field Template | Affected
| Fixed in– |
AI-suggested
Until a fix is available, restrict contributor-level access where possible and monitor for suspicious activity related to the Custom Field Template plugin. Applying principle of least privilege and disabling or removing the plugin if not needed may reduce risk.
Description
The Custom Field Template plugin for WordPress is vulnerable to generic SQL Injection via the 'post_ID' parameter in all versions up to, and including, 2.7.8 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 contributor-level access and above, to append additional SQL queries into already existing queries that can be used to extract sensitive information from the database. The capability check via current_user_can('edit_post', $id) is bypassable because WordPress internally casts $id to an integer for the permission evaluation while the full unsanitized string is preserved and passed to the SQL sink, and a valid nonce — which is also required — can be legitimately obtained by any Contributor-level user from the post edit screen.
References
- wordfence.com/threat-intel/vulnerabilities/id/ce924708-935a-45c0-8959-dd122632cef4?source=cve (opens in a new tab)
- plugins.trac.wordpress.org/browser/custom-field-template/tags/2.7.8/custom-field-template.php (opens in a new tab)
- plugins.trac.wordpress.org/browser/custom-field-template/tags/2.7.8/custom-field-template.php (opens in a new tab)
- plugins.trac.wordpress.org/browser/custom-field-template/tags/2.7.8/custom-field-template.php (opens in a new tab)
- plugins.trac.wordpress.org/browser/custom-field-template/tags/2.7.8/custom-field-template.php (opens in a new tab)
- plugins.trac.wordpress.org/browser/custom-field-template/tags/2.7.7/custom-field-template.php (opens in a new tab)
- plugins.trac.wordpress.org/browser/custom-field-template/tags/2.7.7/custom-field-template.php (opens in a new tab)
- plugins.trac.wordpress.org/browser/custom-field-template/tags/2.7.7/custom-field-template.php (opens in a new tab)
- plugins.trac.wordpress.org/browser/custom-field-template/tags/2.7.7/custom-field-template.php (opens in a new tab)
- plugins.trac.wordpress.org/changeset?reponame=&old=3589466%40custom-field-template&new=3589466%40custom-field-template (opens in a new tab)