Deno.FsFile.prototype.stat and Deno.FsFile.prototype.statSync are not limited by the permission model check –deny-read=./. It's possible to retrieve stats from files that the user do not have explicit read access to (the script is executed with –deny-read=./) Similar APIs like Deno.stat and Deno.statSync require allow-read permission, however, when a file is opened, even with file-write only flags and deny-read permission, it's still possible to retrieve file stats, and thus bypass the permission …
Deno versions up to 2.5.1 are vulnerable to Command Line Injection attacks on Windows when batch files are executed.
Deno.FsFile.prototype.utime and Deno.FsFile.prototype.utimeSync are not limited by the permission model check –deny-write=./. It's possible to change to change the access (atime) and modification (mtime) times on the file stream resource even when the file is opened with read only permission (and write: false) and file write operations are not allowed (the script is executed with –deny-write=./). Similar APIs like Deno.utime and Deno.utimeSync require allow-write permission, however, when a file is …
Static imports are exempted from the network permission check. An attacker could exploit this to leak the password file on the network.
This affects AES-256-GCM and AES-128-GCM in Deno, introduced by commit 0d1beed. Specifically, the authentication tag is not being validated. This means tampered ciphertexts or incorrect keys might not be detected, which breaks the guarantees expected from AES-GCM. Older versions of Deno correctly threw errors in such cases, as does Node.js. Without authentication tag verification, AES-GCM degrades to essentially CTR mode, removing integrity protection. Authenticated data set with set_aad is also …
The Deno.env.toObject method ignores any variables listed in the –deny-env option of the deno run command. When looking at the documentation of the –deny-env option this might lead to a false impression that variables listed in the option are impossible to read.
deno run –allow-read –deny-read main.ts results in allowed, even though 'deny' should be stronger. Same with all global unary permissions given as –allow-* –deny-*.
It is possible to bypass Deno's read/write permission checks by using ATTACH DATABASE statement.
When you send a request with the Authorization header to one domain, and the response asks to redirect to a different domain, Deno'sfetch() redirect handling creates a follow-up redirect request that keeps the original Authorization header, leaking its content to that second domain.