🔍 CVE-2026-49406

5.5
CVSS Score
MEDIUM
2026-06-23
2026-10-25 23:10
✅ 완료

🇰🇷 한글 설명

Deno는 JavaScript, TypeScript, WebAssembly 런타임입니다. 2.7.12 이전 버전에서 BYONM 모드(nodeModulesDir: "manual")로 실행될 때, 모듈 리졸버가 패키지의 entrypoint가 node_modules/<pkg>/ 디렉터리를 벗어나는지 검증하지 않았습니다. main 필드에 .. 세그먼트를 포함한 악성 package.json은 디스크의 임의 경로로 해석될 수 있으며, 리졸버는 --allow-read 허용 목록을 확인하지 않고 해당 파일을 읽었습니다.

💡 쉬운 설명

악성 npm 패키지가 허용되지 않은 시스템 파일을 우회하여 읽을 수 있는 취약점입니다. 직접 파일 읽기는 차단되더라도 require() 호출을 통해 내용이 노출될 수 있습니다.

🇺🇸 원문 (English)

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.

📍 영향받는 시스템

Deno 2.7.12 미만 버전, BYONM(nodeModulesDir: "manual") 모드로 실행하는 환경

⚔️ 공격 벡터

악성 패키지의 package.json main 필드에 ../ 경로를 넣어 require()로 임의 파일을 읽게 함

🛡️ 대응 방법

Deno를 2.7.12 이상으로 업데이트하고, 신뢰할 수 없는 패키지 사용을 제한

🔧 검증 코드

출력된 버전이 2.7.12 미만이면 취약하며, 2.7.12 이상이면 패치가 적용된 것입니다.

Shell / Script
deno --version 2>/dev/null | head -n 1

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N