Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2021-26700 — NPM VSCode 확장 프로그램의 RCE | Kitploit
도구/GitHubGitHub/jackadamson/cve-2021-26700
Vulnerability AnalysisCode AnalysisExploitationWeb Application ExploitationSupply Chain SecurityLearning & Education
GitHubjackadamson/cve-2021-26700

CVE-2021-26700

NPM VSCode 확장 프로그램의 RCE

저장소 보기
205년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

NPM VSCode 확장 프로그램의 RCE

2021년 2월 10일 수정됨 (https://github.com/microsoft/vscode-npm-scripts/commit/cdd5e507564e0cc0f60bcccf184822be3fd73e07)

https://msrc.microsoft.com/update-guide/vulnerability/CVE-2021-26700

요약

eg2.vscode-npm-script (버전 0.3.13에서 테스트됨) VSCode 확장 프로그램의 원격 코드 실행 취약점은 프로젝트 내 악성 .vscode/settings.json이 package.json 파일을 볼 때 원격 코드 실행을 유발할 수 있음을 의미합니다.

이 취약점은 활성 Microsoft 버그 바운티 프로그램에 해당하지 않았지만 MSRC에 보고되어 처리되었습니다.

설명

리포지토리에 악성 .vscode/settings.json 파일이 없으면 eg2.vscode-npm-script 확장 프로그램이 설치된 상태에서 package.json 파일을 볼 때 npm ls --depth 0 --json 명령이 실행됩니다.

프로젝트의 settings.json에 npm.bin 키를 예를 들어 ./payload.sh로 설정하면 package.json을 볼 때 대신 package.json이 포함된 디렉토리에서 ./payload.sh ls --depth 0 --json이 실행됩니다.

이 취약점은 소스 코드를 안전하게 읽을 수 있다는 가정을 깨뜨립니다.

공격 예시

공격자가 이를 사용할 수 있는 예는 다음과 같습니다:

  1. 공격자가 첨부된 linux-poc과 같은 리포지토리를 게시합니다.
  2. 대상이 소스 코드를 VSCode에서 읽기 위해 리포지토리를 클론합니다.
  3. 대상이 package.json을 봅니다.
  4. payload.sh가 실행됩니다.

완화 옵션

악성 VSCode 작업 영역 settings.json을 완화하는 두 가지 방법을 보았습니다.

완화 방법 1 - 사용자 전용 설정

작업 영역별로 설정이 설정되는 것을 금지합니다. 이는 이미 VSCode에서 git.path, terminal.integrated.shell.linux 및 기타 몇 가지 설정에 사용되고 있습니다.

일부 사용자의 호환성을 깨뜨릴 수 있지만 전례가 있습니다.
참조: https://vscode.readthedocs.io/en/latest/getstarted/settings/#settings-and-security

완화 방법 2 - 확인 프롬프트

이 설정이 작업 영역에서 설정된 경우 바이너리를 실행하기 전에 사용자에게 설정을 확인하도록 요청합니다.
이 방법은 기존 호환성을 깨뜨리지 않으며, 버전 2.1.7부터 ESLint 확장 프로그램이 채택한 방법입니다.

개념 증명

Linux

  1. VSCode 확장 프로그램 eg2.vscode-npm-script의 취약한 버전(0.3.13 또는 이전)을 설치합니다.
  2. VSCode에서 linux-poc 디렉토리를 폴더로 엽니다.
  3. VSCode에서 package.json 파일을 클릭하여 봅니다.
  4. 실행을 증명하기 위해 /tmp/output.txt 파일이 생성됩니다.

Windows

  1. VSCode 확장 프로그램 eg2.vscode-npm-script의 취약한 버전(0.3.13 또는 이전)을 설치합니다.
  2. VSCode에서 windows-poc 디렉토리를 폴더로 엽니다.
  3. VSCode에서 package.json 파일을 클릭하여 봅니다.
  4. calc.exe가 실행됩니다.

참고: Windows에서 바이너리에 상대 경로를 사용할 수 없었지만, 이는 Windows에 대한 익숙하지 않음 때문일 수 있습니다.

도구 다운로드