CVE-2025-48888: Deno run with --allow-read and --deny-read flags results in allowed
Summary
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-.
Details
Caused by the fast exit logic in #22894.
PoC
Run the above command expecting no permissions to be passed.
Impact
This only affects a nonsensical combination of flags, so there shouldn't be a real impact on the userbase.
Other sources
Deno is a JavaScript, TypeScript, and WebAssembly runtime. Starting in version 1.41.3 and prior to versions 2.1.13, 2.2.13, and 2.3.2, deno run --allow-read --deny-read main.ts results in allowed, even though 'deny' should be stronger. The result is the same with all global unary permissions given as --allow- --deny-. This only affects a nonsensical combination of flags, so there shouldn't be a real impact on the userbase. Users may upgrade to version 2.1.13, 2.2.13, or 2.3.2 to receive a patch.
— MITRE
Affected Software
Remediation
Patch Available
Patch Available
Event History
Frequently Asked Questions
What is the severity of CVE-2025-48888?
CVE-2025-48888 is classified as a medium severity vulnerability.
How do I fix CVE-2025-48888?
To fix CVE-2025-48888, upgrade Deno to version 2.1.13 or later.
What versions of Deno are affected by CVE-2025-48888?
CVE-2025-48888 affects Deno versions between 1.41.3 and 2.1.13, and also 2.2.13 and 2.3.2.
What is the nature of the vulnerability in CVE-2025-48888?
CVE-2025-48888 allows improper permission handling where 'deny' permissions are overridden by 'allow' permissions.
Is there a workaround for CVE-2025-48888 until I can upgrade Deno?
There is no official workaround for CVE-2025-48888, so upgrading is the best course of action.