{"id":"CVE-2026-49859","title":"Deno: `fetch()` API sandbox bypass via missing DNS resolution check","summary":"Deno: `fetch()` API sandbox bypass via missing DNS resolution check","severity":"medium","cvss":5.2,"cwe":["CWE-693","CWE-918"],"vendor":"deno","product":"deno","ecosystem":"rust","affected":["deno <= 2.8.0"],"patched":["deno 2.8.1"],"published":"2026-06-16","updated":"2026-06-16","source":"GHSA","sourceUrl":"https://github.com/advisories/GHSA-cpgj-f7g3-2pp2","references":[{"url":"https://github.com/denoland/deno/security/advisories/GHSA-cpgj-f7g3-2pp2"},{"url":"https://github.com/advisories/GHSA-cpgj-f7g3-2pp2"}],"tags":["ghsa","rust"],"epss":0.00141,"epssPercentile":0.03785,"ingestedAt":"2026-06-29T14:31:47.715Z","slug":"CVE-2026-49859","body":"## Overview\n\n## Summary\n\nWhen `fetch()` was called, Deno checked the destination hostname against\n`--deny-net` rules but did not re-check the IP addresses that hostname\nresolved to. An attacker-controlled script could use a specially crafted domain\nname that passes the hostname check yet resolves to a denied IP, bypassing the\nnetwork restriction entirely.\n\n## Impact\n\nCode running under `--deny-net` could reach hosts that the user intended to\nblock. In practice this means network isolation rules — for example, blocking\naccess to `localhost` or internal services — could be silently circumvented by\na malicious or compromised dependency.\n\nA companion advisory covers the same class of issue in the WebSocket API.\n\n## Who is affected\n\nUsers who:\n\n- run untrusted or third-party code with `deno run`, and\n- rely on `--deny-net` to restrict which hosts that code can reach.\n\nIf you do not use `--deny-net`, or if you only run fully trusted code, you are\nnot affected.\n\n## Workaround\n\nNo workaround is available short of upgrading. If upgrading immediately is not\npossible, avoid granting `--allow-net` to untrusted code that also has\n`--deny-net` restrictions you depend on for security.\n\n## Fix\n\nThe `fetch()` DNS resolver now performs a post-resolution check on every IP\naddress before passing it to the HTTP connector, consistent with how\n`Deno.connect` already behaved.\n\n## Affected packages\n\n- `deno <= 2.8.0`\n\n## Remediation\n\nUpgrade to a patched release:\n\n- `deno 2.8.1`","depth":"sunlit","depthScore":29,"depthScoreParts":{"impact":28.6,"likelihood":0,"exploitation":0,"ransomware":0},"changes":[]}