CVE-2025-61785
published 2025-10-08CVE-2025-61785: Deno is a JavaScript, TypeScript, and WebAssembly runtime. In versions prior to 2.5.3 and 2.2.15, `Deno.FsFile.prototype.utime` and…
PriorityP413low3.3CVSS 3.1
AVLACLPRLUINSUCNILAN
EPSS
0.20%
10.1th percentile
Deno is a JavaScript, TypeScript, and WebAssembly runtime. In versions prior to 2.5.3 and 2.2.15, `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 opened, even with read only flags and deny-write permission, it's still possible to change the access (`atime`) and modification (`mtime`) times, and thus bypass the permission model. Versions 2.5.3 and 2.2.15 fix the issue.
Affected
5 ranges
| Vendor | Product | Version range | Fixed in |
|---|---|---|---|
| deno | deno | <= 2.2.15 | — |
| deno | deno | >= 0 < 2.5.3 | 2.5.3 |
| deno | deno | >= 2.3.0 < 2.5.3 | 2.5.3 |
| denoland | deno | < 2.2.15 | 2.2.15 |
| denoland | deno | — | — |
CVSS provenance
nvdv3.13.3LOWCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N
nvdv3.03.3LOWCVSS:3.0/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N
Stop checking back — get the weekly exploitation signal.
Every Monday: what got weaponized or added to CISA KEV in the last seven days — each CVE cross-linked to its PoC, Nuclei template, and detection rule. Free, one email a week, unsubscribe in one click.
OSV
Deno's --deny-write check does not prevent permission bypass
osv·2025-10-07
CVE-2025-61785 [LOW] Deno's --deny-write check does not prevent permission bypass
Deno's --deny-write check does not prevent permission bypass
### Summary
`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 opened, even with read only flags and deny-write permission, it's still possible to change the access (`atime`) and modification (`mtime`) times, and thus bypass the permission model.
### PoC
GHSA
Deno's --deny-write check does not prevent permission bypass
ghsa·2025-10-07
CVE-2025-61785 [LOW] CWE-266 Deno's --deny-write check does not prevent permission bypass
Deno's --deny-write check does not prevent permission bypass
### Summary
`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 opened, even with read only flags and deny-write permission, it's still possible to change the access (`atime`) and modification (`mtime`) times, and thus bypass the permission model.
### PoC
No detection rules found.
No public exploits indexed.
No writeups or analysis indexed.
https://github.com/denoland/deno/commit/992e998dfe436cdc9325232759af8be92f11739bhttps://github.com/denoland/deno/pull/30872https://github.com/denoland/deno/releases/tag/v2.2.15https://github.com/denoland/deno/releases/tag/v2.5.3https://github.com/denoland/deno/security/advisories/GHSA-vg2r-rmgp-cgqj
2025-10-08
Published