CVE-2026-49411: Deno Permission Bypass via Numeric IP Aliases in Node.js Compatibility Layer
Deno, a JavaScript/TypeScript/WebAssembly runtime, had a permission-checking flaw in its Node.js compatibility layer for TCP connections. When code attempted to connect to a host that was supposed to be denied, Deno only checked permissions against the hostname as originally provided—not after that hostname resolved to an IP address. An attacker could bypass restrictions by using numeric representations of IP addresses (like decimal 2130706433 or hexadecimal 0x7f000001, both resolving to localhost) in node:net.connect() or node:http.request() calls, reaching destinations that should have been blocked. This was fixed in Deno 2.8.0.
Source data · NVD / CISA · public domain
- CVSS
- 3.1 · 6.5 MEDIUM · CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N
- Weaknesses (CWE)
- CWE-284
- Affected products
- 1 configuration(s)
- Published / Modified
- 2026-06-23 / 2026-06-26
NVD description (verbatim)
Deno is a JavaScript, TypeScript, and WebAssembly runtime. Prior to 2.8.0, the Node.js compatibility TCP path checked the permission against the original hostname string before resolution and then did not re-check after resolution. A caller could therefore pass a numeric alias of an IP address (for example the decimal integer 2130706433 or the hex form 0x7f000001, both of which resolve to 127.0.0.1) and reach the denied destination through node:net.connect or node:http.request's { host, port } options form. This vulnerability is fixed in 2.8.0.
2 reference(s) · View on NVD →
SEC.co analysis · AI-assisted, reviewed against source
Technical summary
The vulnerability resides in Deno's Node.js compatibility layer, specifically in how TCP socket connection permissions are evaluated. The flaw stems from a Time-of-Check-Time-of-Use (TOCTOU) logic error: permission validation occurs against the raw hostname string before DNS resolution happens, but no re-validation occurs after the numeric or symbolic hostname resolves to its actual IP address. An unprivileged process with restricted network permissions can craft a connect() call using a numeric IP representation (integer or hexadecimal form) that resolves to a blocked destination. The socket layer honors the pre-resolution permission check and allows the connection. Callers running within Deno's permission sandbox (common in embeddings or untrusted script environments) can escape intended network access controls.
Business impact
Organizations embedding or executing untrusted Deno code in sandbox environments face privilege escalation risk. While the attack requires an already-running process with local code execution capability, it allows that process to bypass network isolation policies that are meant to prevent lateral movement, data exfiltration, or unauthorized service access. In scenarios where Deno serves as a runtime for third-party scripts, plugins, or multi-tenant containerized workloads, this weakness could permit compromised code to reach backend services, databases, or external systems that security policies intended to block.
Affected systems
Deno versions prior to 2.8.0 are affected. The vulnerability is specific to the Node.js compatibility layer, so code using Deno's native network APIs (not the node:net or node:http polyfills) is not impacted. Affected deployments include those relying on Node.js compatibility mode for legacy code or third-party libraries that expect Node.js APIs, particularly where network permissions are configured to restrict access to specific hosts or ranges.
Exploitability
The attack requires local execution within a Deno process already subject to permission restrictions—not a remote network vulnerability. Exploitation is straightforward once code execution is achieved: simply call node:net.connect() or node:http.request() with a numeric IP representation (decimal, hexadecimal, or octal) instead of a hostname. The numeric form bypasses the intended hostname-based access control. No special timing, race conditions, or user interaction is required. However, the practical impact depends on the configuration of network permissions in the target Deno environment and whether the process actually runs with such restrictions enforced.
Remediation
Upgrade Deno to version 2.8.0 or later. This patch adds post-resolution permission re-validation, ensuring that regardless of how a hostname is represented, the resolved IP address is checked against the permission policy before the connection is allowed. Organizations should prioritize updates for any Deno instances executing untrusted code or running in multi-tenant environments where network isolation is a security boundary.
Patch guidance
Apply Deno 2.8.0 or any subsequent version. Verify against the official Deno release notes and advisory to confirm the fix is included in your deployment. If using Deno in containerized or embedded scenarios, ensure container/embedding host tooling pulls the patched version and does not cache older builds. Test network permission policies after upgrade to confirm they function as intended.
Detection guidance
Review Deno process invocations and scripts for use of numeric IP addresses in node:net.connect() or node:http.request() calls, especially in conjunction with configured network permission restrictions. Monitor process logs or audit trails for connection attempts using unexpected numeric address formats. In containerized environments, verify the Deno version running in images and confirm it matches 2.8.0 or later. If source code is available, audit permission configuration and check whether post-resolution validation is expected but absent in older versions.
Why prioritize this
While the CVSS score is MEDIUM (6.5), the effective risk in your environment depends on two factors: whether you run untrusted or third-party Deno code, and whether network permissions are meaningfully configured. Patches are straightforward and low-risk. Prioritize for any instance running code from untrusted sources or acting as a multi-tenant runtime; deprioritize if Deno executes only trusted internal code with minimal network restrictions.
Risk score, explained
The CVSS 3.1 score of 6.5 (MEDIUM) reflects a local attack vector (AV:L), low attack complexity (AC:L), low privilege requirement (PR:L), no user interaction (UI:N), cross-system scope (S:C), high confidentiality impact (C:H), no integrity or availability impact (I:N/A:N). The confidentiality impact stems from the ability to reach and query blocked services; the local/privileged requirement limits the attack surface compared to remote exploits. The score appropriately reflects a sandbox escape scenario rather than a critical vulnerability.
Frequently asked questions
Can remote attackers exploit this, or is it only a local risk?
Only local. An attacker must already have code execution within a Deno process. The vulnerability does not enable unauthenticated remote network access to Deno. However, if untrusted code is executed locally (e.g., user-supplied scripts), that code can exploit it to escape network restrictions.
Does this affect Deno code using native Deno APIs, or only Node.js compatibility mode?
Only Node.js compatibility mode. The flaw is specific to node:net and node:http polyfills. If your code uses Deno's native network APIs (Deno.connect, Deno.listen, etc.), this vulnerability does not apply.
How difficult is it to craft a numeric IP to bypass restrictions?
Very straightforward. Numeric IP representations (decimal, hex, octal) are valid in standard socket APIs. An attacker knowing the target IP address can express it in numeric form instead of hostname form, and the unpatched version will skip the blocked-hostname check.
If we only run trusted internal code in Deno, should we still update?
It is prudent to update regardless, as it closes a potential attack surface in case threat models evolve. However, if your Deno deployment runs exclusively trusted code and network permissions are not a security boundary you rely on, the practical risk is lower. Prioritize updates for any scenario involving third-party scripts, plugin systems, or multi-tenant workloads.
This analysis is based on the published CVE description and vendor advisory data available as of the research date. Exploit code is not provided; security teams should conduct their own testing in lab environments. Verify patch availability and compatibility with your Deno version and deployment before production deployment. This vulnerability requires local code execution; it is not a remote network vulnerability. Organizations should validate that their specific Deno configuration actually enforces network permissions in a way that would be affected by this flaw. Source: NVD (public-domain), retrieved 2026-07-29. Analysis generated by SEC.co (claude-haiku-4-5).
Related vulnerabilities
- CVE-2024-27891MEDIUMArista EOS MACsec + Egress ACL Policy Enforcement Failure
- CVE-2025-24165MEDIUMmacOS Permissions Issue Enables Unexpected System Termination
- CVE-2025-43339MEDIUMmacOS Tahoe Sandbox Access Control Bypass Allows User Data Disclosure
- CVE-2025-46308MEDIUMApple iOS, iPadOS, macOS Authorization Bypass—Sensitive Data Disclosure
- CVE-2026-10152MEDIUMImproper Access Control in TaleLin lin-cms-spring-boot Book Endpoint
- CVE-2026-10172MEDIUMBdtask Multi-Store Inventory 1.0 Unrestricted File Upload Vulnerability
- CVE-2026-10205MEDIUMUnrestricted File Upload in Metasoft MetaCRM 6.4.0 – Exploit Details & Remediation
- CVE-2026-10255MEDIUMPharmacy Sales System Authentication Bypass – SourceCodester 1.0