By NHI Mgmt Group Editorial TeamDomain: Breaches & IncidentsSource: CorgeaPublished June 12, 2026

TL;DR: CVE-2026-45783 in @libp2p/kad-dht lets unauthenticated peers send crafted PUT_VALUE records that bypass namespace validation and keep writing attacker-chosen data until datastore disk is exhausted, according to Corgea’s analysis. For teams running libp2p in server mode, this is an availability and storage-governance failure, not just a protocol edge case.


At a glance

What this is: This is a denial-of-service flaw in @libp2p/kad-dht that lets unauthenticated peers force attacker-controlled records onto disk through a validation failure.

Why it matters: It matters because identity and access assumptions around untrusted peers collapse when a network service accepts durable state from arbitrary remote input without a rejecting control path.

By the numbers:

👉 Read Corgea’s analysis of CVE-2026-45783 in @libp2p/kad-dht


Context

CVE-2026-45783 is a validation and storage-boundary failure in a distributed protocol component. In practical terms, it shows what happens when a service accepts untrusted peer traffic but fails to reject malformed record namespaces before writing durable state to disk. The primary issue is availability, yet the governance lesson is broader: any networked system that turns remote input into persisted state needs explicit trust boundaries and resource limits.

For identity and access teams, the relevance is indirect but real. The bug does not abuse human credentials or NHI secrets, but it does fit a familiar governance pattern: untrusted input bypasses a control point and becomes durable system state. That same failure shape appears in workload identity, service-to-service trust, and other machine-facing controls when validation fails open rather than failing closed.


Key questions

Q: What breaks when untrusted peers can write directly to a DHT datastore?

A: The main failure is that remote traffic becomes durable local state without enough rejection, quota control, or isolation. That can exhaust disk, trigger service instability, and extend impact beyond the DHT process when storage is shared with application workloads. Teams should treat persistence boundaries as security boundaries, not just implementation details.

Q: Why do unauthenticated protocol writes create availability risk even without credential theft?

A: Because availability can collapse when an attacker can turn one accepted message into repeated storage growth. The absence of credential theft does not reduce the risk if the system keeps persisting attacker-controlled data until the filesystem fails. Resource exhaustion is often enough to create a real outage.

Q: How do security teams know whether a network service is failing closed?

A: Check whether malformed input is rejected before any side effect occurs, especially before persistence, logging expansion, or downstream processing. A fail-open parser often returns success-like behaviour on invalid data, which is dangerous in peer-facing services. The control should stop bad input at the boundary, not after it lands on disk.

Q: What should teams do first when a peer-facing service can write unbounded data?

A: Contain the write path before the service is exposed broadly. That means restricting trust boundaries, isolating storage with quotas, and adding rate limits or byte ceilings so one peer cannot consume the entire filesystem budget. Those controls reduce blast radius while you patch the underlying defect.


Technical breakdown

Why the record validator fails open in libp2p kad-dht

The vulnerable path sits in record validation logic that should route keys to namespace-specific checks before allowing persistence. In the affected code, keys that split into fewer than three slash-delimited parts return early instead of being rejected, which means malformed values can skip normal validator enforcement. That is not just a parsing bug. It is a trust-boundary failure that converts malformed remote input into accepted state. Once the validator fails open, the protocol no longer distinguishes between valid namespace records and attacker-crafted data.

Practical implication: Treat validator return paths as security controls and verify that malformed records are rejected, not silently accepted.

How PUT_VALUE traffic turns validation bypass into disk exhaustion

The second issue is the message-processing loop. After each successfully handled message, the inactivity timer resets, so an attacker can keep a connection alive indefinitely by sending valid-looking PUT_VALUE traffic before timeout expiry. With no per-peer byte budget, no hard message ceiling, and no effective rate limiter in this path, the attacker can turn a single connection into a sustained write stream. The outcome is resource exhaustion, especially when datastore growth shares disk with logs, caches, or application data.

Practical implication: Add quotas, per-peer limits, and storage isolation so one peer cannot monopolise the filesystem budget.

Why JavaScript libp2p deployments are especially exposed

The advisory notes that the issue is JavaScript-specific and contrasts this behaviour with go-libp2p-kad-dht, which rejects unrecognised namespaces at the RPC layer. That difference matters because it shows how implementation details, not protocol theory, determine exploitability. In containerised environments, a DHT datastore that shares the same filesystem budget as the application increases blast radius. When disk fills, the impact can extend beyond the DHT component to eviction, telemetry loss, and broader service instability.

Practical implication: Separate datastore capacity from application workloads and test how the node behaves when storage nears quota.


Threat narrative

Attacker objective: Force a reachable libp2p node to consume storage until the service or host becomes unavailable.

  1. Entry occurs when an unauthenticated remote peer opens a normal libp2p connection and sends crafted PUT_VALUE messages to a server-mode kad-dht node.
  2. Escalation happens when malformed record keys bypass namespace validation and are written to the datastore as durable state.
  3. Impact follows as repeated writes exhaust the backing filesystem or quota, causing denial of service and possible workload eviction or application instability.

Read our 52 NHI Breaches Analysis report for a comprehensive view of breaches impacting Non-Human Identities including AI Agents.


NHI Mgmt Group analysis

Fail-open validation is the real control failure here: the exploit works because malformed remote records are accepted instead of rejected. That is a governance problem, not just a coding defect, because the service treats untrusted network input as durable state. For teams running peer-facing infrastructure, the lesson is that validation must fail closed before persistence, especially when remote input can affect shared storage. Practitioners should review every path where protocol parsing can bypass a validator and land data on disk.

Storage is part of the security boundary when protocol services persist remote data: once attacker input can be written repeatedly, availability becomes a resource-governance problem. This is the same control logic that matters in cloud workloads, sidecars, and distributed agents that share a filesystem budget with logs or caches. The named concept here is remote-to-disk trust leakage, where untrusted network data becomes persistent local state without a rejecting gate. Teams should map that boundary explicitly in architecture reviews.

Machine-facing services need the same lifecycle discipline we expect for NHI estates: if a peer, node, or service can keep writing state without review, the absence of a hard stop is itself the vulnerability. In identity programmes, this resembles standing access that is never revoked; in protocol services, it becomes standing write capacity that is never bounded. The practical conclusion is to treat acceptance, persistence, and quota enforcement as a single control chain, not separate engineering concerns.

JavaScript ecosystem risk is increasingly about implementation divergence, not protocol design: the advisory shows that one stack can reject invalid input while another fails open at the library layer. That creates uneven risk across deployments that believe they are running the same distributed protocol. Security architects should compare library behaviour, not just package names, when assessing whether a control is actually enforced in production.

From our research:

What this signals

Remote-to-disk trust leakage is the pattern to watch here: untrusted network input becomes persistent state because a boundary check fails open. That same governance mistake appears in workload identity and service-to-service workflows when systems accept an input before deciding whether it should exist at all. The practical response is to separate acceptance, validation, and persistence into distinct controls, then verify each one under abuse conditions.

For teams managing machine-facing services, the issue is not just patching one package. It is proving that storage limits, parser rejection, and peer-level trust rules remain effective when the service is under pressure. The control objective is blast-radius reduction, not just code correctness, and that is where quota design and runtime monitoring become part of the security baseline.


For practitioners

  • Verify namespace rejection on all DHT inputs Test that malformed record keys are rejected before persistence, and confirm that no early-return path can bypass validators in server-mode nodes.
  • Isolate DHT storage from application disks Put the datastore on a quota-limited volume that cannot starve logs, caches, or application state when a peer sends repeated writes.
  • Enforce per-peer traffic and write ceilings Add hard message-count, byte, and rate limits for PUT_VALUE traffic so one peer cannot keep the write loop alive indefinitely.
  • Inventory vulnerable package versions across builds Scan manifests, lockfiles, and container images for @libp2p/kad-dht versions before 16.2.6, then rebuild every artifact that carries the dependency.

Key takeaways

  • CVE-2026-45783 is a fail-open validation bug that lets untrusted peers turn malformed records into durable disk writes.
  • The impact is practical and measurable: repeated PUT_VALUE traffic can exhaust storage and take down shared workloads, not just the DHT node.
  • The controlling fix is not only patching to 16.2.6, but also isolating storage, enforcing quotas, and proving boundary rejection under abuse.

Standards & Framework Alignment

This section maps relevant standards and security frameworks to the operational risks and controls described in this guidance.

MITRE ATT&CK address the attack and risk surface, while NIST CSF 2.0, NIST SP 800-53 Rev 5, CIS Controls v8 and NIST AI RMF set the governance and control requirements practitioners need to meet.

FrameworkControl / ReferenceRelevance
MITRE ATT&CKTA0001 , Initial Access; TA0040 , ImpactThe issue begins with unauthenticated peer access and ends in storage exhaustion.
NIST CSF 2.0PR.AC-1Trust boundaries and access restrictions are central to limiting peer-facing abuse.
NIST SP 800-53 Rev 5AC-6Least privilege and constrained write scope reduce the blast radius of peer-driven persistence.
CIS Controls v8CIS-5 , Account ManagementShared service and runtime identity governance affects who can interact with exposed infrastructure.
NIST AI RMFMANAGEOperational controls around runtime abuse and persistence risk fit the AI RMF manage function only loosely here.

Audit service exposure and constrain runtime access paths so only intended peers can reach write-capable endpoints.


Key terms

  • Fail-open: A fail-open system defaults to the safer operational state when it cannot trust its own conclusion. In a SOC, that means human review instead of auto-resolution. The control objective is to preserve uncertainty, evidence, and accountability when automation cannot reach a defensible answer.
  • Remote-to-disk trust leakage: Remote-to-disk trust leakage occurs when untrusted network input becomes durable local state without a strong rejection step. It is especially risky in peer-facing services because the exploit can turn protocol traffic into storage exhaustion or data poisoning.
  • Datastore quota isolation: Datastore quota isolation means giving a service a bounded storage pool that cannot consume the rest of the host or workload. It reduces blast radius when a bug or abuse pattern causes repeated writes, especially in containerised and shared-disk environments.

What's in the full analysis

Corgea's full article covers the operational detail this post intentionally leaves for the source:

  • Exact validator logic and code path analysis for the early-return failure in record handling
  • Proof-of-concept structure showing how crafted PUT_VALUE messages persist to the datastore
  • Version and deployment guidance for identifying affected JavaScript libp2p nodes in production
  • Remediation notes on upgrade handling and filesystem isolation for shared workloads

👉 Corgea’s full post covers the validator bypass, proof of concept shape, and remediation path in more detail.

Deepen your knowledge

NHI Foundation Level course, the industry's only accredited NHI security programme, covers NHI governance, secrets management, and machine identity security. It helps practitioners connect identity boundaries to the operational controls that limit blast radius across modern infrastructure.
NHIMG Editorial Note
Published by the NHIMG editorial team on August 20, 2026.
NHI Mgmt Group — the independent authority on Non-Human Identity, IAM, and Agentic AI security. nhimg.org