Public vulnerability disclosure

CVE-2026-120730

Mass assignment of organization, product and deployment group IDs allows users to write into other organizations and receive their firmware

publishedCWE-639CWE-915

Improperly Controlled Modification of Dynamically-Determined Object Attributes vulnerability in the device API, device forms, signing key and product forms and JITP settings in nerves-hub nerves_hub_web allows an authenticated user who manages devices in any organization to write into other organizations via submitted org_id, product_id and deployment_id fields. The device API create and update actions and the dashboard device forms pass the request parameters to NervesHub.Devices.Device.changeset/2, which casts the organization, product, deployment group and update state as given. The signing key and product forms merge the session's organization into the submitted parameters so that a submitted org_id wins, and the JITP changeset accepts any product_id. Each request requires the manage role only in the user's own organization, and any account can create one. A device placed on another organization's deployment group, or moved into its product, is sent that organization's firmware with a download URL. The user cannot change or control devices that already belong to the other organization, and cannot upload firmware to it. This issue affects nerves_hub: from 1.0.0 before 2.5.3.

Technical severity8.6 highCVSS 4.0 · CNA: EEF
Published2026-11-10Source updated 2026-11-10
Collected2026-11-101 attributed source

Fixes and workarounds

Fix

The fixed release's migration takes every device off a deployment group that belongs to a different product and logs each one. Upgrading undoes nothing else done this way. After upgrading, check the database for devices whose organization does not own their product, for signing keys in org_keys whose created_by_id has never been a member of the key's organization, and for certificate authorities whose JITP product belongs to another organization, and remove what you do not recognize. A device moved wholly into another organization, and a product added to one, leave nothing that sets them apart, so review your organization's devices and products as well.

Source: CNA: EEF

Fix

The reporting source identifies this reference as a patch. Check the advisory for affected versions and supported release branches.

Source: CNA: EEF

Affected products and versions

Affected products, source version ranges and reporting authorities
ProductVersionsAuthority
nerves_hub_web
nerves-hub
nerves-hub/nerves-hub
oci
≥ 1.0.0; < 2.5.3 (affected, other)
Other versions: unaffected
CNA: EEF
nerves_hub_web
nerves-hub
nerves_hub
otp
≥ 1.0.0; < 2.5.3 (affected, semver)
Other versions: unaffected
CNA: EEF
nerves_hub_web
nerves-hub
nerves-hub/nerves_hub_web
github
≥ f58d58233dbd355c58d3a140107ece18e8863f14; < c367d7d17d07f843e78a70d15904665616dde964 (affected, git)
Other versions: unaffected
CNA: EEF

Version ranges are source assertions. Check the vendor advisory and your installed configuration before determining exposure.

CVSS assessments

CVSS scores, vectors and reporting authorities
Version / scoreVectorAuthority
4.0 / 8.6
high
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:NCNA: EEF

Exploit evidence

No exploit evidence in collected sources. This is not proof of no exploitation.

References

For agents and automation

Read public disclosures for free as Markdown or JSON. Compatible browsers also expose native WebMCP tools to search disclosures, read this page, and discover API access.

Use the ontology-linked Cyber API with x402 pay per request, or a Y2 Pro or Elite API key with the intel:cyber scope.

Endpoints and access details

https://api.y2.dev/api/v2/cyber/cves
https://api.y2.dev/api/v2/cyber/cves/{cveId}

A workspace owner or admin can create a Pro or Elite API key. Send Authorization: Bearer <Y2_API_KEY> from your trusted agent runtime.

For x402, omit Authorization and read the HTTP 402 payment challenge before signing a retry. Public browser tools do not make payments.

Agent access JSON · OpenAPI · CVE API guide