{"answers":{"affected":"2 open source packages ship an affected version, including deno. It affects 1 product.","exploited":"It is not confirmed as exploited in the wild, but public exploit code for CVE-2024-27933 exists.","fix":"Upgrade deno to 1.39.1 or later.","what":"CVE-2024-27933 is a high-severity vulnerability in denoland deno, published on 6 Mar 2024. It can only be exploited from the same machine or local network, with no action from the victim."},"fix_prompt":"Check this codebase for CVE-2024-27933 and fix it if it is affected.\n\nWhat it is: CVE-2024-27933 is a high-severity vulnerability in denoland deno, published on 6 Mar 2024. It can only be exploited from the same machine or local network, with no action from the victim.\nExploitation: It is not confirmed as exploited in the wild, but public exploit code for CVE-2024-27933 exists.\n\nAffected packages and fixed versions:\n- deno (crates.io): affected from 1.39.0; fixed in 1.39.1\n- deno (crates.io): affected from 1.39.0; fixed in 1.39.1\n\nTask:\n1. Search the dependency manifests and lockfiles (for example package.json, package-lock.json, requirements.txt, poetry.lock, uv.lock, pom.xml, build.gradle, go.mod, Cargo.lock, Gemfile.lock) and any Dockerfiles for the affected packages, including transitive dependencies.\n2. If an affected version is in use, upgrade it to the fixed version for its release line with the project's package manager, so the lockfile is regenerated. Prefer the smallest upgrade that fixes it.\n3. If there is no fix, or the upgrade would break the build, do not guess: explain the risk and the safest workaround instead.\n4. Run the tests and summarise what changed and why.\n5. If nothing in the project is affected, say so and change nothing.\n\nReference: https://insights.sbomify.com/CVE-2024-27933/ (Markdown: https://insights.sbomify.com/CVE-2024-27933/index.md)","id":"CVE-2024-27933","markdown":"https://insights.sbomify.com/CVE-2024-27933/index.md","name":"CVE-2024-27933","record":{"aliases":["GHSA-6q4w-9x56-rmwq"],"analysis":{"component_type":"developer_tool","fix_type":"upgrade","impacts":["code_execution","security_bypass"],"network_reachable":"adjacent_or_local","non_default_config":false,"product_category":"Deno runtime","requires_auth":"high_privilege","summary":"Attackers can bypass Deno permission prompts by closing standard input via IPC, enabling arbitrary code execution on the host.","user_interaction":"not_required","vuln_class":"security_feature_bypass"},"analysis_generated_by":"qwen3.8-flash-next","assigner":"GitHub_M","cpe":[{"product":"deno","vendor":"deno"}],"cvss":{"score":8.3,"severity":"high","source":"cna","vector":"CVSS:3.1/AV:L/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H","version":"3.1"},"cwes":[{"id":"CWE-863","name":"Incorrect Authorization"}],"description":"Deno is a JavaScript, TypeScript, and WebAssembly runtime. In version 1.39.0, use of raw file descriptors in `op_node_ipc_pipe()` leads to premature close of arbitrary file descriptors, allowing standard input to be re-opened as a different resource resulting in permission prompt bypass. Node child_process IPC relies on the JS side to pass the raw IPC file descriptor to `op_node_ipc_pipe()`, which returns a `IpcJsonStreamResource` ID associated with the file descriptor. On closing the resource, the raw file descriptor is closed together.\n\nUse of raw file descriptors in `op_node_ipc_pipe()` leads to premature close of arbitrary file descriptors. This allow standard input (fd 0) to be closed and re-opened for a different resource, which allows a silent permission prompt bypass. This is exploitable by an attacker controlling the code executed inside a Deno runtime to obtain arbitrary code execution on the host machine regardless of permissions.\n\nThis bug is known to be exploitable. There is a working exploit that achieves arbitrary code execution by bypassing prompts from zero permissions, additionally abusing the fact that Cache API lacks filesystem permission checks. The attack can be conducted silently as stderr can also be closed, suppressing all prompt outputs.\n\nVersion 1.39.1 fixes the bug.","ecosystems":["crates.io"],"exploits":{"exploitdb":0,"first_seen":null,"github_poc":0,"max_poc_stars":null,"metasploit":0,"nuclei":0,"refs":[],"tier":"weaponised"},"has_fix":true,"headline":"Deno arbitrary file descriptor close via `op_node_ipc_pipe()` leading to permission prompt bypass","id":"CVE-2024-27933","indexable":true,"kev":null,"kind":"cve","links":{"ecosystem":"crates.io","product":null,"products":[],"type":"security_feature_bypass","year":"2024"},"n_packages":2,"n_references":10,"next":{"headline":"*const c_void / ExternalPointer unsoundness leading to use-after-free","id":"CVE-2024-27934"},"packages":[{"ecosystem":"crates.io","fixed":["1.39.1"],"introduced":["1.39.0"],"last_affected":[],"package":"deno","purl":null,"source":"GHSA-6q4w-9x56-rmwq"},{"ecosystem":"crates.io","fixed":["1.39.1"],"introduced":["1.39.0"],"last_affected":[],"package":"deno","purl":"pkg:cargo/deno","source":"GHSA-6q4w-9x56-rmwq"}],"prev":{"headline":"Deno's improper suffix match testing for DENO_AUTH_TOKENS","id":"CVE-2024-27932"},"products":["deno"],"published":"2024-03-06","related":[{"cvss_score":10,"headline":"Deno improperly handles resizable ArrayBuffer","id":"CVE-2023-28445","kev_date_added":null,"published":"2023-03-23"},{"cvss_score":10,"headline":"Sandbox bypass leading to arbitrary code execution in Deno","id":"CVE-2022-24783","kev_date_added":null,"published":"2022-03-25"},{"cvss_score":9.8,"headline":"Static imports inside dynamically imported modules do not adhere to permission checks","id":"CVE-2021-32619","kev_date_added":null,"published":"2021-05-28"},{"cvss_score":9.2,"headline":"Deno node:crypto doesn't finalize cipher","id":"CVE-2026-22863","kev_date_added":null,"published":"2026-01-15"},{"cvss_score":8.8,"headline":"Deno interactive permission prompt spoofing via improper ANSI stripping","id":"CVE-2024-27936","kev_date_added":null,"published":"2024-03-06"},{"cvss_score":8.8,"headline":"Deno is vulnerable to interactive `run` permission prompt spoofing via improper ANSI neutralization","id":"CVE-2023-28446","kev_date_added":null,"published":"2023-03-24"},{"cvss_score":8.6,"headline":"Deno missing \"--allow-net\" permission check for built-in Node modules","id":"CVE-2023-33966","kev_date_added":null,"published":"2023-05-31"}],"sources":[{"class":"attribution","licence":"CVE Terms of Use (MITRE)","name":"CVE List","prefix":"CVE"},{"class":"attribution","licence":"CC BY 4.0","name":"GitHub Advisory Database","prefix":"GHSA"},{"class":"attribution","licence":"US public information, NVD API terms","name":"NVD"},{"class":"attribution","licence":"CWE Terms of Use","name":"CWE (MITRE)"},{"class":"attribution","licence":"FIRST CVSS licence","name":"CVSS (FIRST)"}],"ssvc":{"automatable":"no","exploitation":"poc","technical_impact":"total"},"state":"PUBLISHED","updated":"2024-08-02","vendors":["denoland"]},"summary":"Attackers can bypass Deno permission prompts by closing standard input via IPC, enabling arbitrary code execution on the host.","url":"https://insights.sbomify.com/CVE-2024-27933/"}