/

CVE-2026-112287

Severity:

HIGH RISK

(7.1)

Broken Object Authorization (CWE-639) in Krayin CRM Email

CVE-2026-112287

Deferred

Vulnerability type

Category:

Broken Object Level Authorization

CWE:

CWE-639

Impact:

Unauthorized data modification, disclosure, and deletion

Severity:

HIGH RISK

(7.1)

CVSS version:

3.1

Catch this CVE while code is being written

Detect vulnerable code directly in pull requests, so CVEs are fixed before merge.

Summary

Krayin CRM contains a broken object level authorization flaw in EmailController write actions, allowing an authenticated but scope-restricted user to operate on emails belonging to other users by supplying numeric identifiers. Depending on the endpoint and parameters used, an attacker may modify, resend, move to trash, permanently delete, or disclose email-related data.

Krayin CRM contains a broken object level authorization flaw in EmailController write actions, allowing an authenticated but scope-restricted user to operate on emails belonging to other users by supplying numeric identifiers. Depending on the endpoint and parameters used, an attacker may modify, resend, move to trash, permanently delete, or disclose email-related data.

Affected context

The issue occurs in Krayin CRM deployments where authenticated users can reach EmailController update, destroy, mass-update, or mass-destroy actions and email records are selected directly by user-supplied numeric IDs. Risk is higher when authorization checks validate the user's general ability to use an action but do not confirm ownership or scope access for each referenced email and its related lead or person data.

The issue occurs in Krayin CRM deployments where authenticated users can reach EmailController update, destroy, mass-update, or mass-destroy actions and email records are selected directly by user-supplied numeric IDs. Risk is higher when authorization checks validate the user's general ability to use an action but do not confirm ownership or scope access for each referenced email and its related lead or person data.

Exploit preconditions

  • Attack surface: Authenticated EmailController write endpoints
  • Required access: A valid account with access to the affected CRM functions; elevated administrative privileges may not be necessary
  • Trigger point: Supplying identifiers for email records to update, resend, trash, or delete operations
  • Why exploitation is possible: Object-level authorization is insufficient or missing after the application resolves records by numeric ID, allowing cross-user email actions and related-data disclosure
  • Attack surface: Authenticated EmailController write endpoints
  • Required access: A valid account with access to the affected CRM functions; elevated administrative privileges may not be necessary
  • Trigger point: Supplying identifiers for email records to update, resend, trash, or delete operations
  • Why exploitation is possible: Object-level authorization is insufficient or missing after the application resolves records by numeric ID, allowing cross-user email actions and related-data disclosure

Why this happens

The underlying bug is a failure to enforce authorization at the individual object level. EmailController actions appear to rely on a caller's broader action permission or on the supplied record identifier without consistently verifying that the requested email belongs to the caller's permitted scope. This maps to CWE-639: Authorization Bypass Through User-Controlled Key, a weakness in which user-controlled object references can access records outside the intended authorization boundary.

The underlying bug is a failure to enforce authorization at the individual object level. EmailController actions appear to rely on a caller's broader action permission or on the supplied record identifier without consistently verifying that the requested email belongs to the caller's permitted scope. This maps to CWE-639: Authorization Bypass Through User-Controlled Key, a weakness in which user-controlled object references can access records outside the intended authorization boundary.

Potential impact

  • An attacker may modify emails belonging to other users
  • Email messages may be resent or otherwise triggered through unauthorized actions
  • Attackers could move messages to trash or permanently delete them
  • Email subjects, bodies, and linked lead or person data may be disclosed
  • CRM records and communication workflows could be disrupted
  • An attacker may modify emails belonging to other users
  • Email messages may be resent or otherwise triggered through unauthorized actions
  • Attackers could move messages to trash or permanently delete them
  • Email subjects, bodies, and linked lead or person data may be disclosed
  • CRM records and communication workflows could be disrupted

General mitigation guidance

Mitigation generally focuses on enforcing object-level authorization consistently for every email operation.

Common defensive patterns include:

  • Authorizing each referenced email against the authenticated user's tenant, role, ownership, and permitted scope
  • Applying the same authorization checks to single-record and bulk operations
  • Avoiding direct trust in numeric identifiers supplied by clients
  • Restricting query results to authorized objects before updates, deletes, or disclosure
  • Separating sensitive actions such as resend and permanent deletion behind explicit, least-privilege permissions
  • Returning uniform responses that do not reveal whether unauthorized object identifiers exist

Mitigation generally focuses on enforcing object-level authorization consistently for every email operation.

Common defensive patterns include:

  • Authorizing each referenced email against the authenticated user's tenant, role, ownership, and permitted scope
  • Applying the same authorization checks to single-record and bulk operations
  • Avoiding direct trust in numeric identifiers supplied by clients
  • Restricting query results to authorized objects before updates, deletes, or disclosure
  • Separating sensitive actions such as resend and permanent deletion behind explicit, least-privilege permissions
  • Returning uniform responses that do not reveal whether unauthorized object identifiers exist

How teams detect issues like this

Organizations commonly detect this class of issue through:

  • Static analysis and code review checks for record lookups based directly on request parameters
  • Review of controller actions for missing ownership, tenant, role, or scope predicates
  • Tests that exercise object identifiers belonging to other users and authorization scopes
  • API policy checks requiring object-level authorization for read, update, and delete operations
  • Monitoring for repeated cross-scope identifier access, bulk mutations, unexpected resend activity, and deletion attempts

Automated application security testing can help identify inconsistent authorization across single-object and bulk endpoints.

Organizations commonly detect this class of issue through:

  • Static analysis and code review checks for record lookups based directly on request parameters
  • Review of controller actions for missing ownership, tenant, role, or scope predicates
  • Tests that exercise object identifiers belonging to other users and authorization scopes
  • API policy checks requiring object-level authorization for read, update, and delete operations
  • Monitoring for repeated cross-scope identifier access, bulk mutations, unexpected resend activity, and deletion attempts

Automated application security testing can help identify inconsistent authorization across single-object and bulk endpoints.

Sources

SourceLink
github.comgithub.com/krayin/laravel-crm/blob/v2.2.6/packages/Webkul/Admin/src/Http/Controllers/Mail/EmailController.php
github.comgithub.com/krayin/laravel-crm/commit/64b9125f33a7eb2ef9916d0e5fd8215c7f6a8c28
github.comgithub.com/krayin/laravel-crm/pull/2683
github.comgithub.com/krayin/laravel-crm/releases/tag/v2.2.7
vulncheck.comvulncheck.com/advisories/krayin-crm-before-2.2.7-broken-object-level-authorization-in-mail-module

Frequently asked

questions

Exploitation generally requires an authenticated account that can reach the affected email actions. The account may only need limited or scope-restricted access if object-level checks are missing.

The attacker needs access to the relevant EmailController endpoints and a way to submit or influence numeric email identifiers. Administrative privileges may not be required.

Enforce server-side authorization for every referenced email before any read, update, resend, trash, or deletion operation, including bulk requests.

Use centralized object-level authorization policies, scope database queries to the caller's permissions, and include cross-user and cross-tenant identifier tests in application security reviews.

Exploitation generally requires an authenticated account that can reach the affected email actions. The account may only need limited or scope-restricted access if object-level checks are missing.

The attacker needs access to the relevant EmailController endpoints and a way to submit or influence numeric email identifiers. Administrative privileges may not be required.

Enforce server-side authorization for every referenced email before any read, update, resend, trash, or deletion operation, including bulk requests.

Use centralized object-level authorization policies, scope database queries to the caller's permissions, and include cross-user and cross-tenant identifier tests in application security reviews.

Find out what's already
exploitable in your codebase.