CVE-2026-49406
ŚrednieCVSS 5.5Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 3 — wyżej niż 3% wszystkich znanych CVE
Streszczenie
W trybie BYONM (nodeModulesDir: "manual") w Deno przed wersją 2.7.12, moduł rozpoznający nie sprawdzał, czy rozpoznany punkt wejścia pakietu pozostaje w jego katalogu node_modules/<pkg>/. Złośliwy plik package.json z polem main zawierającym segmenty .. mógł wskazywać na dowolną ścieżkę na dysku, a resolver odczytywał ten plik bez uwzględniania listy dozwolonych ścieżek --allow-read. Pozwalało to wywołaniu require("evil-pkg") zwrócić zawartość pliku, którego bezpośrednie odczytanie przez Deno.readTextFileSync(...) byłoby zablokowane.
Ocena ryzyka
Atakujący może wykorzystać tę podatność do odczytu dowolnych plików na serwerze, omijając mechanizmy kontroli dostępu, co prowadzi do wycieku poufnych danych.
Rekomendacja
Należy natychmiast zaktualizować Deno do wersji 2.7.12 lub nowszej, która zawiera poprawkę uniemożliwiającą wyjście poza katalog pakietu.
Oryginalny opis (angielski, źródło NVD)
Deno is a JavaScript, TypeScript, and WebAssembly runtime. Prior to 2.7.12, when Deno was run in BYONM mode (nodeModulesDir: "manual"), the module resolver did not validate that a package's resolved entrypoint stayed within its node_modules/<pkg>/ directory. A malicious package.json whose main field contained .. segments was able to resolve to an arbitrary path on disk, and the resolver then read that file without consulting the --allow-read allowlist. This let a require("evil-pkg") call return the contents of a file that a direct Deno.readTextFileSync(...) call would have been blocked from reading. This vulnerability is fixed in 2.7.12.

