Summary
CVE-2026-41452 is a missing-authentication vulnerability (CWE-306) in the installer middleware of Krayin CRM (krayin/laravel-crm). An unauthenticated, network-based attacker can overwrite the primary administrator account with arbitrary credentials and obtain full administrative access to the application. It is rated Critical.
Technical details
- Root cause: The
CanInstallmiddleware exempts AJAX requests (those carrying theX-Requested-With: XMLHttpRequestheader) from the "already installed" redirect, so installer endpoints remain reachable even after installation completes. The installer routes also usewithoutMiddleware('web'), removing Laravel CSRF protection, and theadminConfigSetup()method updates the admin user record (user ID 1) directly from request input with no authentication check. - Trigger conditions: A POST request to
/install/api/admin-config-setupincluding the headerX-Requested-With: XMLHttpRequest, against an application that is already fully installed. No authentication and no CSRF token are required. - Attack vector: Network (remote, unauthenticated). The request body supplies attacker-chosen name, email, and password, which overwrite the administrator account via
updateOrInsert(). - Impact: Complete takeover of the administrator account, granting full administrative access to the CRM and its data.
Affected software
- Krayin CRM (krayin/laravel-crm) versions 0 through 2.2.0.
- Krayin CRM (krayin/laravel-crm) version 2.2.4 (an earlier fix was reverted).
- Versions 2.2.1 through 2.2.3 are not affected.
Severity
- CVSS v3.1 base score: 9.8 (Critical) —
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - CVSS v4.0 base score: 9.3 (Critical) —
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
Mitigation and recommended actions
- Immediate: Upgrade to a fixed release once available (versions 2.2.1–2.2.3 contained the fix before it was reverted in 2.2.4); monitor the vendor repository for a re-applied patch and apply it.
- If no patch: Remove the AJAX exception in the
CanInstallmiddleware so the "already installed" check applies to all requests; remove the Installer package from production after setup; block/install/*at the reverse proxy; require authentication and restore CSRF protection on installer routes. Monitor for POST requests to/install/api/admin-config-setupand review administrator account changes.

