/

CVE-2026-93775

Severity:

HIGH RISK

(7.2)

Stored XSS (CWE-79) in Podlove Podcast Publisher Plugin

CVE-2026-93775

Deferred

Vulnerability type

Category:

Stored Cross-Site Scripting

CWE:

CWE-79

Impact:

Client-Side Script Execution and Account Compromise

Severity:

HIGH RISK

(7.2)

CVSS version:

3.1

Catch this CVE while code is being written

Detect vulnerable code directly in pull requests, so CVEs are fixed before merge.

Summary

The Podlove Podcast Publisher WordPress plugin contains a stored cross-site scripting vulnerability in its Auphonic webhook handling. An unauthenticated attacker may cause unsanitized webhook data to be stored and later executed as script when a user views an affected page, particularly because the data is recorded before authentication-key validation.

The Podlove Podcast Publisher WordPress plugin contains a stored cross-site scripting vulnerability in its Auphonic webhook handling. An unauthenticated attacker may cause unsanitized webhook data to be stored and later executed as script when a user views an affected page, particularly because the data is recorded before authentication-key validation.

Affected context

The issue occurs in deployments using the plugin's Auphonic webhook endpoint when incoming POST data is written to plugin logs without sufficient sanitization and is subsequently rendered without appropriate output escaping. The risk is increased when the endpoint accepts requests before validating its authentication key and when privileged WordPress users can view affected log content or pages.

The issue occurs in deployments using the plugin's Auphonic webhook endpoint when incoming POST data is written to plugin logs without sufficient sanitization and is subsequently rendered without appropriate output escaping. The risk is increased when the endpoint accepts requests before validating its authentication key and when privileged WordPress users can view affected log content or pages.

Exploit preconditions

  • Attack surface: The publicly reachable Auphonic webhook endpoint - Required access: No prior authentication may be required to submit webhook data - Trigger point: Processing and later rendering of stored webhook information - Why exploitation is possible: Raw POST data can be persisted before authentication validation and may reach an HTML-rendering context without adequate sanitization or escaping
  • Attack surface: The publicly reachable Auphonic webhook endpoint - Required access: No prior authentication may be required to submit webhook data - Trigger point: Processing and later rendering of stored webhook information - Why exploitation is possible: Raw POST data can be persisted before authentication validation and may reach an HTML-rendering context without adequate sanitization or escaping

Why this happens

The vulnerability results from treating webhook input as trusted data and storing it without applying context-appropriate sanitization, followed by rendering it without reliable output encoding. This behavior maps to CWE-79, Improper Neutralization of Input During Web Page Generation, because attacker-controlled data can become executable browser content when viewed by another user.

The vulnerability results from treating webhook input as trusted data and storing it without applying context-appropriate sanitization, followed by rendering it without reliable output encoding. This behavior maps to CWE-79, Improper Neutralization of Input During Web Page Generation, because attacker-controlled data can become executable browser content when viewed by another user.

Potential impact

  • An attacker may execute arbitrary script in a victim's browser context.
  • Administrative or other authenticated session information could be exposed.
  • The attacker could perform actions permitted to the affected viewer.
  • Plugin or site data could be modified through browser-based requests.
  • Site reputation and user trust could be harmed.
  • An attacker may execute arbitrary script in a victim's browser context.
  • Administrative or other authenticated session information could be exposed.
  • The attacker could perform actions permitted to the affected viewer.
  • Plugin or site data could be modified through browser-based requests.
  • Site reputation and user trust could be harmed.

General mitigation guidance

Mitigation generally centers on reducing trust in webhook input and enforcing context-aware output encoding. Defensive patterns include requiring authentication and integrity checks before accepting or storing webhook content, validating requests against a strict schema and allowlist, sanitizing data at appropriate trust boundaries, escaping all values for their final HTML or attribute context, and avoiding raw request superglobals in rendered logs. Webhook handlers and log viewers should operate with least privilege, and sensitive administrative interfaces should use defense-in-depth controls such as restrictive content security policies where practical.

Mitigation generally centers on reducing trust in webhook input and enforcing context-aware output encoding. Defensive patterns include requiring authentication and integrity checks before accepting or storing webhook content, validating requests against a strict schema and allowlist, sanitizing data at appropriate trust boundaries, escaping all values for their final HTML or attribute context, and avoiding raw request superglobals in rendered logs. Webhook handlers and log viewers should operate with least privilege, and sensitive administrative interfaces should use defense-in-depth controls such as restrictive content security policies where practical.

How teams detect issues like this

Detection can include static analysis for direct rendering of request parameters, use of raw POST superglobals in persistence or template paths, and missing context-specific escaping. Code review should examine webhook authentication order, log rendering, sanitizer coverage, and whether validation occurs before storage. Runtime monitoring can flag unexpected unauthenticated webhook submissions and unusual script-like content in plugin logs. CI policy checks and automated code-review tools may help identify unsafe input-flow patterns.

Detection can include static analysis for direct rendering of request parameters, use of raw POST superglobals in persistence or template paths, and missing context-specific escaping. Code review should examine webhook authentication order, log rendering, sanitizer coverage, and whether validation occurs before storage. Runtime monitoring can flag unexpected unauthenticated webhook submissions and unusual script-like content in plugin logs. CI policy checks and automated code-review tools may help identify unsafe input-flow patterns.

Sources

SourceLink
github.comgithub.com/podlove/podlove-publisher/commit/c716e3d92e4b2c69bf8c5cd985bbeab6950f0cfa
plugins.trac.wordpress.orgplugins.trac.wordpress.org/browser/podlove-podcasting-plugin-for-wordpress/tags/4.5.6/lib/modules/auphonic/auphonic.php#L173
plugins.trac.wordpress.orgplugins.trac.wordpress.org/browser/podlove-podcasting-plugin-for-wordpress/tags/4.5.6/lib/modules/logging/logging.php#L261
plugins.trac.wordpress.orgplugins.trac.wordpress.org/changeset/3713919/podlove-podcasting-plugin-for-wordpress/trunk/lib/modules/logging/logging.php
wordfence.comwordfence.com/threat-intel/vulnerabilities/id/dd3ac29b-1cdf-4de5-bcb9-a97c3f62058d?source=cve

Frequently asked

questions

Yes. The affected webhook endpoint may be reachable over the network, and

exploitation does not necessarily require an authenticated WordPress account.

An attacker generally needs only the ability to submit data to the webhook.

A user who later views the affected rendered content may trigger the stored

script in their browser.

Authenticate and validate webhook requests before storage, treat all webhook

fields as untrusted, and apply context-appropriate output escaping wherever

stored values are displayed.

Use strict input schemas, minimize stored request data, enforce secure

webhook authentication, review all persistence-to-rendering paths, and

apply automated and manual checks for cross-site scripting risks.

Yes. The affected webhook endpoint may be reachable over the network, and

exploitation does not necessarily require an authenticated WordPress account.

An attacker generally needs only the ability to submit data to the webhook.

A user who later views the affected rendered content may trigger the stored

script in their browser.

Authenticate and validate webhook requests before storage, treat all webhook

fields as untrusted, and apply context-appropriate output escaping wherever

stored values are displayed.

Use strict input schemas, minimize stored request data, enforce secure

webhook authentication, review all persistence-to-rendering paths, and

apply automated and manual checks for cross-site scripting risks.

Find out what's already
exploitable in your codebase.