Skip to main content

Boteraser | Website and Server Security Solutions

🛡️ CVE-2026-49401 — deno

🟠 CVSS 8.0 — High ⚠️ Exploit Public CWE-176 OSV
8.0
CVSS Score
0 Low4 Medium7 High9 Critical10

Description

Deno: Permission Bypass via Unicode Normalization Mismatch on macOS (APFS)

Summary

Deno's permission system enforces filesystem and execution restrictions by

comparing the requested path against the path supplied to --deny-read,

--deny-write, --deny-run, or --deny-ffi. On macOS, that comparison was

done at the raw-byte level while the APFS filesystem treats different Unicode

spellings of the same name as the same file.

That means a program could reach a denied path by spelling it differently than

the deny rule. For example, with --deny-read=/secrets/passwörter.txt, a

script could still read the file by opening /secrets/passwo\u0308rter.txt

(NFD instead of NFC), or /SECRETS/PASSWÖRTER.txt (different case, since

default APFS volumes are case-insensitive). Other forms include ligature

characters ( vs fi, vs ff, …) and German ß vs ss.

The denied path and the requested path differed at the byte level, so Deno's

permission check passed; the kernel then resolved them to the same inode and

served the file anyway. The same flaw affected --deny-write, --deny-run,

and --deny-ffi, which share the same path-comparison code.

Am I affected?

You are potentially affected if all of the following are true:

1. You run Deno on macOS (the issue is specific to APFS path-equivalence

rules; Linux and Windows are not affected by this variant).

2. You rely on --deny-read, --deny-write, --deny-run, or --deny-ffi

as a security boundary against less-trusted code — a dependency, plugin,

or attacker-controlled input.

3. The protected path contains characters that have alternate Unicode

spellings — most commonly accented characters (é, ñ, ö, …), German

ß, or Latin ligatures — or you rely on case-sensitivity on a default

APFS volume.

If you only run fully trusted code, or your deny rules cover paths that are

pure ASCII with no case-sensitive aliases, you are not exposed to this

specific bypass.

Impact

A program running with broad --allow-read (or --allow-write /

--allow-run / --allow-ffi) but with --deny-* carve-outs for specific

paths could read, write, execute, or load via FFI those denied paths by

referring to them through a Unicode- or case-equivalent spelling. The sandbox

model on macOS was weaker than the flags suggested.

Workaround

If you cannot upgrade immediately:

  • Prefer --allow-* allowlists over --deny-* denylists. Allow rules match

against the original specifier, so an attacker-supplied alternate spelling

will not match a path you didn't explicitly grant.

  • Do not rely on case-sensitivity of paths on macOS for security boundaries;

default APFS volumes are case-insensitive.

Fix

On macOS, Deno now normalizes both the deny-rule path and the requested path

to NFC and applies Unicode case folding before comparing them. This matches

how APFS resolves paths at the inode level, so byte-different but equivalent

spellings are now rejected by the same deny rule.

How this vulnerability can be exploited

This issue can be reached with local access to the system, attack complexity is low, an attacker needs low-level privileges on the target. No user interaction is required. The scope is changed, meaning a successful attack can affect components beyond the vulnerable one. Rated impact: confidentiality low, integrity high, availability none.

CVSS metrics in full

The score comes from this vector: CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:L/I:H/A:N

  • Attack vector: Local — a local account, shell or session on the host is needed.
  • Attack complexity: Low — the attack works reliably, with no preparation.
  • Privileges required: Low — an ordinary user account is enough.
  • User interaction: None — nobody has to be tricked into anything.
  • Scope: Changed — a successful attack reaches components beyond the vulnerable one.
  • Confidentiality impact: Low — limited, and the attacker does not choose what is affected.
  • Integrity impact: High — total loss, or loss the attacker controls.
  • Availability impact: None.

Weakness class

CVE-2026-49401 is classified as CWE-176: Improper Handling of Unicode Encoding. The product does not properly handle when an input contains Unicode encoding.

Affected software

CVE-2026-49401 is recorded against 1 package.

  • deno

Timeline and source

Published on 16 June 2026 and last revised on 31 July 2026. A public exploit is known to exist, which raises the urgency of patching considerably. Record sourced from OSV.

References

github.com (Web)
nvd.nist.gov (Advisory)
github.com (Package)

Other advisories for this package

deno has other advisories on record. If you are patching this one, these are worth checking on the same host:

Same weakness in other software

These advisories are the same class of weakness (CWE-176: Improper Handling of Unicode Encoding) in other software:

Details

Severity HIGH
CVSS Score 8.0
CVSS Vector CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:L/I:H/A:N
CWE CWE-176
Public Exploit ⚠️ Yes
Source OSV
Published 2026-06-16
Updated 2026-08-20
Modified 2026-07-31
Fix URL N/A

Affected Packages

Software From version Fixed in
deno

Similar Threats

Exploit Protection

Are you running deno?

CVE-2026-49401 carries CVSS 8.0 High rating and a public exploit already exists. BotEraser checks your installation against this and other known CVE records, and blocks IPs associated with exploit activity.

Check My Site For CVE-2026-49401 →

No credit card required  ·  Results in minutes

ⓘ Data Notice: The information presented above has been compiled from publicly available internet sources. Boteraser aggregates this data solely for informational purposes and does not independently classify, evaluate, or endorse any findings about the vulnerabilities listed. The accuracy and completeness of this information is the sole responsibility of the original publishers. Boteraser and its operators accept no liability for any decisions made based on this data.

Browse related advisories

All advisoriesCVECVE 2026