Atomic Edge analysis of CVE-2026-54828:
This vulnerability is a missing authorization issue in the Motors – Car Dealership & Classified Listings Plugin for WordPress, affecting versions up to and including 1.4.109. The flaw resides in the AJAX handlers for car media attachment operations, specifically in the functions stm_ajax_add_a_car_media and stm_ajax_add_a_car_images. It allows unauthenticated attackers to manipulate car listing media attachments (images) attached to any listing, bypassing ownership checks and nonce validation.
Root Cause:
The root cause is the absence of a capability check and nonce validation in the AJAX handlers stm_ajax_add_a_car_media and stm_ajax_add_a_car_images. In the vulnerable version, the code only performed a direct comparison between the current user ID and the listing’s owner (via ‘stm_car_user’ meta) but did not first verify the user was logged in. Additionally, these AJAX actions were registered with both wp_ajax_nopriv_ hooks, making them accessible to unauthenticated visitors. The affected functions are located in includes/vehicle_functions.php. Specifically, the vulnerable code paths (lines 1828-1837 for stm_ajax_add_a_car_media and lines 1611-1620 for stm_ajax_add_a_car_images) used a simple integer check on the post_meta ‘stm_car_user’ that could be bypassed if that meta was empty or unset, allowing an attacker to attach media to any post. There was also no nonce check (check_ajax_referer) on these endpoints.
Exploitation:
An attacker can exploit this vulnerability by sending a POST request to /wp-admin/admin-ajax.php with the action parameter set to ‘stm_ajax_add_a_car_media’ or ‘stm_ajax_add_a_car_images’. The request must include the ‘post_id’ parameter (target listing ID) and attachment data (like ‘attachments’ or ‘media_position_*’ parameters). Because the AJAX actions are registered for nopriv (unauthenticated) users and the ownership check fails silently if the ‘stm_car_user’ meta is missing or if the user ID is zero, the attacker can add arbitrary media attachments (images) to any listing. No nonce is required. This allows uploading or linking arbitrary attachments to any car listing in the system, potentially defacing pages or injecting unauthorized content.
Patch Analysis:
The patch introduces several critical fixes. First, the ‘wp_ajax_nopriv_’ registration for both ‘stm_ajax_add_a_car_media’ and ‘stm_ajax_add_a_car_images’ was removed, restricting these actions to authenticated users only (lines 2061 and 1754 of stm_vehicles_listing.php diff). Second, a nonce check was added (check_ajax_referer(‘stm_security_nonce’, ‘security’)) inside stm_ajax_add_a_car_media. Third, the ownership validation was refactored into a new function stm_current_user_can_manage_listing_media (lines 1845-1862) which performs proper checks: (1) ensures the user is logged in, (2) verifies the post type is a listing type, (3) checks current_user_can(‘edit_post’, $post_id) (capability check), and (4) checks the stored user ID against the current user ID. Additionally, function stm_filter_listing_media_attachments validates each attachment ID against the actual post parent, preventing cross-post attachment linking. The patch also hardened input validation: post_id is now properly sanitized with absint and verified to exist. These changes together prevent unauthenticated and unauthorized media manipulation.
Impact:
An unauthenticated attacker can add arbitrary media attachments (e.g., images) to any car listing on the site. This could lead to defacement of listings, injection of misleading or malicious images, or use of the listing’s media storage for hosting unauthorized content. The severity is moderate (CVSS 5.3) because it primarily affects data integrity and content management, but does not directly lead to remote code execution or privilege escalation. However, it could be combined with other attacks for more significant impact (e.g., hosting malicious scripts in uploaded files).

