FKIE_CVE-2026-35209

Vulnerability from fkie_nvd - Published: 2026-04-06 18:16 - Updated: 2026-07-21 19:10
Summary
defu is software that allows uers to assign default properties recursively. Prior to version 6.1.5, applications that pass unsanitized user input (e.g. parsed JSON request bodies, database records, or config files from untrusted sources) as the first argument to `defu()` are vulnerable to prototype pollution. A crafted payload containing a `__proto__` key can override intended default values in the merged resul. The internal `_defu` function used `Object.assign({}, defaults)` to copy the defaults object. `Object.assign` invokes the `__proto__` setter, which replaces the resulting object's `[[Prototype]]` with attacker-controlled values. Properties inherited from the polluted prototype then bypass the existing `__proto__` key guard in the `for...in` loop and land in the final result. Version 6.1.5 replaces `Object.assign({}, defaults)` with object spread (`{ ...defaults }`), which uses `[[DefineOwnProperty]]` and does not invoke the `__proto__` setter.
Impacted products
Vendor Product Version
unjs defu *

{
  "affected": [
    {
      "affectedData": [
        {
          "product": "defu",
          "vendor": "unjs",
          "versions": [
            {
              "status": "affected",
              "version": "\u003c 6.1.5"
            }
          ]
        }
      ],
      "source": "security-advisories@github.com"
    }
  ],
  "configurations": [
    {
      "nodes": [
        {
          "cpeMatch": [
            {
              "criteria": "cpe:2.3:a:unjs:defu:*:*:*:*:*:node.js:*:*",
              "matchCriteriaId": "8AEDDCDC-B8A2-4F55-8E3C-6CDC5843122B",
              "versionEndExcluding": "6.1.5",
              "vulnerable": true
            }
          ],
          "negate": false,
          "operator": "OR"
        }
      ]
    }
  ],
  "cveTags": [],
  "descriptions": [
    {
      "lang": "en",
      "value": "defu is software that allows uers to assign default properties recursively. Prior to version 6.1.5, applications that pass unsanitized user input (e.g. parsed JSON request bodies, database records, or config files from untrusted sources) as the first argument to `defu()` are vulnerable to prototype pollution. A crafted payload containing a `__proto__` key can override intended default values in the merged resul. The internal `_defu` function used `Object.assign({}, defaults)` to copy the defaults object. `Object.assign` invokes the `__proto__` setter, which replaces the resulting object\u0027s `[[Prototype]]` with attacker-controlled values. Properties inherited from the polluted prototype then bypass the existing `__proto__` key guard in the `for...in` loop and land in the final result. Version 6.1.5 replaces `Object.assign({}, defaults)` with object spread (`{ ...defaults }`), which uses `[[DefineOwnProperty]]` and does not invoke the `__proto__` setter."
    },
    {
      "lang": "es",
      "value": "defu es un software que permite a los usuarios asignar propiedades predeterminadas recursivamente. Antes de la versi\u00f3n 6.1.5, las aplicaciones que pasan entrada de usuario no saneada (p. ej., cuerpos de solicitud JSON analizados, registros de base de datos o archivos de configuraci\u00f3n de fuentes no confiables) como el primer argumento a \u0027defu()\u0027 son vulnerables a la contaminaci\u00f3n de prototipos. Una carga \u00fatil manipulada que contiene una clave \u0027__proto__\u0027 puede anular los valores predeterminados previstos en el resultado fusionado. La funci\u00f3n interna \u0027_defu\u0027 usaba \u0027Object.assign({}, defaults)\u0027 para copiar el objeto de valores predeterminados. \u0027Object.assign\u0027 invoca al  setter  \u0027__proto__\u0027, que reemplaza el \u0027[[Prototype]]\u0027 del objeto resultante con valores controlados por el atacante. Las propiedades heredadas del prototipo contaminado luego eluden la protecci\u00f3n de clave \u0027__proto__\u0027 existente en el bucle \u0027for...in\u0027 y terminan en el resultado final. La versi\u00f3n 6.1.5 reemplaza \u0027Object.assign({}, defaults)\u0027 con la propagaci\u00f3n de objetos (\u0027{ ...defaults }\u0027), que usa \u0027[[DefineOwnProperty]]\u0027 y no invoca al  setter  \u0027__proto__\u0027."
    }
  ],
  "id": "CVE-2026-35209",
  "lastModified": "2026-07-21T19:10:00.107",
  "metrics": {
    "cvssMetricV31": [
      {
        "cvssData": {
          "attackComplexity": "LOW",
          "attackVector": "NETWORK",
          "availabilityImpact": "NONE",
          "baseScore": 7.5,
          "baseSeverity": "HIGH",
          "confidentialityImpact": "NONE",
          "integrityImpact": "HIGH",
          "privilegesRequired": "NONE",
          "scope": "UNCHANGED",
          "userInteraction": "NONE",
          "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N",
          "version": "3.1"
        },
        "exploitabilityScore": 3.9,
        "impactScore": 3.6,
        "source": "security-advisories@github.com",
        "type": "Secondary"
      }
    ],
    "ssvcV203": [
      {
        "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
        "ssvcData": {
          "id": "CVE-2026-35209",
          "options": [
            {
              "exploitation": "none"
            },
            {
              "automatable": "yes"
            },
            {
              "technicalImpact": "partial"
            }
          ],
          "role": "CISA Coordinator",
          "timestamp": "2026-04-06T18:49:21.516737Z",
          "version": "2.0.3"
        }
      }
    ]
  },
  "published": "2026-04-06T18:16:44.157",
  "references": [
    {
      "source": "security-advisories@github.com",
      "tags": [
        "Patch"
      ],
      "url": "https://github.com/unjs/defu/commit/3942bfbbcaa72084bd4284846c83bd61ed7c8b29"
    },
    {
      "source": "security-advisories@github.com",
      "tags": [
        "Issue Tracking",
        "Patch"
      ],
      "url": "https://github.com/unjs/defu/pull/156"
    },
    {
      "source": "security-advisories@github.com",
      "tags": [
        "Release Notes"
      ],
      "url": "https://github.com/unjs/defu/releases/tag/v6.1.5"
    },
    {
      "source": "security-advisories@github.com",
      "tags": [
        "Mitigation",
        "Vendor Advisory"
      ],
      "url": "https://github.com/unjs/defu/security/advisories/GHSA-737v-mqg7-c878"
    }
  ],
  "sourceIdentifier": "security-advisories@github.com",
  "vulnStatus": "Analyzed",
  "weaknesses": [
    {
      "description": [
        {
          "lang": "en",
          "value": "CWE-1321"
        }
      ],
      "source": "security-advisories@github.com",
      "type": "Secondary"
    }
  ]
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.

Sightings

Author Source Type Date Other

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or observed by the user.
  • Confirmed: The vulnerability has been validated from an analyst's perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
  • Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
  • Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
  • Not confirmed: The user expressed doubt about the validity of the vulnerability.
  • Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.

Loading…

Detection rules are retrieved from Rulezet.

Loading…

Loading…

Loading…