
pmg v0.27.0
PMG는 프록시, 샌드박스 및 SafeDep의 위협 인텔리전스 피드를 사용하여 악성 오픈 소스 패키지로부터 개발자와 AI 에이전트를 보호합니다.
패키지 매니저 가드 (PMG)
악성 npm 및 pip 패키지가 설치되기 전에 차단합니다.
이미 사용 중인 패키지 매니저를 위한 심층 방어.
왜 PMG인가?
개발자와 AI 코딩 에이전트는 매일 패키지를 설치합니다. 모든 npm install 또는 pip install은 아무도 검토하지 않는 수천 줄의 코드를 실행합니다.
인기 생태계에서 발생한 최근 침해 사례:
- Mini Shai-Hulud - 300개 이상의 인기 패키지가 손상됨
- litellm 1.82.8 - 인기 AI 프록시 라이브러리가 자격 증명을 유출하도록 손상됨
- telnyx 4.87.2 - 합법적인 통신 SDK가 PyPI에서 탈취됨
- pino-sdk-v2 - 인기 pino 로거로 위장한 오타 스쿼트 패키지
PMG는 무료이며 오픈 소스(Apache 2.0)이고, 계정이나 API 키가 필요 없습니다. 모든 패키지 설치를 가로채서 코드가 실행되기 전에 SafeDep의 무료 커뮤니티 API를 통해 알려진 악성코드를 확인합니다. 한 번 설치하면 이후의 모든 npm install, pip install, poetry add를 보호합니다.
PMG 작동 방식
PMG는 심층 방어 접근 방식을 취합니다. 설정이 필요 없으며 Zsh, Bash, Fish에서 작동하고, 각 설치는 코드가 실행되기 전에 활성화된 보호 계층을 통과하며, 이후 감사 추적도 제공합니다.
계층 세부 정보
- 투명한 가로채기 - PMG는
npm,pip및 기타 패키지 매니저를 래핑합니다. 개발자와 AI 에이전트는 동일한 명령을 사용합니다. 워크플로 변경이 없습니다. - 계층 1: 위협 인텔리전스 - PMG는 설치 전에 모든 패키지를 SafeDep의 실시간 위협 인텔리전스와 대조합니다. 알려진 악성 패키지는 차단됩니다. 키나 로그인이 필요 없습니다.
- 계층 2: 정책(의존성 쿨다운) - PMG는 구성 가능한 쿨다운 기간 내에 게시된 패키지 버전을 차단하므로, 최근에 손상된 버전은 해당 기간 동안 건너뜁니다.
- 계층 3: 선택적 샌드박스 - 샌드박싱이 활성화되고 구성되면 PMG는 OS 네이티브 샌드박스(macOS Seatbelt, Linux Landlock 기본값, 또는 Bubblewrap 대체) 내에서 설치를 실행하므로, 위협이 처음 두 계층을 통과하더라도 설치 스크립트의 시스템 접근이 제한됩니다.
- 감사 로깅 - PMG는 모든 설치(무엇을, 언제, 어디서)를 기록하여 검증 가능한 감사 추적을 제공합니다.
PMG 비교
PMG는 개발자와 AI 에이전트를 모두 보호하고 샌드박싱과 쿨다운을 기본 제공하는 유일한 무료 오픈 소스 설치 시점 패키지 방화벽입니다.
| 기능 | PMG | Socket | safe-chain | Snyk | Dependabot |
|---|---|---|---|---|---|
| OSS / 공개 빌드 | ✓ | ✗ | ✓ | ✗ | ✗ |
| 계정 또는 API 키 불필요 | ✓ | ✓ | ✓ | ✗ | ✗ |
| 설치 시점 악성 패키지 차단 | ✓ | ✓ | ✓ | ✗ | ✗ |
| 의존성 쿨다운 정책 | ✓ | ✗ | ✓ | ✗ | ✗ |
| 런타임 샌드박싱 | ✓ | ✗ | ✗ | ✗ | ✗ |
| AI 코딩 에이전트 투명 보호 | ✓ | ✗ | ✗ | ✗ | ✗ |
| 로컬 감사 로그 | ✓ | ✗ | ✗ | ✗ | ✗ |
| 알려진 CVE 수정 PR | ✗ | ✗ | ✗ | ✓ | ✓ |
빠른 시작
1. 설치
curl -fsSL https://raw.githubusercontent.com/safedep/pmg/main/install.sh | sh
Homebrew, npm 및 기타 설치 방법은 설치를 참조하세요.
2. 설정
패키지 매니저를 가로채도록 PMG를 셸에 연결합니다.
pmg setup install
# 변경 사항을 적용하려면 터미널을 다시 시작하세요
팁: PMG 업그레이드 후
pmg setup install을 다시 실행하여 새 구성 옵션을 적용하세요.Linux 전체 사용자 / 골든 이미지:
sudo pmg setup install --system— docs/system-install.md 참조.
설치를 검증하고 보호가 작동하는지 확인합니다:
pmg setup doctor
선택 사항: PMG는 실행 시 패키지 매니저에 주입하는 즉석 CA로 HTTPS 트래픽을 검사합니다. 여러 실행에 걸쳐 단일 CA를 유지하고 OS 신뢰 저장소에 신뢰하려면(CA 환경 변수를 무시하는 도구, 예: macOS 및 Windows의 Go에 필요), 한 번 설치하세요:
pmg setup cert install # 사용자 범위, sudo 불필요 pmg setup cert status # 신뢰 상태 및 만료 확인범위, 교체 및 제거는 인증 기관을 참조하세요.
3. 사용
PMG가 위협을 차단하는 모습을 확인합니다.
npm install --no-cache --prefer-online [email protected]
참고:
safedep-test-pkg는 테스트 및 검증 목적으로 SafeDep 데이터베이스에서 악성으로 표시된 무해한 테스트 패키지입니다.
평소처럼 패키지 매니저를 계속 사용하거나 AI 코딩 에이전트가 실행하도록 하세요. PMG가 경로에 위치하여 악성 패키지를 차단합니다.
npm install express
# 또는
pip install requests
지원되는 패키지 매니저
PMG는 이미 사용 중인 도구를 지원합니다:
| 생태계 | 도구 | 명령 예시 |
|---|---|---|
| Node.js | npm | npm install <pkg> |
pnpm | pnpm add <pkg> | |
yarn | yarn add <pkg> | |
bun | bun add <pkg> | |
npx | npx <pkg> | |
pnpx | pnpx <pkg> | |
| Python | pip | pip install <pkg> |
pipx | pipx run <pkg> | |
poetry | poetry add <pkg> | |
uv | uv add <pkg> | |
uvx | uvx <pkg> |
설치
설치 스크립트 (MacOS/Linux)
GitHub에서 최신 릴리스를 다운로드하고 SHA-256 체크섬을 검증한 후 $HOME/.local/bin(PATH에 있는 경우) 또는 /usr/local/bin에 설치합니다.
curl -fsSL https://raw.githubusercontent.com/safedep/pmg/main/install.sh | sh
Homebrew (MacOS/Linux)
brew tap safedep/tap
brew install safedep/tap/pmg
NPM (크로스 플랫폼)
npm install -g @safedep/pmg
참고: NPM 기반 설치는 Node.js가
mise또는asdf같은 버전 매니저로 관리될 때 취약할 수 있습니다. 전역npmbin 경로는 활성 Node 버전에 따라 변경되므로, 버전을 전환하면pmg가PATH에서 사라지거나(또는 이전 설치를 가리키게) 될 수 있습니다. 이러한 환경에서는 설치 스크립트나 Homebrew를 선호하세요.
Go (소스에서 빌드)
# $(go env GOPATH)/bin이 $PATH에 있는지 확인하세요
go install github.com/safedep/pmg@latest
바이너리 다운로드
릴리스 페이지에서 플랫폼에 맞는 최신 바이너리를 다운로드하세요.
컨테이너 이미지 (GHCR)
사전 빌드된 멀티 아키텍처(linux/amd64, linux/arm64) 이미지는 모든 릴리스에서 GitHub Container Registry에 게시됩니다. 이미지 엔트리포인트는 pmg입니다.
# 최신 이미지 가져오기 (또는 버전 태그 고정, 예: :v1.2.3)
docker pull ghcr.io/safedep/pmg:latest
# 모든 pmg 명령 실행
docker run --rm ghcr.io/safedep/pmg:latest version
GitHub Actions
한 단계로 CI 워크플로를 보호하세요. PMG는 작업의 모든 npm install, pip install 등을 분석합니다.
- uses: safedep/pmg@v1
with:
server-mode: true
# HTTP_PROXY를 통해 자동으로 가로채짐
- run: npm ci
- name: PMG 정책 적용
if: always()
run: pmg proxy stop --fail-on-violation # 데몬 중지, 차단 시 작업 실패
기본적으로 악성코드 차단과 의존성 쿨다운을 제공합니다. 샌드박스 격리는 sandbox 입력을 통해 선택적으로 활성화됩니다. 입력(paranoid, sandbox, cooldown-days, ...)으로 동작을 조정하거나 config-file을 저장소의 YAML 파일로 지정하세요. 전체 참조는 docs/github-action.md를 참조하세요.
제거
셸 통합 제거:
pmg setup remove
PMG 구성 파일도 제거하려면:
pmg setup remove --config-file
그런 다음 PMG 자체를 제거합니다:
# Homebrew
brew uninstall safedep/tap/pmg
# NPM
npm uninstall -g @safedep/pmg
신뢰 및 보안
PMG 빌드는 재현 가능하며 서명됩니다.
- 증명(Attestations): GitHub 및 npm 증명이 아티팩트 무결성을 보장합니다.
- 검증: 바이너리가 소스 코드와 일치함을 암호학적으로 증명할 수 있습니다.
- 검증 단계는 PMG 신뢰를 참조하세요.
사용자 가이드
지원
PMG가 나쁜 패키지로부터 여러분을 보호했다면, 이 저장소에 스타를 남겨주세요. 다른 사람들이 찾는 데 도움이 됩니다.
기여
기여를 환영합니다. 빌드 및 테스트 지침은 CONTRIBUTING.md를 참조하세요.
모든 기여자에게 감사드립니다 ❤️
텔레메트리
PMG는 익명 사용 데이터를 수집합니다. 비활성화하려면 다음 중 하나를 수행하세요:
- PMG 구성 파일에
disable_telemetry: true설정, 또는 PMG_DISABLE_TELEMETRY=true내보내기.