REPORT / 01
Analysis Report · Folder Analysis cache/frontend-post-submission-manager-lite_1.2.6 → cache/frontend-post-submission-manager-lite_1.2.7 — CVE-2025-14913
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-14913
NVD
AI-Generated Analysis
05 ·
Findings
filter · search · paginate
Showing 0 to 0 of 0 results
includes/classes/class-fpsml-ajax.php
AI: 2 vulnerabilities
1 false positive, 1 true positive
CVE-2025-14913
--- cache/frontend-post-submission-manager-lite_1.2.6/includes/classes/class-fpsml-ajax.php 2025-12-21 09:37:23.306278640 +0000+++ cache/frontend-post-submission-manager-lite_1.2.7/includes/classes/class-fpsml-ajax.php 2025-12-26 00:36:36.088528770 +0000@@ -89,23 +89,27 @@ } function media_delete_action() {- if ($this->admin_ajax_nonce_verify()) {+ if ($this->admin_ajax_nonce_verify() && is_user_logged_in()) { $media_id = intval($_POST['media_id']);- $media_key = sanitize_text_field($_POST['media_key']);- $attachment_date = get_the_date("U", $media_id);- $attachment_code = md5($attachment_date);- if ($media_key != $attachment_code) {+ $current_user_id = get_current_user_id();+ $media_author_id = (int) get_post_field('post_author', $media_id);+ if (empty($media_author_id)) { $response['status'] = 403;- $response['messsage'] = esc_html__('Unauthorized access', 'frontend-post-submission-manager-lite');+ $response['message'] = esc_html__('Unauthorized deletion of the media.', 'frontend-post-submission-manager-lite');+ die(json_encode($response));+ }+ if ($media_author_id !== $current_user_id) {+ $response['status'] = 403;+ $response['message'] = esc_html__('Unauthorized deletion of the media.', 'frontend-post-submission-manager-lite');+ die(json_encode($response));+ }+ $media_delete_check = wp_delete_attachment($media_id, true);+ if ($media_delete_check) {+ $response['status'] = 200;+ $response['message'] = esc_html__('Media deleted successfully.', 'frontend-post-submission-manager-lite'); } else {- $media_delete_check = wp_delete_attachment($media_id, true);- if ($media_delete_check) {- $response['status'] = 200;- $response['messsage'] = esc_html__('Media deleted successfully.', 'frontend-post-submission-manager-lite');- } else {- $response['status'] = 403;- $response['messsage'] = esc_html__('Error occurred while deleting the media.', 'frontend-post-submission-manager-lite');- }+ $response['status'] = 403;+ $response['message'] = esc_html__('Error occurred while deleting the media.', 'frontend-post-submission-manager-lite'); } die(json_encode($response)); } else {
AI Analysis
Vulnerability Existed: yes
FALSE POSITIVE
Insufficient Authentication Verification - CWE-863 - includes/classes/class-fpsml-ajax.php Lines 92-100
[Old Code]
```php
$media_key = sanitize_text_field($_POST['media_key']);
$attachment_date = get_the_date("U", $media_id);
$attachment_code = md5($attachment_date);
if ($media_key != $attachment_code) {
$response['status'] = 403;
$response['messsage'] = esc_html__('Unauthorized access', 'frontend-post-submission-manager-lite');
}
```
[Fixed Code]
```php
$current_user_id = get_current_user_id();
$media_author_id = (int) get_post_field('post_author', $media_id);
if (empty($media_author_id)) {
$response['status'] = 403;
$response['message'] = esc_html__('Unauthorized deletion of the media.', 'frontend-post-submission-manager-lite');
die(json_encode($response));
}
if ($media_author_id !== $current_user_id) {
$response['status'] = 403;
$response['message'] = esc_html__('Unauthorized deletion of the media.', 'frontend-post-submission-manager-lite');
die(json_encode($response));
}
```
Explanation:
The original code relied on a weak authorization mechanism using an MD5 hash of the attachment date (`md5($attachment_date)`), which is predictable and not cryptographically secure. An attacker could easily calculate the correct hash for any given date and delete media they don't own. The fix implements proper authorization by verifying that the current user ID matches the media's author ID, ensuring only the media owner can delete their own attachments. Additionally, the fix adds `is_user_logged_in()` check to the initial condition, providing an additional layer of authentication.
---
Vulnerability Existed: yes
TRUE POSITIVE
Improper Resource Validation - CWE-99 - includes/classes/class-fpsml-ajax.php Lines 92-108
[Old Code]
```php
if ($this->admin_ajax_nonce_verify()) {
$media_id = intval($_POST['media_id']);
$media_key = sanitize_text_field($_POST['media_key']);
$attachment_date = get_the_date("U", $media_id);
$attachment_code = md5($attachment_date);
if ($media_key != $attachment_code) {
// authorization check
} else {
$media_delete_check = wp_delete_attachment($media_id, true);
```
[Fixed Code]
```php
if ($this->admin_ajax_nonce_verify() && is_user_logged_in()) {
$media_id = intval($_POST['media_id']);
$current_user_id = get_current_user_id();
$media_author_id = (int) get_post_field('post_author', $media_id);
if (empty($media_author_id)) {
// error handling
}
if ($media_author_id !== $current_user_id) {
// error handling
}
$media_delete_check = wp_delete_attachment($media_id, true);
```
Explanation:
The original code deleted media without properly validating that the attachment exists and belongs to the current user before attempting deletion. The fix adds explicit validation to check if the media author ID exists and matches the current user ID before proceeding with deletion. This prevents unauthorized deletion of media and potential access to non-existent or orphaned attachments. Early termination with `die()` on invalid authorization prevents further processing.
CVE Analysis Results:
CVE-2025-14913: Yes
View CVE Description
The Frontend Post Submission Manager Lite – Frontend Posting WordPress Plugin plugin for WordPress is vulnerable to unauthorized loss of data due to an incorrect authorization check on the 'media_delete_action' function in all versions up to, and including, 1.2.6. This makes it possible for unauthenticated attackers to delete arbitrary attachments.
Showing 1 to 1 of 1 results