
safe-chain v1.5.15
npm, yarn, pnpm, npx, pnpx, pip, uv 및 poetry를 통해 설치된 악성 코드로부터 Aikido Safe Chain으로 보호하세요. 무료로 사용 가능하며 토큰이 필요 없습니다.
Aikido Safe Chain
- ✅ 개발자 노트북과 CI/CD에서 멀웨어 차단
- ✅ npm과 PyPI 지원 더 많은 패키지 관리자 지원 예정
- ✅ 빌드를 중단시키지 않으면서 48시간 이내에 게시된 패키지 차단
- ✅ 토큰 불필요, 무료, 빌드 데이터 공유 없음
npm 및 PyPI 이상의 보호가 필요하신가요?
Aikido Device Protection은 Safe Chain을 기반으로 구축되어 더 많은 생태계 전반에 걸쳐 패키지 및 확장 보안을 확장합니다: npm, PyPI, VS Code, Open VSX - (Cursor, Windsurf, Kiro, Vs Codium, ...), Maven, NuGet, Chrome extensions, Go, Skills.sh AI skills, Ruby, Rust 등.
중앙 집중식 정책 관리, 요청 및 승인 워크플로, 조직 내 모든 개발자 워크스테이션에 대한 가시성을 확보하세요. 동일한 Aikido Intel 피드로 구동됩니다. 수동으로 배포하거나 MDM 도구(Jamf, Fleet 또는 Iru)를 통해 관리할 수 있습니다.
Aikido Safe Chain은 다음 패키지 관리자를 지원합니다:
- 📦 npm
- 📦 npx
- 📦 yarn
- 📦 pnpm
- 📦 pnpx
- 📦 rush
- 📦 rushx
- 📦 bun
- 📦 bunx
- 📦 pip
- 📦 pip3
- 📦 uv
- 📦 poetry
- 📦 uvx
- 📦 pipx
- 📦 pdm
사용법

설치
Aikido Safe Chain은 설치 스크립트를 통해 쉽게 설치할 수 있습니다.
Unix/Linux/macOS```shell
curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.20/install-safe-chain.sh -o /tmp/install-safe-chain.sh
&& echo "0ad25efe15d1fa56105157a454d647223e78eb0c53d1f85e3d10afcd722e7bfd /tmp/install-safe-chain.sh" | sha256sum -c -
&& sh /tmp/install-safe-chain.sh
&& rm /tmp/install-safe-chain.sh
### Windows (PowerShell)```powershell
$installer = Join-Path $env:TEMP "install-safe-chain.ps1"
Invoke-WebRequest "https://github.com/AikidoSec/safe-chain/releases/download/1.5.20/install-safe-chain.ps1" -OutFile $installer -UseBasicParsing
$expectedHash = "468C342C5AABB71200B0BD19950984EDD5C4B39811B653B13A5AD15E0FBA4DFA"
if ((Get-FileHash $installer -Algorithm SHA256).Hash -ne $expectedHash) {
Remove-Item $installer -ErrorAction SilentlyContinue
throw "Checksum verification failed for install-safe-chain.ps1"
}
& $installer
Remove-Item $installer
위의 설치 명령은 항상 특정 릴리스를 참조합니다. 다른 버전을 설치하려면 버전을 원하는 버전 번호로 바꾸세요. 사용 가능한 모든 버전은 릴리스 페이지에 있습니다.
다운로드 무결성
설치 스크립트는 버전이 지정된 릴리스 URL(releases/download/1.5.20/...)에서 제공됩니다. GitHub 릴리스는 불변이므로, 버전이 지정된 URL에 아티팩트가 게시되면 수정하거나 교체할 수 없습니다. 따라서 다운로드하는 파일은 릴리스된 내용과 정확히 동일함이 보장됩니다.
설치 확인
-
❗터미널을 재시작하여 Aikido Safe Chain을 사용하기 시작하세요.
- 이 단계는 npm, npx, yarn, pnpm, pnpx, rush, rushx, bun, bunx, pip, pip3, poetry, uv, uvx, pipx 및 pdm에 대한 셸 별칭이 올바르게 로드되도록 보장하므로 매우 중요합니다. 터미널을 재시작하지 않으면 별칭을 사용할 수 없습니다.
-
설치를 확인하려면 확인 명령을 실행하세요: ```shell npm safe-chain-verify pnpm safe-chain-verify pip safe-chain-verify uv safe-chain-verify
Any other supported package manager: {packagemanager} safe-chain-verify
- 출력은 "OK: Safe-chain works!"를 표시하여 Aikido Safe Chain이 제대로 설치되고 실행 중임을 확인해야 합니다.
-
(선택 사항) 테스트 패키지를 설치하여 멀웨어 차단 테스트:
JavaScript/Node.js의 경우: ```shell npm install safe-chain-test
Python의 경우: ```shell pip3 install safe-chain-pi-test
- 출력은 Aikido Safe Chain이 이 테스트 패키지들을 악성코드로 플래그 지정하여 설치를 차단하고 있음을 보여주어야 합니다.
`npm`, `npx`, `yarn`, `pnpm`, `pnpx`, `rush`, `rushx`, `bun`, `bunx`, `pip`, `pip3`, `uv`, `uvx`, `poetry`, `pipx` 및 `pdm` 명령을 실행할 때, Aikido Safe Chain은 설치하려는 패키지에서 악성코드를 자동으로 검사합니다. 또한 사용 가능한 경우 pip에 대한 Python 모듈 호출(예: `python -m pip install ...`, `python3 -m pip download ...`)을 가로챕니다. 악성코드가 감지되면 명령을 종료하라는 메시지를 표시합니다.
설치된 버전은 다음을 실행하여 확인할 수 있습니다:```shell
safe-chain --version
작동 방식
악성코드 차단
Aikido Safe Chain은 npm 레지스트리와 PyPI에서 패키지 다운로드를 가로채는 경량 프록시 서버를 실행하여 작동합니다. npm, npx, yarn, pnpm, pnpx, rush, rushx, bun, bunx, pip, pip3, uv, uvx, poetry, pipx 또는 pdm 명령을 실행하면 모든 패키지 다운로드가 이 로컬 프록시를 통해 라우팅되며, 프록시는 **Aikido Intel - Open Sources Threat Intelligence**를 기준으로 패키지를 실시간으로 검증합니다. 패키지(깊은 의존성 포함)에서 악성코드가 탐지되면, 프록시는 악성 코드가 사용자 머신에 도달하기 전에 다운로드를 차단합니다.
최소 패키지 연령
Safe Chain은 지원되는 에코시스템에 최소 패키지 연령 검사를 적용합니다.
현재 적용 방식은 에코시스템에 따라 다릅니다:
- npm 기반 패키지 관리자:
- 일반적인 패키지 해석 과정에서 Safe Chain은 레지스트리에서 반환된 패키지 메타데이터에서 설정된 최소 연령보다 새로운 버전을 억제합니다
- 해당 메타데이터 흐름을 우회하는 직접 패키지 다운로드 요청의 경우, Safe Chain은 새로 릴리스된 패키지의 캐시된 목록을 사용하여 요청 자체를 차단할 수 있습니다
- Python 패키지 관리자:
- 패키지 해석 과정에서 Safe Chain은 PyPI 메타데이터 응답에서 너무 최신인 파일과 릴리스를 억제합니다
- 해당 메타데이터 흐름을 우회하는 직접 패키지 다운로드 요청의 경우, Safe Chain은 새로 릴리스된 패키지의 캐시된 목록을 사용하여 요청 자체를 차단할 수 있습니다
기본적으로 최소 패키지 연령은 48시간입니다. 이는 새로 게시된 패키지가 탐지되지 않은 위협을 포함할 가능성이 가장 높은 중요한 기간 동안 추가적인 보안 계층을 제공합니다. 이 임계값을 구성하거나 이 보호를 완전히 우회할 수 있습니다 - 아래의 최소 패키지 연령 구성 섹션을 참조하세요.
셸 통합
Aikido Safe Chain은 셸과 통합되어 npm, npx, yarn, pnpm, pnpx, rush, rushx, bun, bunx 및 Python 패키지 관리자(pip, uv, uvx, poetry, pipx, pdm)를 사용할 때 원활한 경험을 제공합니다. 이러한 명령에 대한 별칭을 설정하여 Aikido Safe Chain 명령으로 래핑되며, 이 명령은 원래 명령을 실행하기 전에 프록시 서버를 관리합니다. 현재 지원하는 셸은 다음과 같습니다:
- ✅ Bash
- ✅ Zsh
- ✅ Fish
- ✅ PowerShell
- ✅ PowerShell Core
셸 통합에 대한 자세한 내용은 셸 통합 문서에서 확인할 수 있습니다.
제거
Aikido Safe Chain을 제거하려면 한 줄 제거 스크립트를 사용하세요:
Unix/Linux/macOS```shell
curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.20/uninstall-safe-chain.sh | sh
### Windows (PowerShell)```powershell
iex (iwr "https://github.com/AikidoSec/safe-chain/releases/download/1.5.20/uninstall-safe-chain.ps1" -UseBasicParsing)
❗터미널을 재시작하세요 — 별칭이 모두 제거되었는지 확인하려면 제거 후 터미널을 재시작해야 합니다.
구성
로깅
--safe-chain-logging 플래그 또는 SAFE_CHAIN_LOGGING 환경 변수를 사용하여 Aikido Safe Chain의 출력을 제어할 수 있습니다.
구성 옵션
여러 소스를 통해 로깅 수준을 설정할 수 있습니다(우선순위 순):
-
CLI 인수 (최우선 순위):
-
--safe-chain-logging=silent- 악성코드가 차단된 경우를 제외하고 모든 Aikido Safe Chain 출력을 억제합니다. 패키지 관리자 출력은 평소처럼 stdout에 기록되며, Safe Chain은 악성코드를 차단하여 프로세스를 종료시킨 경우에만 짧은 메시지를 기록합니다.npm install express --safe-chain-logging=silent -
--safe-chain-logging=verbose- Aikido Safe Chain의 상세 진단 출력을 활성화합니다. 문제 해결이나 Safe Chain이 내부적으로 수행하는 작업을 이해하는 데 유용합니다.npm install express --safe-chain-logging=verbose
-
-
환경 변수: ```shell export SAFE_CHAIN_LOGGING=verbose npm install express
유효한 값: silent, normal, verbose
이는 터미널 세션이나 CI/CD 환경에서 모든 패키지 관리자 명령에 대한 기본 로깅 수준을 설정하는 데 유용합니다.
파일 로깅
--safe-chain-log-file 플래그 또는 SAFE_CHAIN_LOG_FILE 환경 변수를 사용하여 Aikido Safe Chain 출력을 로그 파일에 미러링할 수 있습니다. 파일 로깅은 기본적으로 비활성화되어 있으며 경로가 설정되면 활성화됩니다. 파일 형식(--safe-chain-log-file-format)과 상세 수준(--safe-chain-log-file-verbosity)은 터미널 출력과 독립적으로 제어됩니다.
구성 옵션
다음 중 하나를 통해 설정합니다(우선순위 순):
- CLI 인수 (최우선): ```shell
npm install express
--safe-chain-log-file=~/safe-chain.log
--safe-chain-log-file-format=plain
--safe-chain-log-file-verbosity=normal - 환경 변수: ```shell
export SAFE_CHAIN_LOG_FILE=~/safe-chain.log
export SAFE_CHAIN_LOG_FILE_FORMAT=plain
export SAFE_CHAIN_LOG_FILE_VERBOSITY=normal
- 설정 파일 (
~/.safe-chain/config.json): ```json { "logFile": "~/safe-chain.log", "logFileFormat": "plain", "logFileVerbosity": "normal" }
logFileFormat — json(기본값) 또는 plain.
logFileVerbosity — silent, normal 또는 verbose(기본값). --safe-chain-logging과는 독립적입니다.
최소 패키지 경과 시간
Safe Chain이 패키지 설치를 허용하기 전에 패키지가 얼마나 오래 존재해야 하는지 구성할 수 있습니다. 기본적으로 패키지는 설치되기 전에 최소 48시간 이상 존재해야 합니다.
npm 기반 패키지 관리자의 경우, 이 검사는 현재 두 가지 적용 모드를 가집니다: