REPORT / 01
Analysis Report · Folder Analysis cache/wp-rss-aggregator_5.0.10 → cache/wp-rss-aggregator_5.0.11 — CVE-2025-14745
Shared security patch analysis results
02 ·
Lifecycle actions
cancel · resume · skip · regenerate
03 ·
Share this analysis
copy link · embed report
03 ·
CVE Security Analysis & Writeups
ai-generated · per cve
Comprehensive security analysis generated by AI for each confirmed CVE match. Click on a CVE to view the detailed writeup including vulnerability background, technical details, patch analysis, and PoC guide.
CVE-2025-14745
NVD
AI-Generated Analysis
05 ·
Findings
filter · search · paginate
Showing 0 to 0 of 0 results
core/src/Display/LayoutTrait.php
AI: 2 vulnerabilities
2 true positives
CVE-2025-14745
--- cache/wp-rss-aggregator_5.0.10/core/src/Display/LayoutTrait.php 2026-01-16 00:19:53.339210757 +0000+++ cache/wp-rss-aggregator_5.0.11/core/src/Display/LayoutTrait.php 2026-01-16 00:21:25.056966156 +0000@@ -131,7 +131,7 @@ return sprintf( '<span class="feed-author">%s</span>',- rtrim( $this->ds->authorPrefix ) . ' ' . $authorName+ esc_html( rtrim( $this->ds->authorPrefix ) . ' ' . $authorName ) ); } @@ -207,10 +207,17 @@ } $tag = $block ? 'div' : 'span';+ $prefix = esc_html( $this->ds->sourcePrefix );++ // $srcName is already HTML from renderLink, so it doesn't need escaping again.+ // If linking is disabled, $srcName is just the source name string, which needs escaping.+ if ( ! ( $this->ds->linkSource && $links && ! empty( $url ) ) ) {+ $srcName = esc_html( $srcName );+ } return <<<HTML <{$tag} class="feed-source">- {$this->ds->sourcePrefix} {$srcName}+ {$prefix} {$srcName} </{$tag}> HTML; }
AI Analysis
Let me analyze the provided diff directly based on the security fix patterns shown:
---
**Vulnerability 1:**
Vulnerability Existed: yes
TRUE POSITIVE
Cross-Site Scripting (XSS) - CWE-79 - core/src/Display/LayoutTrait.php Lines 134
**Old Code:**
```php
rtrim( $this->ds->authorPrefix ) . ' ' . $authorName
```
**Fixed Code:**
```php
esc_html( rtrim( $this->ds->authorPrefix ) . ' ' . $authorName )
```
**Explanation:**
The original code concatenated `$this->ds->authorPrefix` and `$authorName` without HTML escaping before outputting them in an HTML `<span>` tag. If either variable contained user-controlled or untrusted data with HTML/JavaScript content, it could lead to stored or reflected XSS attacks. The fix wraps the entire concatenation with `esc_html()`, which escapes HTML special characters, preventing script injection.
---
**Vulnerability 2:**
Vulnerability Existed: yes
TRUE POSITIVE
Cross-Site Scripting (XSS) - CWE-79 - core/src/Display/LayoutTrait.php Lines 210-220
**Old Code:**
```php
$tag = $block ? 'div' : 'span';
return <<<HTML
<{$tag} class="feed-source">
{$this->ds->sourcePrefix} {$srcName}
</{$tag}>
HTML;
```
**Fixed Code:**
```php
$tag = $block ? 'div' : 'span';
$prefix = esc_html( $this->ds->sourcePrefix );
// $srcName is already HTML from renderLink, so it doesn't need escaping again.
// If linking is disabled, $srcName is just the source name string, which needs escaping.
if ( ! ( $this->ds->linkSource && $links && ! empty( $url ) ) ) {
$srcName = esc_html( $srcName );
}
return <<<HTML
<{$tag} class="feed-source">
{$prefix} {$srcName}
</{$tag}>
HTML;
```
**Explanation:**
The original code directly interpolated `$this->ds->sourcePrefix` and `$srcName` into HTML without escaping. The fix addresses two concerns: (1) `$this->ds->sourcePrefix` is now always escaped with `esc_html()` before interpolation, preventing XSS from this source. (2) `$srcName` is conditionally escaped—it remains unescaped when it's already HTML from `renderLink()`, but is escaped with `esc_html()` when it's a plain source name string that could contain unescaped user input. This prevents XSS while maintaining proper HTML rendering for linked sources.
CVE Analysis Results:
CVE-2025-14745: Yes
View CVE Description
The RSS Aggregator – RSS Import, News Feeds, Feed to Post, and Autoblogging plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the plugin's 'wp-rss-aggregator' shortcode in all versions up to, and including, 5.0.10 due to insufficient input sanitization and output escaping on user supplied attributes. This makes it possible for authenticated attackers, with contributor-level access and above, to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page.
core/src/Display/ListLayout.php
AI: 1 vulnerabilities
1 true positive
CVE-2025-14745
--- cache/wp-rss-aggregator_5.0.10/core/src/Display/ListLayout.php 2026-01-16 00:19:53.339210757 +0000+++ cache/wp-rss-aggregator_5.0.11/core/src/Display/ListLayout.php 2026-01-16 00:21:25.064966657 +0000@@ -2,10 +2,10 @@ namespace RebelCode\Aggregator\Core\Display; -use RebelCode\Aggregator\Core\Display\DisplayState;-use RebelCode\Aggregator\Core\Display\LayoutInterface;-use RebelCode\Aggregator\Core\Display\LayoutTrait; use RebelCode\Aggregator\Core\IrPost;+use RebelCode\Aggregator\Core\Display\LayoutTrait;+use RebelCode\Aggregator\Core\Display\LayoutInterface;+use RebelCode\Aggregator\Core\Display\DisplayState; class ListLayout implements LayoutInterface { @@ -33,9 +33,10 @@ $listStart = ( $state->page - 1 ) * $this->ds->numItems + 1; $listItems = $this->renderItems( $posts, fn ( IrPost $post ) => $this->item( $post ) );+ $htmlClass = esc_attr( $this->ds->htmlClass ); return <<<HTML- <div class="wp-rss-aggregator wpra-list-template {$this->ds->htmlClass}">+ <div class="wp-rss-aggregator wpra-list-template {$htmlClass}"> <{$listType} class="rss-aggregator wpra-item-list {$listClass}" start="{$listStart}"> {$listItems} </{$listType}>@@ -44,8 +45,10 @@ } private function item( IrPost $post ): string {+ $htmlClass = esc_attr( $this->ds->htmlClass );+ return <<<HTML- <li class="wpra-item feed-item {$this->ds->htmlClass}">+ <li class="wpra-item feed-item {$htmlClass}"> {$this->renderTitle($post)} <div class="wprss-feed-meta">
AI Analysis
Vulnerability Existed: yes
TRUE POSITIVE
Cross-Site Scripting (XSS) - CWE-79 - core/src/Display/ListLayout.php Lines 36-40, 48-51
Old Code:
```php
return <<<HTML
<div class="wp-rss-aggregator wpra-list-template {$this->ds->htmlClass}">
```
and
```php
return <<<HTML
<li class="wpra-item feed-item {$this->ds->htmlClass}">
```
Fixed Code:
```php
$htmlClass = esc_attr( $this->ds->htmlClass );
return <<<HTML
<div class="wp-rss-aggregator wpra-list-template {$htmlClass}">
```
and
```php
$htmlClass = esc_attr( $this->ds->htmlClass );
return <<<HTML
<li class="wpra-item feed-item {$htmlClass}">
```
Explanation:
The vulnerability existed because `$this->ds->htmlClass` was being directly interpolated into HTML attributes without sanitization. An attacker who could control the `htmlClass` property could inject malicious JavaScript through event handlers (e.g., `" onclick="alert('xss')"`). The fix applies the `esc_attr()` WordPress sanitization function to escape the value before inserting it into the HTML attribute, preventing XSS attacks. The `esc_attr()` function properly escapes quotes and special characters that could break out of the attribute context.
CVE Analysis Results:
CVE-2025-14745: Yes
View CVE Description
The RSS Aggregator – RSS Import, News Feeds, Feed to Post, and Autoblogging plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the plugin's 'wp-rss-aggregator' shortcode in all versions up to, and including, 5.0.10 due to insufficient input sanitization and output escaping on user supplied attributes. This makes it possible for authenticated attackers, with contributor-level access and above, to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page.
Showing 1 to 2 of 2 results