{"id":20932,"date":"2026-09-11T12:31:18","date_gmt":"2026-09-11T04:31:18","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-19991"},"modified":"2026-09-11T12:31:18","modified_gmt":"2026-09-11T04:31:18","slug":"cve-2026-19991","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-19991","title":{"rendered":"CVE-2026-19991 [HIGH] &#8211; The UsersWP plugin for WordPress is vulnerable to Arbitrary File Deletion in versions up t"},"content":{"rendered":"<p>The UsersWP plugin for WordPress is vulnerable to Arbitrary File Deletion in versions up to, and including, 1.2.70 via the upload_file_remove() AJAX handler. The plugin stores the value of an account &#8216;file&#8217; form field taken directly from $_POST when no real $_FILES upload is provided (process_account() calls uwp_validate_fields() and array_merges the result with the empty output of UsersWP_Files::validate_uploads()). At storage time the value is only checked with validate_file(), which passes any string that does not contain a literal &#8216;..\/&#8217;. When the value is later processed by upload_file_remove(), it is again gated with validate_file() and then normalized through uwp_get_file_relative_url(); that helper performs a global str_replace() of the uploads base URL against the stored URL, allowing a crafted URL containing embedded &#8216;..&#8217; tokens to collapse into &#8216;..\/..\/&#8217; traversal sequences after the last validation. The transformed value is then appended to the uploads base directory and passed to wp_delete_file() without any canonical containment check. This makes it possible for authenticated attackers, with Subscriber-level access and above, to delete arbitrary files on the affected site&#8217;s server (including wp-config.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The UsersWP plugin for WordPress is vulnerable to Arbitrary File Deletion in versions up to, and including, 1.2.70 via the upload_file_remove() AJAX handler. The plugin stores the value of an account <\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-20932","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/20932","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln"}],"about":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/types\/vuln"}],"wp:attachment":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=20932"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=20932"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=20932"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}