{"id":"CVE-2017-20289","kind":"vulnerability","aliases":["CVE-2017-20289"],"related":[],"title":"Broadstreet Ad Widget WordPress plugin: local file inclusion runs attacker-chosen PHP","description":"Broadstreet Ad Widget plugin for WordPress 2.2.0 before 2.12.0 contains a local file inclusion vulnerability that allows authenticated users to execute attacker-chosen PHP files by passing unsanitized input to require in views/modal/index.php. Attackers can supply directory traversal sequences in the 'step' parameter, optionally with a null byte, to include local files and execute PHP code. Exploitation evidence was first observed by the Shadowserver Foundation on 2023-10-19.","summary":"The Broadstreet Ad Widget plugin for WordPress passes unsanitized input to a PHP require call in views/modal/index.php, so directory traversal in the 'step' parameter can include local files. An authenticated user can use this to execute attacker-chosen PHP code on the server.","severity":"high","cvss":7.7,"epss":0.00762,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["package","self-hosted","wordpress"],"not_affected_if":["plugin-2.12.0-or-later","plugin-not-installed"],"how_to_check":"- Check the installed version of the Broadstreet Ad Widget plugin in the WordPress admin plugin list or in `wp-content/plugins/` (the version is in the plugin header).\n- Look for `views/modal/index.php` in the plugin directory and check whether it passes the `step` parameter to `require`.","fix":"- Update the Broadstreet Ad Widget plugin to `2.12.0` or later.\n- If you cannot update, deactivate the plugin until you can.","status":"open","published_at":"2026-10-22T11:17:03+00:00","first_seen_at":"2026-10-23T21:57:30+00:00","triaged_at":"2026-10-25T03:10:25+00:00","updated_at":"2026-10-25T03:10:25+00:00","category":"package","confidence":0.8,"triage":{"at":"2026-10-25T03:10:25Z","model":"claude-haiku-5-5","output":{"fix":"- Update the Broadstreet Ad Widget plugin to `2.12.0` or later.\n- If you cannot update, deactivate the plugin until you can.","reach":"internet","title":"Broadstreet Ad Widget WordPress plugin: local file inclusion runs attacker-chosen PHP","impact":"high","summary":"The Broadstreet Ad Widget plugin for WordPress passes unsanitized input to a PHP require call in views/modal/index.php, so directory traversal in the 'step' parameter can include local files. An authenticated user can use this to execute attacker-chosen PHP code on the server.","category":"package","nicknames":[],"who_cares":["wordpress","self-hosted"],"confidence":0.8,"needs_auth":"yes","worst_case":"Authenticated user runs attacker-chosen PHP code on the server","analyst_note":"","how_to_check":"- Check the installed version of the Broadstreet Ad Widget plugin in the WordPress admin plugin list or in `wp-content/plugins/` (the version is in the plugin header).\n- Look for `views/modal/index.php` in the plugin directory and check whether it passes the `step` parameter to `require`.","needs_analyst":false,"not_affected_if":["plugin-not-installed","plugin-2.12.0-or-later"],"who_is_affected":"Sites running the Broadstreet Ad Widget plugin from version 2.2.0 up to but not including 2.12.0 are exposed. The attacker needs a logged-in account on the site, so sites with only admin-controlled accounts face less risk. Sites that do not run this plugin can skip it.","user_interaction":"no","needs_special_setup":"no","severity_if_unknown":"high"},"cost_usd":0.000641,"input_tokens":3441,"output_tokens":593,"severity_before":"high"},"analyst_status":null,"analyst_note":null,"search":"'-10':137C '-19':138C '-2017':15A,18A '-20289':16A,19A '2.12.0':77C '2.2.0':75C '2023':136C 'ad':2A,27B,70C 'allow':85C 'attack':11A,62B,91C,103C 'attacker-chosen':10A,61B,90C 'authent':54B,86C 'broadstreet':1A,26B,69C 'byte':117C 'call':39B 'chosen':12A,63B,92C 'code':65B,125C 'contain':78C 'cve':14A,17A 'directori':43B,106C 'evid':127C 'execut':60B,89C,123C 'exploit':126C 'file':7A,52B,81C,94C,121C 'first':129C 'foundat':134C 'host':23B 'includ':50B,119C 'inclus':8A,82C 'input':34B,98C 'local':6A,51B,80C,120C 'null':116C 'observ':130C 'option':113C 'packag':20B 'paramet':48B,112C 'pass':32B,96C 'php':13A,37B,64B,93C,124C 'plugin':5A,29B,72C 'requir':38B,100C 'run':9A 'self':22B 'self-host':21B 'sequenc':108C 'server':68B 'shadowserv':133C 'step':47B,111C 'suppli':105C 'travers':44B,107C 'unsanit':33B,97C 'use':57B 'user':55B,87C 'views/modal/index.php':41B,102C 'vulner':83C 'widget':3A,28B,71C 'wordpress':4A,24B,31B,74C","nicknames":[],"mitigations":[],"who_affected":"Sites running the Broadstreet Ad Widget plugin from version 2.2.0 up to but not including 2.12.0 are exposed. The attacker needs a logged-in account on the site, so sites with only admin-controlled accounts face less risk. Sites that do not run this plugin can skip it.","tier":"B","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-22T11:17:03+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","cvss_by":"disclosure@vulncheck.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2017-20289","url":"https://nvd.nist.gov/vuln/detail/CVE-2017-20289","severity":null,"published_at":"2026-10-22T11:17:03+00:00","modified_at":"2026-10-23T22:16:50+00:00","first_seen_at":"2026-10-23T21:57:30+00:00","fetched_at":"2026-10-23T22:29:02+00:00","note":null},{"source":"epss","external_id":"CVE-2017-20289","url":"https://api.first.org/data/v1/epss?cve=CVE-2017-20289","severity":null,"published_at":null,"modified_at":null,"first_seen_at":"2026-10-24T07:15:51+00:00","fetched_at":"2026-10-24T07:15:51+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"}