{"id":"CVE-2026-111070","kind":"vulnerability","aliases":["CVE-2026-111070"],"related":[],"title":"Content Pilot WordPress plugin: stored XSS via remotely fetched article metadata","description":"The Content Pilot – Autoblogging & Affiliate Marketing Suite plugin for WordPress is vulnerable to Stored Cross-Site Scripting in versions up to, and including, 2.2.4. This is due to the plugin extracting the HTML meta description from each remotely-fetched article (WPCP_Readability::parse_meta()), piping that value through the article template substitution and html_entity_decode() in WPCP_Module::insert_post(), and then calling wp_insert_post() after switching the current user to the configured campaign author (an Administrator with the unfiltered_html capability by default) — so no wp_kses_post sanitization is applied to the attacker-controlled HTML before it is persisted as post_content and rendered on the front end. This makes it possible for unauthenticated attackers who control the content of any RSS source an administrator has configured a Content Pilot RSS campaign to consume to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page.","summary":"Content Pilot, a WordPress autoblogging plugin, saves the meta description of remotely fetched articles into posts without sanitizing it, so injected HTML is stored. An attacker who controls an RSS source an administrator has configured can get scripts to run in pages visitors open.","severity":"medium","cvss":5.4,"epss":0.00221,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["content-pilot","package","wordpress"],"not_affected_if":["no-rss-campaigns","plugin-not-installed"],"how_to_check":"- Check whether the Content Pilot plugin is installed and its version in the WordPress plugins list (`wp plugin get content-pilot` if WP-CLI is used)\n- Check whether any Content Pilot RSS campaigns are configured and which feeds they consume","fix":"- Content Pilot plugin: versions up to and including `2.2.4` are affected; the sources do not name a fixed version","status":"open","published_at":"2026-10-31T08:16:48+00:00","first_seen_at":"2026-10-31T08:34:28+00:00","triaged_at":"2026-10-31T08:35:14+00:00","updated_at":"2026-10-31T18:03:03+00:00","category":"package","confidence":0.7,"triage":{"at":"2026-10-31T08:35:14Z","model":"claude-haiku-5-5","output":{"fix":"- Content Pilot plugin: versions up to and including `2.2.4` are affected; the sources do not name a fixed version","reach":"internet","title":"Content Pilot WordPress plugin: stored XSS via remotely fetched article metadata","impact":"medium","summary":"Content Pilot, a WordPress autoblogging plugin, saves the meta description of remotely fetched articles into posts without sanitizing it, so injected HTML is stored. An attacker who controls an RSS source an administrator has configured can get scripts to run in pages visitors open.","audience":"businesses","category":"package","nicknames":[],"who_cares":["wordpress","content-pilot"],"confidence":0.7,"fix_status":"unknown","needs_auth":"no","worst_case":"Scripts run in visitors' browsers on the site, enabling session theft","analyst_note":"","how_to_check":"- Check whether the Content Pilot plugin is installed and its version in the WordPress plugins list (`wp plugin get content-pilot` if WP-CLI is used)\n- Check whether any Content Pilot RSS campaigns are configured and which feeds they consume","plain_action":"","needs_analyst":false,"not_affected_if":["plugin-not-installed","no-rss-campaigns"],"who_is_affected":"Sites running the Content Pilot plugin at version 2.2.4 or earlier that have configured RSS campaigns pulling from feeds an attacker could influence. Sites without this plugin or without Content Pilot RSS campaigns are not affected by this flaw.","user_interaction":"yes","needs_special_setup":"yes","severity_if_unknown":"medium"},"cost_usd":0.000721,"input_tokens":4366,"output_tokens":569,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-111070':14A,17A '-2026':13A,16A '2.2.4':91C 'access':221C 'administr':55B,147C,198C 'affili':71C 'appli':162C 'arbitrari':210C 'articl':10A,36B,108C,118C 'attack':48B,166C,188C 'attacker-control':165C 'author':145C 'autoblog':27B,70C 'call':132C 'campaign':144C,205C 'capabl':152C 'configur':57B,143C,200C 'consum':207C 'content':1A,19B,23B,68C,175C,192C,202C 'content-pilot':18B 'control':50B,167C,190C 'cross':82C 'cross-sit':81C 'current':139C 'cve':12A,15A 'decod':124C 'default':154C 'descript':32B,102C 'due':94C 'end':181C 'entiti':123C 'execut':217C 'extract':98C 'fetch':9A,35B,107C 'front':180C 'get':59B 'html':44B,100C,122C,151C,168C 'includ':90C 'inject':43B,209C,223C 'insert':128C,134C 'kses':158C 'make':183C 'market':72C 'meta':31B,101C,112C 'metadata':11A 'modul':127C 'open':66B 'packag':21B 'page':64B,214C,224C 'pars':111C 'persist':172C 'pilot':2A,20B,24B,69C,203C 'pipe':113C 'plugin':4A,28B,74C,97C 'possibl':185C 'post':38B,129C,135C,159C,174C 'readabl':110C 'remot':8A,34B,106C 'remotely-fetch':105C 'render':177C 'rss':52B,195C,204C 'run':62B 'sanit':40B,160C 'save':29B 'script':60B,84C,212C 'site':83C 'sourc':53B,196C 'store':5A,46B,80C 'substitut':120C 'suit':73C 'switch':137C 'templat':119C 'unauthent':187C 'unfilt':150C 'user':140C,220C 'valu':115C 'version':86C 'via':7A 'visitor':65B 'vulner':78C 'web':211C 'whenev':218C 'without':39B 'wordpress':3A,22B,26B,76C 'wp':133C,157C 'wpcp':109C,126C 'xss':6A","nicknames":[],"mitigations":[],"who_affected":"Sites running the Content Pilot plugin at version 2.2.4 or earlier that have configured RSS campaigns pulling from feeds an attacker could influence. Sites without this plugin or without Content Pilot RSS campaigns are not affected by this flaw.","tier":"C","verified":{},"analyst_revisit_at":null,"fix_status":"unknown","audience":"businesses","plain_action":null,"first_public_at":"2026-10-31T08:16:48+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:L/I:L/A:N","cvss_by":"security@wordfence.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-111070","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-111070","severity":null,"published_at":"2026-10-31T08:16:48+00:00","modified_at":"2026-10-31T08:16:48+00:00","first_seen_at":"2026-10-31T08:34:28+00:00","fetched_at":"2026-10-31T08:34:28+00:00","note":null},{"source":"epss","external_id":"CVE-2026-111070","url":"https://api.first.org/data/v1/epss?cve=CVE-2026-111070","severity":null,"published_at":null,"modified_at":null,"first_seen_at":"2026-10-31T18:03:03+00:00","fetched_at":"2026-10-31T18:03:03+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"}