CVE-2026-17581: WCPOS (WordPress plugin) · Code Injection
Affects WCPOS (WordPress plugin)Source CVE Database V5
Not known to be exploited · CVSS 7.2 High.
Data as of 14 Nov 2026, 20:44 UTC
- EPSS
- 1.3% chance of exploitation in 30 days – higher than 72% of CVEsExploit Prediction Scoring System: the likelihood attackers will use this flaw soon.
CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:HExploitation evidence
Disclosed: evidence found.
CVE published 16 Aug 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 14 Nov 2026.
What to do
Affected software
| Product | Affected | Fixed in |
|---|---|---|
| kilbotWCPOS – Point of Sale (POS) plugin for WooCommerce | Affected
| Fixed in– |
AI-suggested
Until a fix is available, restrict Shop Manager-level access to trusted users only. Monitor for updates from the vendor kilbot regarding an official patch or workaround. Avoid using the 'thermal' Template Engine if possible, or disable the vulnerable functionality if configurable.
Description
The WCPOS – Point of Sale (POS) plugin for WooCommerce plugin for WordPress is vulnerable to Code Injection via the 'thermal' Template Engine in all versions up to, and including, 1.9.14 due to the Receipt_Renderer_Factory dispatching templates with the 'thermal' engine to the Legacy_Php_Renderer instead of a safe thermal-specific renderer. This makes it possible for authenticated attackers, with Shop Manager-level access and above, to inject arbitrary PHP code into a template post that is subsequently written to a temporary file and executed via PHP's include(), resulting in remote code execution on the server. This requires the attacker to have Shop Manager-level access or above, as the template save path enforces a wcpos_template_settings nonce and the manage_woocommerce_pos capability check.
References
- wordfence.com/threat-intel/vulnerabilities/id/cf3efda0-8609-4a75-a00b-735b49ef260b?source=cve (opens in a new tab)
- plugins.trac.wordpress.org/browser/woocommerce-pos/tags/1.9.10/includes/Services/Receipt_Renderer_Factory.php (opens in a new tab)
- plugins.trac.wordpress.org/browser/woocommerce-pos/tags/1.9.11/includes/Templates/Renderers/Legacy_Php_Renderer.php (opens in a new tab)
- plugins.trac.wordpress.org/browser/woocommerce-pos/tags/1.9.11/includes/Services/Receipt_Renderer_Factory.php (opens in a new tab)
- plugins.trac.wordpress.org/browser/woocommerce-pos/tags/1.9.11/includes/Admin/Templates/Single_Template.php (opens in a new tab)
- plugins.trac.wordpress.org/browser/woocommerce-pos/tags/1.9.11/includes/Templates.php (opens in a new tab)
- plugins.trac.wordpress.org/browser/woocommerce-pos/tags/1.9.11/includes/Templates/Receipt.php (opens in a new tab)
- plugins.trac.wordpress.org/browser/woocommerce-pos/tags/1.9.10/includes/Templates/Renderers/Legacy_Php_Renderer.php (opens in a new tab)
- plugins.trac.wordpress.org/browser/woocommerce-pos/tags/1.9.10/includes/Admin/Templates/Single_Template.php (opens in a new tab)
- plugins.trac.wordpress.org/browser/woocommerce-pos/tags/1.9.10/includes/Templates.php (opens in a new tab)
- plugins.trac.wordpress.org/browser/woocommerce-pos/tags/1.9.10/includes/Templates/Receipt.php (opens in a new tab)
- plugins.trac.wordpress.org/changeset?reponame=&old=3634267%40woocommerce-pos&new=3634267%40woocommerce-pos (opens in a new tab)