WP Activity Log <= 5.2.1 - Unauthenticated Stored Cross-Site Scripting via User_id Parameter
Description
The WP Activity Log plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the user_id parameter in all versions up to, and including, 5.2.1 due to insufficient input sanitization and output escaping. This makes it possible for unauthenticated attackers to inject arbitrary web scripts in pages that will execute whenever an administrative user accesses an injected page.
AI Insight
LLM-synthesized narrative grounded in this CVE's description and references.
Affected products
3<=5.2.1+ 1 more
- (no CPE)range: <=5.2.1
- (no CPE)range: 0
Patches
Vulnerability mechanics
Root cause
"Missing input sanitization and output escaping on cron event hook names and arguments stored in alert data allows stored cross-site scripting."
Attack vector
An unauthenticated attacker can inject arbitrary JavaScript by crafting a cron event whose `args` or `hook` property contains malicious script payloads. When the WP Activity Log plugin logs the cron event creation, execution, or deletion, the unsanitized payload is stored in the alert data. The payload executes in the browser of any administrative user who views the affected activity log page. No authentication is required because WordPress cron events can be triggered externally via `wp-cron.php` and the plugin logs them automatically [CWE-79].
Affected code
The vulnerability resides in the WP Activity Log plugin's `wp-system-sensor.php` file, specifically in the `created_cron_job`, `removed_cron_job`, and `attach_cron_actions` methods where the `$cron->args` and `$cron->hook` values are passed directly into alert data arrays without sanitization or escaping. These unsanitized values are later rendered in the WordPress admin activity log pages, enabling stored XSS.
What the fix does
The patch does not appear in the provided bundle. Based on the advisory, the fix must involve adding proper input sanitization and output escaping to the cron-related alert data fields (`arguments`, `task_name`, etc.) before they are stored or rendered. Without escaping, any attacker-controlled value in a cron event's hook name or arguments becomes executable script content in the admin log viewer.
Preconditions
- configThe WP Activity Log plugin must be installed and active, logging cron events to the admin activity log.
- inputAn attacker must be able to trigger a cron event with a crafted hook name or arguments (e.g., via direct wp-cron.php access or by scheduling a malicious event).
- authAn administrative user must view the activity log page where the malicious cron event entry is displayed.
Generated on Jun 15, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.
References
2News mentions
0No linked articles in our index yet.