🇰🇷 한글 설명
pnpm 패키지 매니저의 버전 10.26.2 및 이전 버전에서는 HTTP 타르볼 종속성(및 Git 호스팅 타르볼)을 무결성 해시 없이 잠금 파일에 저장합니다. 이것은 원격 서버가 잠금 파일이 커밋된 경우에도 각 설치마다 다른 내용을 제공할 수 있도록 허용합니다. 공격자는 패키지에 HTTP 타르볼 종속성을 게시하여 다른 사용자 또는 CI/CD 환경에 다른 코드를 제공할 수 있습니다.
💡 쉬운 설명
pnpm 패키지 매니저의 버전 10.26.2 이전은 HTTP 타르볼 종속성을 안전하지 않게 저장하여 원격 서버가 다른 코드를 제공할 수 있습니다. 패키지를 설치할 때 공격자가 다른 코드를 제공할 수 있습니다. 버전 10.26.0에서는 이 문제가 해결되었습니다.
🇺🇸 원문 (English)
pnpm is a package manager. Versions 10.26.2 and below store HTTP tarball dependencies (and git-hosted tarballs) in the lockfile without integrity hashes. This allows the remote server to serve different content on each install, even when a lockfile is committed. An attacker who publishes a package with an HTTP tarball dependency can serve different code to different users or CI/CD environments. The attack requires the victim to install a package that has an HTTP/git tarball in its dependency tree. The victim's lockfile provides no protection. This issue is fixed in version 10.26.0.
📍 영향받는 시스템
pnpm 버전 10.26.2 및 이전 버전
⚔️ 공격 벡터
공격자는 패키지에 HTTP 타르볼 종속성을 게시하여 원격 서버가 다른 코드를 제공할 수 있습니다.
🛡️ 대응 방법
pnpm을 버전 10.26.0 이상으로 업데이트합니다.
🔧 검증 코드
Python이 설치된 로컬 Linux PC에서 실행할 수 있습니다. Python 패키지 리소스를 사용하여 pnpm 버전을 확인합니다. 실행 결과는 JSON 형식으로 출력됩니다.
python -c "import pkg_resources; print('pnpm' in [d.project_name for d in pkg_resources.working_set] and pkg_resources.get_distribution('pnpm').version <= '10.26.2')" && echo {"result": "취약", "reason": "pnpm 버전이 10.26.2 이하"} || echo {"result": "양호", "reason": "pnpm 버전이 10.26.0 이상"}