CVE-2026-104736
CriticalCVSS 9.8Summary
The LearnPress plugin for WordPress in versions up to and including 4.4.10 is vulnerable to PHP Object Injection via deserialization of untrusted input from the 'checkout-email' request parameter during the checkout AJAX action. The value passes through sanitize_text_field(), which does not strip serialized object syntax, is stored in the LearnPress session table, and later fed to unserialize() without an allowed_classes restriction.
Risk Assessment
An unauthenticated attacker can inject a PHP object into the session, which combined with a POP chain in other plugins or themes may lead to arbitrary file deletion, sensitive data retrieval, or remote code execution.
Recommendation
Update the LearnPress plugin to a version newer than 4.4.10; if not possible, consider disabling the plugin or restricting access to the checkout AJAX action.
Other vulnerabilities in LearnPress
See all- CVE-2026-109208High
The LearnPress – WordPress LMS Plugin for WordPress in versions up to and including 4.4.10 is vulnerable to Stored Cross-Site Scripting via the 'quantity (REST) / order_comments (checkout)' parameter due to insufficient input sanitization and output escaping. With guest checkout enabled the attack is fully unauthenticated; with guest checkout disabled, any Subscriber-level user can exploit both vectors.
- CVE-2026-104670High
LearnPress plugin in versions up to and including 4.4.9 contains a Cross Site Scripting (XSS) vulnerability exploitable by an unauthenticated attacker.
- CVE-2026-105397Medium
The LearnPress plugin for WordPress through 4.4.9.1 contains a stored cross-site scripting vulnerability that allows authenticated instructors to inject scripts via quiz question hint and explanation fields. Attackers with the Instructor role can submit unsanitized payloads through the update_question AJAX handler that execute in the session of every student taking the quiz.
- CVE-2026-92538Medium
The LearnPress plugin for WordPress up to version 4.4.7 is vulnerable to reflected DOM-based XSS via the 'orderby' parameter. Unauthenticated attackers can inject scripts that execute when a user clicks a crafted link.
- CVE-2026-39717Medium
Missing authorization vulnerability in the LearnPress WordPress plugin, allowing exploitation of incorrectly configured access control security levels.
- CVE-2026-104403Medium
Authorization Bypass Through User-Controlled Key vulnerability in ThimPress LearnPress allows exploiting incorrectly configured access control security levels. This issue affects LearnPress from n/a through 4.4.9.
- CVE-2026-86449Medium
The LearnPress WordPress plugin before 4.4.7 does not check the user's capabilities before applying a user supplied post status filter in one of its REST routes. Unauthenticated attackers can list courses that are not published, including draft, pending, private, scheduled and trashed ones.
- CVE-2026-86448Low
The LearnPress WordPress plugin before 4.4.7 does not perform any authentication, capability or nonce check before serving a previously generated order export file. Unauthenticated attackers who can determine its identifier can download customer names, purchases, amounts and guest email addresses.
- CVE-2026-86447Medium
The LearnPress WordPress plugin before 4.4.7 does not check the user's capabilities in one of its administrative course tools. Unauthenticated attackers can list every enrolled student's display name and user identifier against the course they are enrolled on, and recover their email addresses through the same handler's search filter.
- CVE-2026-86445Medium
The LearnPress WordPress plugin before 4.4.7 does not check the user's capabilities in one of its administrative template handlers. Unauthenticated attackers can retrieve the text, identifier and type of every published quiz question on the site, along with a keyword search over them, which is content the LearnPress WordPress plugin before 4.4.7 otherwise keeps non-public.
Original NVD description (English source)
The LearnPress plugin for WordPress is vulnerable to PHP Object Injection in versions up to, and including, 4.4.10 via deserialization of untrusted input from the 'checkout-email' request parameter during the checkout AJAX action. The value is passed through sanitize_text_field(), which does not strip serialized object syntax, then stored in the LearnPress session table and later fed to LP_Helper::maybe_unserialize() → unserialize() (without an allowed_classes restriction) by LP_Session_Handler::get() on subsequent requests. This makes it possible for unauthenticated attackers to inject a PHP Object.
Vulnerability data from NVD (NIST) · CISA KEV · EPSS

