{"id":"CVE-2026-104739","kind":"vulnerability","aliases":["CVE-2026-104739"],"related":[],"title":"JS Help Desk WordPress plugin: admin can delete arbitrary server files","description":"The JS Help Desk – AI-Powered Support & Ticketing System plugin for WordPress is vulnerable to arbitrary file deletion due to insufficient file path validation in the setSupportCustomImage function in all versions up to, and including, 5.0.1. This makes it possible for authenticated attackers, with administrator-level access and above, to delete arbitrary files on the server, which can easily lead to remote code execution when the right file is deleted (such as wp-config.php). Exploitation requires a two-step sequence: an administrator first saves a traversal-crafted value in the support_custom_img configuration field, then triggers deletion by uploading a new support custom image, at which point setSupportCustomImage() resolves and deletes the attacker-controlled path.","summary":"The JS Help Desk WordPress plugin up to and including 5.0.1 fails to validate file paths in its support custom image handler. An administrator can make it delete any file on the server, such as wp-config.php, which can lead to remote code execution.","severity":"medium","cvss":4.9,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["package","php","self-hosted","wordpress","wordpress-plugin"],"not_affected_if":["no-untrusted-admins","plugin-above-5.0.1","plugin-not-installed"],"how_to_check":"- Check whether the installed plugin version is `5.0.1` or lower in the WordPress plugins list or the plugin's main file header.\n- Look for the `support_custom_img` setting in the plugin configuration.","fix":null,"status":"open","published_at":"2026-10-30T18:17:15+00:00","first_seen_at":"2026-10-30T18:55:28+00:00","triaged_at":"2026-10-30T18:57:12+00:00","updated_at":"2026-10-30T18:57:12+00:00","category":"package","confidence":0.7,"triage":{"at":"2026-10-30T18:57:12Z","model":"claude-haiku-5-5","output":{"fix":"unknown","reach":"internet","title":"JS Help Desk WordPress plugin: admin can delete arbitrary server files","impact":"high","summary":"The JS Help Desk WordPress plugin up to and including 5.0.1 fails to validate file paths in its support custom image handler. An administrator can make it delete any file on the server, such as wp-config.php, which can lead to remote code execution.","audience":"businesses","category":"package","nicknames":[],"who_cares":["wordpress","wordpress-plugin","php","self-hosted"],"confidence":0.7,"fix_status":"unknown","needs_auth":"yes","worst_case":"Arbitrary server files deleted, possibly enabling remote code execution","analyst_note":"Check whether a patched plugin version exists beyond 5.0.1 and whether the NVD entry or vendor page names one.","how_to_check":"- Check whether the installed plugin version is `5.0.1` or lower in the WordPress plugins list or the plugin's main file header.\n- Look for the `support_custom_img` setting in the plugin configuration.","plain_action":"","needs_analyst":true,"not_affected_if":["plugin-not-installed","plugin-above-5.0.1","no-untrusted-admins"],"who_is_affected":"Sites running the JS Help Desk plugin at version 5.0.1 or earlier. Exploitation needs an administrator account and a two-step sequence: saving a traversal-crafted value in the support custom image setting, then uploading a new custom image. Sites without this plugin, or without untrusted administrator accounts, have less exposure.","user_interaction":"no","needs_special_setup":"unknown","severity_if_unknown":"medium"},"cost_usd":0.00072,"input_tokens":4281,"output_tokens":584,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-104739':14A,17A '-2026':13A,16A '5.0.1':37B,106C 'access':118C 'admin':6A 'administr':50B,116C,153C 'administrator-level':115C 'ai':75C 'ai-pow':74C 'arbitrari':9A,86C,123C 'attack':113C,187C 'attacker-control':186C 'authent':112C 'code':68B,134C 'configur':166C 'control':188C 'craft':159C 'custom':46B,164C,176C 'cve':12A,15A 'delet':8A,54B,88C,122C,141C,170C,184C 'desk':3A,30B,73C 'due':89C 'easili':130C 'execut':69B,135C 'exploit':145C 'fail':38B 'field':167C 'file':11A,41B,56B,87C,92C,124C,139C 'first':154C 'function':98C 'handler':48B 'help':2A,29B,72C 'host':22B 'imag':47B,177C 'img':165C 'includ':36B,105C 'insuffici':91C 'js':1A,28B,71C 'lead':65B,131C 'level':117C 'make':52B,108C 'new':174C 'packag':18B 'path':42B,93C,189C 'php':19B 'plugin':5A,26B,32B,80C 'point':180C 'possibl':110C 'power':76C 'remot':67B,133C 'requir':146C 'resolv':182C 'right':138C 'save':155C 'self':21B 'self-host':20B 'sequenc':151C 'server':10A,59B,127C 'setsupportcustomimag':97C,181C 'step':150C 'support':45B,77C,163C,175C 'system':79C 'ticket':78C 'travers':158C 'traversal-craft':157C 'trigger':169C 'two':149C 'two-step':148C 'upload':172C 'valid':40B,94C 'valu':160C 'version':101C 'vulner':84C 'wordpress':4A,23B,25B,31B,82C 'wordpress-plugin':24B 'wp-config.php':62B,144C","nicknames":[],"mitigations":[],"who_affected":"Sites running the JS Help Desk plugin at version 5.0.1 or earlier. Exploitation needs an administrator account and a two-step sequence: saving a traversal-crafted value in the support custom image setting, then uploading a new custom image. Sites without this plugin, or without untrusted administrator accounts, have less exposure.","tier":"C","verified":{},"analyst_revisit_at":null,"fix_status":"none","audience":"businesses","plain_action":null,"first_public_at":"2026-10-30T18:17:15+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:N/A:N","cvss_by":"security@wordfence.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-104739","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-104739","severity":null,"published_at":"2026-10-30T18:17:15+00:00","modified_at":"2026-10-30T18:33:26+00:00","first_seen_at":"2026-10-30T18:55:28+00:00","fetched_at":"2026-10-30T18:55:28+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}