Skip to main content

NetBox devicetype-library EUVDEUVD-2026-82415

| CVE-2026-54918 MEDIUM
External Control of System or Configuration Setting (CWE-15)
2026-09-17 GitHub_M
5.3
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Open pull request to devicetype-library
  2. Delivery
    Edit NETBOX_DT_LIBRARY_URL to attacker host
  3. Exploit
    Validation harness triggers clone_from/fetch
  4. Execution
    Blind Git request or substituted known-*.json loaded
  5. Impact
    Uniqueness validation bypassed

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A02:2025 - Security Misconfiguration
ASVS 5.0
V13 - Configuration Configuration hardening
Exploitation Conditions

Requires the attacker to submit a pull request to the netbox-community/devicetype-library repository whose validation test harness (pytest over tests/definitions_test.py) then runs against the PR-controlled NETBOX_DT_LIBRARY_URL constant in tests/test_configuration.py, or against attacker-supplied tests/known-*.json caches. Exploitation is bounded to affected revisions before fix commit 8980c690 and is limited by: the request being blind (no arbitrary metadata-service headers, no readable response body), no remote Git hook execution, and - in practice - GitHub Actions typically requiring maintainer approval before fork pull_request workflows execute. Impact is confined to CI integrity (bypassing slug/module/rack uniqueness validation) and outbound blind probing from the runner; there is no impact on any deployed NetBox instance.

Impact

This is a genuinely low-real-world-risk issue despite a network-vector CVSS. The vendor CVSS 3.1 base of 5.3 (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N) reflects only an integrity-limited impact (I:L, C:N, A:N) - no code execution, no data disclosure, no availability loss. The 'network' vector is technically true only because the exploit primitive is an outbound Git smart-HTTP request from a CI runner, not because a production NetBox instance is remotely reachable; the affected artifact is a repository CI/test harness (devicetype-library), NOT a deployed NetBox service. No EPSS score, KEV listing, POC, or SSVC data was provided; per the input this is 'no public exploit identified at time of analysis.' The description itself narrows the primitive: the SSRF is blind (cannot set metadata-service headers, cannot return response bodies) and does not execute remote Git hooks, so it cannot be escalated to RCE or cloud-credential theft the way a full SSRF might. Real value is limited to (a) blind outbound probing from the runner and (b) substituting attacker-controlled known-*.json validation caches to bypass slug/module/rack uniqueness checks. Net: a legitimate CI supply-chain hardening fix, not an urgent production-facing priority. Note the CVSS AC:L is arguably optimistic - GitHub Actions fork pull_request workflows typically require maintainer approval before running, a real gating factor not reflected in the base vector.

Exploit ScenarioDerived

An unauthenticated contributor opens a pull request against netbox-community/devicetype-library that edits the tracked NETBOX_DT_LIBRARY_URL constant in tests/test_configuration.py to point at an attacker-controlled host (or supplies crafted tests/known-*.json caches). When the validation harness runs under pytest, Repo.clone_from and create_remote('upstream').fetch() issue blind Git smart-HTTP requests to that host and/or load the substituted validation data, allowing the PR to slip past slug/module/rack uniqueness validation. No public exploit is identified; the request is blind (no response body, no arbitrary headers) and executes no remote Git hooks.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Sep 17, 2026

Pull-request authors against the community NetBox Device Type Library repository can repoint that repository's own pytest validation harness at an attacker-chosen Git host or substitute forged tests/known-*.json validation caches, allowing CI runs to bypass slug, module, and rack uniqueness checks that the library is supposed to enforce. The exposed constant NETBOX_DT_LIBRARY_URL in tests/test_configuration.py is consumed unvalidated by tests/definitions_test.py during pytest collection through GitPython's Repo.clone_from and create_remote("upstream").fetch(), yielding blind outbound Git smart-HTTP requests to an attacker-selected host with no ability to set arbitrary metadata-service headers or read response bodies, and no remote Git hook execution. The CVSS vector is AV:N/PR:N (unauthenticated from a network perspective), but the assessed impact is confined to CI integrity on repository revisions before fix commit 8980c690097e92f5028c7e6df402b327d827ecd5 - no deployed NetBox instance is affected, no public exploit identified at time of analysis, and GitHub Actions' usual maintainer-approval gate for fork pull_request workflows further limits practical abuse, making this a genuinely low real-world risk issue.

RemediationAI

Adopt commit 8980c690097e92f5028c7e6df402b327d827ecd5 (or any later commit) of netbox-community/devicetype-library, which replaces the free-form NETBOX_DT_LIBRARY_URL constant with a _resolve_netbox_dt_library_url() helper that normalizes trailing slashes and allowlists only https://github.com/netbox-community/devicetype-library[.git], raising ValueError on anything else; if the project needs a mirror, use the new DTL_NETBOX_DT_LIBRARY_URL environment variable set by CI or maintainers rather than a tracked constant - this is the patch status of "Upstream fix available (PR/commit); released patched version not independently confirmed," so pin the commit SHA rather than relying on a tag. Until the fix is deployed, the highest-value compensating control is to ensure GitHub Actions never runs untrusted PR-controlled code without maintainer approval (keep the default "Require approval for first-time contributors" and, ideally, require approval for all fork pull_request runs) and to run the validation harness against the base branch's tests/ directory instead of the PR's, accepting the trade-off that base-branch tests may not reflect legitimate PR test changes and contributors may need a maintainer-run re-validation step. Additional controls with smaller side effects: pin or checksum the tests/known-*.json validation caches and reject PR modifications to them, restrict the workflow's GITHUB_TOKEN permissions and network egress from runners so blind Git fetches to arbitrary hosts fail (side effect: legitimate upstream clones may need an allowlisted GitHub egress rule), and avoid pull_request_target patterns that check out PR head code with elevated secrets. Guidance and fix details are in the advisory at https://github.com/netbox-community/devicetype-library/security/advisories/GHSA-8cfp-3c4q-xr6x, PR https://github.com/netbox-community/devicetype-library/pull/4240, and commit https://github.com/netbox-community/devicetype-library/commit/8980c690097e92f5028c7e6df402b327d827ecd5.

Affected VersionsENISA

devicetype-library < 8980c690097e92f5028c7e6df402b327d827ecd5

Affects your stack

Find out whether the stacks and servers you run are on an affected version.

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The weakness class is CWE-15 (External Control of System or Configuration Setting): a security-relevant configuration value is read from a source that an untrusted party (a fork PR author) can modify. Here the value is the module-level constant NETBOX_DT_LIBRARY_URL in tests/test_configuration.py, a free-form tracked string in the netbox-community/devicetype-library repository (CPE cpe:2.3:a:netbox-community:devicetype-library:*:*:*:*:*:*:*:*). At pytest collection time, tests/definitions_test.py feeds that constant into GitPython primitives (Repo.clone_from and create_remote("upstream").fetch()), so a PR-changed URL triggers Git smart-HTTP traffic toward whatever host the PR author names; because the request is blind, it cannot set arbitrary request headers (blocking typical IMDS header tricks) and cannot read the response body, and Git remote hooks are not executed server-side. The same PR-controlled code path allows loading attacker-supplied tests/known-*.json caches in place of the real validation data, which is the direct cause of the integrity impact: slug, module, and rack uniqueness validation can be satisfied with fabricated entries. The fix in commit 8980c690097e92f5028c7e6df402b327d827ecd5 replaces the raw constant with a _resolve_netbox_dt_library_url() helper that reads an optional DTL_NETBOX_DT_LIBRARY_URL environment override, strips trailing slashes, and rejects anything other than the exact canonical upstream URLs (with or without the .git suffix) via ValueError - i.e., an explicit allowlist that removes the PR author's ability to influence the clone target.

Know when Devicetype Library gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (GitHub_M) PRIMARY 5.3 MEDIUM
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N
vuln.today AI 3.7 LOW

Anyone can open a PR (PR:N), but fork-PR workflow approval and the blind, hook-free primitive raise complexity (AC:H); impact is limited to CI validation integrity (I:L), with no confidentiality or availability effect.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:N
4.0 AV:N/AC:H/AT:N/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
Low
Availability
None

Lifecycle Timeline

1
Patch available
Sep 17, 2026 - 21:19 EUVD

DescriptionCVE.org

NetBox Device Type Library is a collection of community-sourced device type definitions for import into NetBox. In the affected repository revisions, NETBOX_DT_LIBRARY_URL in tests/test_configuration.py is a free-form tracked constant that an unauthenticated pull-request author can change before the validation test harness runs. During pytest collection, tests/definitions_test.py passes the value to Repo.clone_from and create_remote("upstream").fetch(), causing blind Git smart-HTTP requests to an attacker-selected host or loading attacker-controlled tests/known-*.json validation caches. The blind request cannot set arbitrary metadata-service headers or return response bodies, and this path does not execute remote Git hooks, but substituted known data can bypass slug, module, and rack uniqueness validation. This vulnerability is fixed in commit 8980c690097e92f5028c7e6df402b327d827ecd5.

Threat Intelligence Overview

EPSS Score
0.3%
Top 77% exploitable
Prevalence
Low
single community CI/test harness repo, not a deployed production service
Data Quality
5 sources
Confidence: Medium

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
Yes
Human Impact· derived
Medium

Priority Score

26
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +26
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy