CVE-2025-61786
published 2025-10-08CVE-2025-61786: Deno is a JavaScript, TypeScript, and WebAssembly runtime. In versions prior to 2.5.3 and 2.2.15, `Deno.FsFile.prototype.stat` and…
PriorityP412low3.3CVSS 3.1
AVLACLPRLUINSUCLINAN
EPSS
0.19%
9.5th percentile
Deno is a JavaScript, TypeScript, and WebAssembly runtime. In versions prior to 2.5.3 and 2.2.15, `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 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 | — | — |
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.
GHSA
Deno's --deny-read check does not prevent permission bypass
ghsa·2025-10-08
CVE-2025-61786 [LOW] CWE-269 Deno's --deny-read check does not prevent permission bypass
Deno's --deny-read check does not prevent permission bypass
### Summary
`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 model.
### PoC
Setup:
```
deno --version
deno 2.4.2 (stable, release, x86_64-unknown-linux-gnu)
v8 13.7.152.14-rusty
typescript 5.8.3
touch test1.txt
```
- `poc_file.stat.ts`
```ts
// touch test1.txt
//
OSV
Deno's --deny-read check does not prevent permission bypass
osv·2025-10-08
CVE-2025-61786 [LOW] Deno's --deny-read check does not prevent permission bypass
Deno's --deny-read check does not prevent permission bypass
### Summary
`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 model.
### PoC
Setup:
```
deno --version
deno 2.4.2 (stable, release, x86_64-unknown-linux-gnu)
v8 13.7.152.14-rusty
typescript 5.8.3
touch test1.txt
```
- `poc_file.stat.ts`
```ts
// touch test1.txt
//
No detection rules found.
No public exploits indexed.
No writeups or analysis indexed.
https://github.com/denoland/deno/commit/1ab2268c0bcbf9b0468e0e36963f77f8c31c73echttps://github.com/denoland/deno/pull/30876https://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-qq26-84mh-26j9
2025-10-08
Published