{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-111070","assignerOrgId":"b15e7b5b-3da4-40ae-a43c-f7aa60e62599","state":"PUBLISHED","assignerShortName":"Wordfence","dateReserved":"2026-10-15T13:25:24.191Z","datePublished":"2026-10-31T07:46:52.404Z","dateUpdated":"2026-10-31T07:46:52.404Z"},"containers":{"cna":{"providerMetadata":{"orgId":"b15e7b5b-3da4-40ae-a43c-f7aa60e62599","shortName":"Wordfence","dateUpdated":"2026-10-31T07:46:52.404Z"},"affected":[{"vendor":"pluginever","product":"Content Pilot – Autoblogging & Affiliate Marketing Suite","versions":[{"version":"0","status":"affected","lessThanOrEqual":"2.2.4","versionType":"semver"}],"defaultStatus":"unaffected"}],"descriptions":[{"lang":"en","value":"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."}],"title":"Content Pilot <= 2.2.4 - Unauthenticated Stored Cross-Site Scripting via RSS-linked article `<meta name=\"description\">`","references":[{"url":"https://www.wordfence.com/threat-intel/vulnerabilities/id/e3afda72-c10b-46e0-b187-03bcaeb77ea4?source=cve"},{"url":"https://plugins.trac.wordpress.org/browser/wp-content-pilot/tags/2.2.4/includes/class-wpcp-module.php#L425"},{"url":"https://plugins.trac.wordpress.org/browser/wp-content-pilot/tags/2.2.4/includes/class-wpcp-module.php#L315"},{"url":"https://plugins.trac.wordpress.org/browser/wp-content-pilot/tags/2.2.4/includes/modules/class-wpcp-feed.php#L204"},{"url":"https://plugins.trac.wordpress.org/browser/wp-content-pilot/tags/2.2.4/includes/class-wpcp-readability.php#L182"},{"url":"https://plugins.trac.wordpress.org/browser/wp-content-pilot/tags/2.2.4/includes/class-wpcp-readability.php#L274"},{"url":"https://plugins.trac.wordpress.org/browser/wp-content-pilot/tags/2.2.5/includes/class-wpcp-module.php"}],"problemTypes":[{"descriptions":[{"lang":"en","description":"CWE-79 Improper Neutralization of Input During Web Page Generation","cweId":"CWE-79","type":"CWE"}]}],"metrics":[{"cvssV3_1":{"version":"3.1","vectorString":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:L/I:L/A:N","baseScore":5.4,"baseSeverity":"MEDIUM"}}],"credits":[{"lang":"en","type":"finder","value":"Adrien Brunner"}],"timeline":[{"time":"2026-10-15T20:48:22.000Z","lang":"en","value":"Vendor Notified"},{"time":"2026-10-30T19:25:48.000Z","lang":"en","value":"Disclosed"}]}}}