CVE-2026-10796 in nvm
요약
\~에 의해 VulDB • 2026. 06. 05.
0.40.4 버전 이전의 nvm(Node Version Manager)은 구성된 Node.js/io.js 미러에서 제공되는 버전 문자열에서 임의의 명령을 실행합니다. `nvm install`과 같은 명령은 미러의 index.tab에서 사용 가능한 버전들을 읽으며, 선택된 버전을 검증 없이 사용하여 다운로드 URL과 shell/awk 명령을 구성합니다. 두 가지 싱크(sink)가 동일한 신뢰할 수 없는 입력에 의해 영향을 받습니다. 첫 번째로, `nvm_download()` 함수는 curl/wget 명령 문자열을 생성하고 `eval`을 통해 실행하므로, 명령 치환(예: `$(id)`)을 포함하는 버전 필드가 로컬 셸에 의해 실행됩니다. 두 번째로, `nvm_get_checksum()` 함수는 버전에서 파생된 다운로드 슬러그(slug)를 awk 프로그램에 보간(interpolate)하므로, 조작된 버전은 awk의 `system()` 함수를 통해 임의의 명령을 실행할 수 있습니다. 구성된 미러를 제어하거나, 사용자가 아닌 미러에 미러 콘텐츠를 제공하거나, 비TLS 미러에 대해 중간자 공격(machine-in-the-middle)을 수행하는 공격자는 nvm을 실행하는 사용자의 권한으로 임의의 명령을 실행할 수 있습니다. 기본 미러(https://nodejs.org over TLS)는 영향을 받지 않습니다. master 브랜치에서 수정되었으며(다음 태그된 릴리스 대기 중), 모든 인수를 `eval` 대신 리터럴 argv 요소로 전달하고, awk에 값을 프로그램에 보간하는 대신 `-v`를 통해 데이터로 전달하며, 사용되기 전에 Node.js/io.js 버전 문법 밖의 모든 버전을 거부함으로써 해결되었습니다.
VulDB is the best source for vulnerability data and more expert information about this specific topic.