CVE-2026-19803: Printcart Store <= 2.13.2 - Unauthenticated Arbitrary File Upload via nbu_crop_image 'url' Parameter
The Printcart Store – Web to Print Product Designer for WooCommerce plugin for WordPress is vulnerable to Arbitrary File Upload in all versions up to, and including, 2.13.2. This is due to the nbucropimage AJAX handler accepting a user-supplied url parameter that NbdesignerIO::converturltopath() concatenates onto the uploads base directory without normalizing or stripping ../ sequences, and then deriving both the output directory and output file extension via pathinfo() from the same attacker-controlled path — with no stripImage() call before writeImage() is invoked. This makes it possible for unauthenticated attackers to write attacker-controlled PHP content to arbitrary locations outside the uploads directory, resulting in remote code execution when the written file is subsequently requested. This vulnerability is only exploitable when the nbdesigneruploadpopupstyle site option is set to a (Advanced Upload Popup), which causes the handler to be registered for unauthenticated requests; however, the required save-design nonce is printed on the fully public frontend upload-design-file page, making it trivially obtainable by any anonymous visitor once that configuration is active.
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Configuration
Change nbdesigner_upload_popup_style from "a" (Advanced Upload Popup) to another value to prevent the unauthenticated nbu_crop_image handler from being registered.
Printcart Store – Web to Print Product Designer for WooCommerce nbdesigner_upload_popup_style = Any value other than "a"