Skip to content

CWE-915: Improperly Controlled Modification of Dynamically-Determined Object Attributes

Base

The product receives input from an upstream component that specifies multiple attributes, properties, or fields that are to be initialized or updated in an object, but it does not properly control which attributes can be modified.

If the object contains attributes that were only intended for internal use, then their unexpected modification could lead to a vulnerability. This weakness is sometimes known by the language-specific mechanisms that make it possible, such as mass assignment, autobinding, or object injection.

Consequences

  • Integrity: Modify Application Data
  • Integrity: Execute Unauthorized Code or Commands
  • Other, Integrity: Varies by Context, Alter Execution Logic

How to prevent it

  • Implementation: If available, use features of the language or framework that allow specification of allowlists of attributes or fields that are allowed to be modified. If possible, prefer allowlists over denylists. For applications written with Ruby on Rails, use the attr_accessible (allowlist) or attr_protected (denylist) macros in each class that may be used in mass assignment.
  • Architecture and Design, Implementation: If available, use the signing/sealing features of the programming language to assure that deserialized data has not been tainted. For example, a hash-based message authentication code (HMAC) could be used to ensure that data has not been modified.
  • Implementation: For any externally-influenced input, check the input against an allowlist of internal object attributes or fields that are allowed to be modified.
  • Implementation, Architecture and Design: Refactor the code so that object attributes or fields do not need to be dynamically identified, and only expose getter/setter functionality for the intended attributes.

Recent advisories

  • GHSA-66wr-7vmr-p5jq — Payload authentication token field handling issue
  • EEF-CVE-2026-93477 — Private action arguments can be set by user input on the bulk destroy and bulk update paths in Ash
  • GHSA-gx83-3vf8-gh7j — jackson-databind: Comparable missing from DefaultBaseTypeLimitingValidator's unsafe base types (incomplete PolymorphicTypeValidator denylist)
  • EEF-CVE-2026-78038 — Job argument injection via :args overrides primary_key and tenant in AshOban
  • GHSA-265m-7826-wjqm — Craft CMS: Authenticated RCE via `condition.config` JSON cleanse bypass
  • GHSA-6vh2-wg4h-4vwj — Flowise: Unauthenticated Property Injection into Flow Execution Context via Ungated `overrideConfig` Spread in Prediction API
  • GHSA-vmjq-hvgq-2wv4 — 9router: Mass assignment in PATCH /api/settings allows authenticated authorization downgrade
  • GHSA-3pjw-73gf-8qr5 — jackson-databind: @JsonIgnore on a Record property is bypassed with a PropertyNamingStrategy
  • GHSA-x5m4-g2cq-52pq — Craft CMS's mass assignment via id in newAttributes during bulk duplicate overwrites existing elements
  • GHSA-9fxm-vc8v-hj55 — jackson-databind's renamed @JsonIgnore'd setters can deserialize via private fields
  • GHSA-5jmj-h7xm-6q6v — jackson-databind has case-insensitive deserialization bypasses per-property @JsonIgnoreProperties
  • EEF-CVE-2026-55736 — Private action arguments can be set by user input in Ash
  • GHSA-rgvg-3wpc-h44p — Budibase: Mass Assignment in Webhook Trigger Allows Cross-Workspace Automation Execution via appId Override
  • DRUPAL-CORE-2026-006 — Drupal core contains a chain of methods that could be exploitable when an insecure deserialization vulnerability exists on the site.
  • DRUPAL-CORE-2026-005 — [SA-CORE-2019-003](https://www.drupal.org/sa-core-2019-003) added protection for fields that store serialized data to disallow direct writes via web services.

All advisories for CWE-915

Is this in your code?

MergeHarbor checks every repository's dependencies against this database, ranks what matters by exploitability and reachability, routes it to the owning team and opens the fix pull request.

Check your repos with MergeHarbor