/

CVE-2026-105040

Severity:

HIGH RISK

(8.8)

Mass Assignment (CWE-639) in Eilik NestJS Auth Service

CVE-2026-105040

Deferred

Vulnerability type

Category:

Mass Assignment

CWE:

CWE-639

Impact:

Account Takeover

Severity:

HIGH RISK

(8.8)

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

A mass-assignment vulnerability in the EnergizeLab Eilik NestJS authentication service allows a registered user to submit a user-controlled account identifier during account updates.

If the service accepts that identifier without confirming ownership or authorization, an attacker may change another account's identifying value and take over the account.

A mass-assignment vulnerability in the EnergizeLab Eilik NestJS authentication service allows a registered user to submit a user-controlled account identifier during account updates.

If the service accepts that identifier without confirming ownership or authorization, an attacker may change another account's identifying value and take over the account.

Affected context

The issue occurs in account update functionality where request fields are mapped into account records and the account identifier can be supplied by the client. It becomes risky when the service uses that identifier to select or modify an account without enforcing that the authenticated user owns the target account or has an explicitly authorized administrative role.

The issue occurs in account update functionality where request fields are mapped into account records and the account identifier can be supplied by the client. It becomes risky when the service uses that identifier to select or modify an account without enforcing that the authenticated user owns the target account or has an explicitly authorized administrative role.

Exploit preconditions

  • Attack surface: Authenticated account update endpoint
  • Required access: A registered user account capable of submitting update requests
  • Trigger point: Processing an account update containing a user-controlled account identifier
  • Why exploitation is possible: The service may bind client-supplied fields to protected account attributes and fail to enforce object-level authorization for the selected account
  • Attack surface: Authenticated account update endpoint
  • Required access: A registered user account capable of submitting update requests
  • Trigger point: Processing an account update containing a user-controlled account identifier
  • Why exploitation is possible: The service may bind client-supplied fields to protected account attributes and fail to enforce object-level authorization for the selected account

Why this happens

The underlying bug is an unsafe request-to-model binding pattern in which client-controlled fields, including an account identifier, are accepted as authoritative update parameters. When the application does not separate permitted profile fields from protected identity fields or does not verify ownership of the target object, a user can influence which account is modified. This behavior maps to CWE-639: Authorization Bypass Through User-Controlled Key, with mass assignment providing the mechanism for supplying the unauthorized key or attribute.

The underlying bug is an unsafe request-to-model binding pattern in which client-controlled fields, including an account identifier, are accepted as authoritative update parameters. When the application does not separate permitted profile fields from protected identity fields or does not verify ownership of the target object, a user can influence which account is modified. This behavior maps to CWE-639: Authorization Bypass Through User-Controlled Key, with mass assignment providing the mechanism for supplying the unauthorized key or attribute.

Potential impact

  • An attacker may alter another user's account identifier
  • Account takeover may occur if the changed identifier controls login, recovery, or session association
  • Users may lose access to their accounts
  • Account data or settings could be modified without authorization
  • The service could experience broader integrity and trust impacts
  • An attacker may alter another user's account identifier
  • Account takeover may occur if the changed identifier controls login, recovery, or session association
  • Users may lose access to their accounts
  • Account data or settings could be modified without authorization
  • The service could experience broader integrity and trust impacts

General mitigation guidance

Mitigation generally focuses on reducing client control over account selection and protected attributes.

Common defensive patterns include:

  • Deriving the target account from the authenticated session rather than accepting an arbitrary identifier
  • Allowlisting mutable fields and excluding identifiers, ownership fields, roles, and recovery attributes from general update binding
  • Enforcing object-level authorization before every account read or modification
  • Separating administrative update operations from self-service profile updates
  • Validating identifiers against the authenticated principal and applying least privilege to service operations
  • Requiring additional verification for sensitive identity or recovery changes

Mitigation generally focuses on reducing client control over account selection and protected attributes.

Common defensive patterns include:

  • Deriving the target account from the authenticated session rather than accepting an arbitrary identifier
  • Allowlisting mutable fields and excluding identifiers, ownership fields, roles, and recovery attributes from general update binding
  • Enforcing object-level authorization before every account read or modification
  • Separating administrative update operations from self-service profile updates
  • Validating identifiers against the authenticated principal and applying least privilege to service operations
  • Requiring additional verification for sensitive identity or recovery changes

How teams detect issues like this

Organizations can look for this class of issue through:

  • Static analysis rules that identify direct binding of request bodies to account or entity models
  • Code review checks for client-controlled identifiers in update, delete, and ownership-changing handlers
  • Tests that attempt cross-account modifications using authenticated users with ordinary privileges
  • API schema and policy checks that prohibit protected fields from self-service operations
  • Authorization monitoring for account updates where the requester and target account differ

Automated security review tools may help identify mass-assignment patterns, but endpoint-level authorization tests remain important.

Organizations can look for this class of issue through:

  • Static analysis rules that identify direct binding of request bodies to account or entity models
  • Code review checks for client-controlled identifiers in update, delete, and ownership-changing handlers
  • Tests that attempt cross-account modifications using authenticated users with ordinary privileges
  • API schema and policy checks that prohibit protected fields from self-service operations
  • Authorization monitoring for account updates where the requester and target account differ

Automated security review tools may help identify mass-assignment patterns, but endpoint-level authorization tests remain important.

Sources

SourceLink
github.comgithub.com/xn0tsa/your-secrets-are-safe-with-me
takeonme.orgtakeonme.org/gcves/GCVE-1337-2026-00000000000000011111111111111111111000000000000000000011111101001111111110000000000000000000011111111111111111111000000000000010100/
theverge.comtheverge.com/tech/1010727/eiliko-robot-hack-energize-lab

Frequently asked

questions

It may be exploitable remotely through the account update API when that endpoint is exposed to authenticated users and the request is accepted by the service.

The described condition requires a registered user account capable of submitting account update requests. Administrative access should not be necessary if authorization checks are missing.

Bind self-service updates to the authenticated user's server-side identity, allowlist editable fields, and enforce authorization for every target account before modification.

Use explicit request schemas, exclude protected attributes from mass binding, apply object-level authorization, and include cross-account negative tests in API security testing.

It may be exploitable remotely through the account update API when that endpoint is exposed to authenticated users and the request is accepted by the service.

The described condition requires a registered user account capable of submitting account update requests. Administrative access should not be necessary if authorization checks are missing.

Bind self-service updates to the authenticated user's server-side identity, allowlist editable fields, and enforce authorization for every target account before modification.

Use explicit request schemas, exclude protected attributes from mass binding, apply object-level authorization, and include cross-account negative tests in API security testing.

Find out what's already
exploitable in your codebase.