CVE-2026-49859: Deno Network Access Control Bypass via DNS Resolution
Deno, a modern JavaScript and TypeScript runtime, contains a network access control bypass in versions before 2.8.1. When a script uses fetch() to make network requests, Deno's security model allows administrators to block connections to specific IP addresses or networks using the --deny-net flag. However, the vulnerability exists because Deno only checked the hostname against the deny list but failed to verify the actual IP addresses that hostname resolved to. An attacker could craft a malicious domain name that appears to pass the hostname restrictions yet resolves to a blocked IP address, allowing unauthorized network access. This was patched in version 2.8.1.
Source data · NVD / CISA · public domain
- CVSS
- 3.1 · 5.2 MEDIUM · CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N
- Weaknesses (CWE)
- CWE-693, CWE-918
- Affected products
- 1 configuration(s)
- Published / Modified
- 2026-06-23 / 2026-06-29
NVD description (verbatim)
Deno is a JavaScript, TypeScript, and WebAssembly runtime. Prior to 2.8.1, when fetch() was called, Deno checked the destination hostname against --deny-net rules but did not re-check the IP addresses that hostname resolved to. An attacker-controlled script could use a specially crafted domain name that passes the hostname check yet resolves to a denied IP, bypassing the network restriction entirely. This vulnerability is fixed in 2.8.1.
1 reference(s) · View on NVD →
SEC.co analysis · AI-assisted, reviewed against source
Technical summary
The vulnerability stems from incomplete DNS resolution validation in Deno's fetch() implementation. The runtime enforced --deny-net rules at the hostname layer during the initial permission check, but did not re-validate against the resolved IP addresses before establishing the connection. This creates a time-of-check-time-of-use (TOCTTOU) style gap where an attacker-controlled script can specify a domain that passes hostname-level validation but resolves to an IP in the denied network range. The issue is classified under CWE-693 (Protection Mechanism Failure) and CWE-918 (Server-Side Request Forgery), reflecting both the failed access control mechanism and the SSRF implications when combined with script execution.
Business impact
For organizations running Deno in sandboxed or multi-tenant environments, this vulnerability undermines a core security boundary. If administrators rely on --deny-net to prevent scripts from accessing internal services, databases, or sensitive network segments, a compromised or malicious script can circumvent these restrictions entirely. The impact is particularly acute in CI/CD pipelines, containerized deployments, and shared hosting scenarios where network isolation is a control layer. Remediation requires upgrading to 2.8.1 before the vulnerability can be considered closed in the environment.
Affected systems
Deno versions prior to 2.8.1 are affected. The vulnerability applies to any deployment where Deno scripts are executed with --deny-net permission restrictions intended to limit outbound network access. This includes development machines, build agents, cloud functions, and any environment where untrusted or potentially compromised Deno code runs under network access controls.
Exploitability
Exploitability is straightforward for an attacker with the ability to supply or influence Deno code execution. The attack requires only a specially crafted domain name and network access to resolve it; no additional complexity or privileged position is needed beyond script execution. However, the vulnerability is local in nature (AV:L per CVSS) and requires the attacker to have script execution capability (PR:L), meaning it is not remotely exploitable on its own. Once code execution is achieved, bypassing network restrictions is trivial.
Remediation
Upgrade Deno to version 2.8.1 or later. The patch corrects the fetch() implementation to re-validate resolved IP addresses against the --deny-net ruleset before establishing connections. Organizations should inventory all Deno deployments currently running versions prior to 2.8.1 and prioritize upgrades, particularly in environments where script execution from external or untrusted sources is possible.
Patch guidance
Update Deno to 2.8.1 or a later stable release. Verify the version post-update by running 'deno --version' and confirm that the fetch() behavior no longer permits hostname-to-denied-IP bypasses. If you maintain custom Deno builds, ensure the DNS validation fix is included in your compilation. For containerized deployments, update base images and rebuild containers accordingly. For development environments, update the Deno toolchain through your package manager or by downloading the latest release from the official Deno repository.
Detection guidance
Monitor Deno runtime versions in use across your infrastructure using software inventory tools or container scanning. Look for deno binary versions prior to 2.8.1. Additionally, if you run Deno with network monitoring enabled, examine fetch() calls for patterns where hostnames pass your deny-net rules but resolve to IP addresses you intended to block. Correlate DNS query logs with network flow data to identify anomalous resolution patterns that might indicate exploitation attempts. Runtime observability tools that log hostname-to-IP mappings during fetch() calls can help detect suspicious behavior.
Why prioritize this
Although the CVSS score is 5.2 (Medium), the vulnerability directly defeats a security boundary in environments where Deno's network restrictions are a control layer. Organizations using --deny-net to isolate scripts from internal networks should treat this as higher priority than the base score suggests. If your threat model includes compromised or malicious scripts, or if you rely on Deno's permission model for defense-in-depth, prioritize this upgrade. For general-purpose Deno users without strict network isolation requirements, the patch should still be applied during normal update cycles.
Risk score, explained
CVSS 5.2 reflects a local attack vector, low privilege requirement, and consequential but not catastrophic impact (partial confidentiality and integrity loss, no availability impact). The score appropriately captures the fact that an attacker must already have script execution capability. However, context matters: in environments where Deno's --deny-net is a primary control, the practical risk is higher. The CWE classifications (CWE-693 and CWE-918) underscore that this is an access control failure with SSRF characteristics, not a memory corruption or arbitrary code execution vulnerability.
Frequently asked questions
Can this vulnerability be exploited remotely?
No. The CVSS vector (AV:L) indicates a local attack vector. An attacker must already have the ability to run Deno code or supply code that will be executed. Once that code runs, the attacker can bypass network restrictions, but the initial code execution itself is not part of this vulnerability.
Does this affect Deno Web Workers or Deno Deploy?
This vulnerability applies to any Deno runtime executing fetch() under --deny-net restrictions. If Deno Web Workers or Deno Deploy instances use network access controls, they would be affected if running vulnerable versions. Consult Deno's security advisories for specific guidance on managed services.
What if I use DNS-level filtering instead of --deny-net?
DNS-level filtering is a separate control and is not directly affected by this vulnerability. However, if you rely solely on hostname-based rules (even at the DNS layer), you should ensure you also have IP-based filters or egress controls as defense-in-depth, since hostname resolution can be manipulated.
Should I block Deno entirely until I can patch?
If Deno is part of a critical system and you cannot patch immediately, evaluate the risk: if untrusted scripts run under Deno, or if scripts could be compromised, restricting Deno usage until patching is prudent. For development or testing environments with lower risk, standard patching timelines are acceptable.
This analysis is provided for informational purposes and is based on publicly available CVE data and vendor advisories. Security decisions should be informed by your organization's threat model, asset inventory, and risk tolerance. Verify patch availability and compatibility in your environment before deployment. SEC.co does not guarantee the completeness or timeliness of this information and recommends consulting official Deno security advisories and your security team for definitive guidance. Source: NVD (public-domain), retrieved 2026-07-29. Analysis generated by SEC.co (claude-haiku-4-5).
Related vulnerabilities
- CVE-2026-49860MEDIUMDeno WebSocket Network Bypass Vulnerability (v2.8.1 Fix)
- CVE-2025-30431MEDIUMmacOS Private Information Disclosure Vulnerability – Patch Guidance
- CVE-2025-48571MEDIUMAndroid Bluetooth SMS Interception Vulnerability (CVSS 4.3)
- CVE-2025-58175MEDIUMGeoServer SSRF Vulnerability in Proxy Configuration
- CVE-2026-10052MEDIUMQuay SSRF in LDAP/SMTP Validation—Internal Network Reconnaissance Risk
- CVE-2026-10174MEDIUMAider 0.86.3 Pre-commit Hook Bypass Vulnerability
- CVE-2026-10177MEDIUMSSRF in Aider-AI Aider 0.86.3 AWS Metadata Endpoint
- CVE-2026-10239MEDIUMJeecgBoot Server-Side Request Forgery (SSRF) in Word Editing Module