
CVE-2023-37478은 npm과 pnpm이 패키지를 설치하는 방식의 차이가 교묘하게 제작된 tar.gz 패키지에 의해 악용될 수 있음을 보여줍니다. 이 저장소는 데모를 보여줍니다.
pnpm vs npm 익스플로잇이 저장소는 tarball 설치 시 npm과 pnpm 간의 차이가 어떻게 악용될 수 있는지 보여줍니다.
이 익스플로잇은 CVE-2023-37478로 기록되어 있습니다.
여기서 제작된 자바스크립트 패키지는 사용자에게 친절한 메시지를 출력한다고 주장합니다. npm으로 설치하면 실제로 그렇습니다.
하지만 동일한 패키지를 pnpm으로 설치하면 불쾌한 메시지가 출력됩니다.
이것이 더 악의적으로 악용될 수 있는 방법을 상상해 볼 수 있습니다.
이 익스플로잇과 함께 동작하는 오래된 취약 버전의 pnpm을 여기에서 찾을 수 있습니다. 이 문제는 최신 버전의 pnpm에서 수정되었으며, 수정 내용은 여기에서 확인할 수 있습니다.
exploitative_package_src에는 패키지의 소스가 들어 있습니다.
(V0.1) 폴더에는 악성 코드가, (V0.2) 폴더에는 정상 코드가 들어 있습니다.
는 악성 버전이 정상 버전보다 먼저 tarball에 추가되도록 tar 패키지를 빌드합니다.
definitely_benign_packagebad_versiongood_versionmake_tar.sh데모를 위해 컴파일된 definitely_benign_package.tgz를 /use_demonstration/로 이동/복제한 후 npm 또는 pnpm으로 설치하세요. 이 과정은 make pnpm/npm으로 단축할 수 있습니다. (작업이 끝나면 make clean도 사용할 수 있습니다.)
설치가 완료되면 node words_of_affirmation.js로 긍정 확언 스크립트를 실행하세요.