
현대 AI 시대의 보안: 악성 AI 에이전트 및 악의적인 npm 패키지로부터 방어
현대 AI 시대를 위한 보안.
완벽한 보안 계층은 없습니다. airgap은 아직 실험적입니다. 기여를 환영합니다!
airgap은 자체 마운트 네임스페이스 내에서 대상 프로그램(예: AI 코딩 에이전트)을 실행하고 비밀을 편집된 버전으로 투명하게 대체합니다. airgap 아래에서 실행되는 프로그램은 보호된 파일을 읽고 수정할 수 있지만 실제 비밀은 전혀 볼 수 없습니다. 현재까지 airgap은 다음을 보호합니다:
.env 및 .env.* (예: .env.local, .env.production) — 파일 이름으로 일치. 값은 <redacted value>로 편집되고 키는 그대로 보입니다; 편집, 추가, 삭제는 실제 파일에 유지됩니다.BEGIN/END 마커는 유지되면서 키 본문은 편집됩니다..npmrc — 파일 이름으로 일치. 인증 토큰 및 비밀번호 값(_authToken, _auth, _password, 레지스트리별 //registry/:_authToken 형식 포함)은 <redacted value>로 편집되고, 레지스트리, 스코프, email, 주석은 그대로 보입니다; 편집은 실제 파일에 유지됩니다.더 많은 비밀 유형이 추가될 예정입니다.
이들은 작업 디렉토리 또는 홈 디렉토리($HOME) 아래 어디에서나 편집됩니다 — 따라서 프로젝트의 .env와 ~/.ssh 키 모두 포함됩니다. 일치는 동적입니다: 실행 후 생성된 파일도 잡아냅니다.
airgap 사용 전후의 .env 내용 비교:
$ cat .env
API_KEY=sk-live-9f8c2a1b4e7d
DB_PASSWORD=hunter2
$ airgap cat .env
API_KEY=<redacted value>
DB_PASSWORD=<redacted value>
AI 에이전트와 함께 사용:
$ airgap claude
show me ./test/fixtures/.env contents
Read 1 file
Here's the file:
DATABASE_URL="<redacted value>"
API_KEY="<redacted value>"
AWS_SECRET_ACCESS_KEY="<redacted value>"
DEBUG="<redacted value>"
...
추가 계층이 악성 패키지로부터 방어합니다: airgap은 예상치 못한 파일에 액세스할 때 — 예를 들어 악성 npm install 스크립트에 의해 — 사용자에게 허가를 요청합니다.
게이트가 활성화되면 airgap은 각 새 파일의 첫 번째 읽기를 허용할지 거부할지 묻습니다. 파일 승인은 해당 파일에만 적용되며, 결정은 실행 동안 유지됩니다. 각 패키지 관리자에는 미리 승인된 파일 목록이 함께 제공됩니다.
예를 들어, postinstall 스크립트가 SSH 키와 .env를 읽으려는 악성 패키지를 설치하는 경우:
$ airgap npm install
...
airgap: npm wants to read the file /home/you/.ssh/id_rsa — allow? [y/N] n
airgap: npm wants to read the file /home/you/.env — allow? [y/N] n
액세스를 거부하려면 n이라고 답하세요.
airgap은 마운트 네임스페이스와 FUSE 오버레이를 사용하는데, 이는 Linux 기능입니다.cargo install airgap
airgap <program> [args...]
airgap은 <program>을 [args...]로 실행하며, argv, 환경, 작업 디렉토리를 변경 없이 전달합니다. <program>이 종료되면 airgap도 동일한 코드로 종료됩니다.
AI 에이전트를 항상 airgap 아래에서 실행하려면 셸 설정(~/.bashrc, ~/.zshrc, ...)에 별칭을 추가하세요:
alias claude="airgap claude"
alias opencode="airgap opencode"
이제 claude(또는 opencode)가 airgap 내에서 투명하게 실행됩니다.
악성 설치 스크립트로부터 보호하기 위해 패키지 관리자를 airgap 아래에서 실행하세요. 또는 셸 설정에 별칭을 추가하세요:
alias npm="airgap npm"
보안 관련 문제를 신고하거나 질문이 있으면 [email protected]으로 이메일을 보내주세요.