기술

Claude가 알아서 npm 패키지를 깐다, 그중 하나가 당신의 파일을 훔칠 수 있다

Susan Hill

Claude의 Computer Use 기능은 평범한 챗봇이 못 하는 일을 한다. 당신의 컴퓨터에서 터미널을 열고, 세계 최대의 오픈소스 저장소인 npm에서 곧장 끌어온 패키지까지 포함해 당신을 대신해 소프트웨어를 설치한다. 매력은 분명하다. 「이 프로젝트를 세팅해 줘」라는 부탁을 한 문장으로 줄여 주기 때문이다. 위험도 같은 문장에 있다. 패키지가 도착하는 순간 npm은 그 패키지가 함께 가져온 시작 코드를 실행할 수 있고, 이제 방아쇠를 당기는 것은 자율 에이전트이기 때문이다.

AI 에이전트에게 코드를 쓰거나 돌리도록 맡기는 누구에게나, 그리고 그것은 개발자와 취미가, 기술 배경이 없는 호기심 많은 사람들로 빠르게 불어나는 무리인데, 현실적인 질문은 단도직입적이다. 당신이 한 번도 들여다보지 않은 패키지를 Claude가 설치하고, 그 패키지가 착지하는 순간 당신의 파일을 복사하도록 만들어진 것이라면, 그것을 막았어야 할 사람은 누구였나? 한 보안 연구자의 최근 영상은 바로 그 상황을 따라가며, AI가 망설임 없이 진행하는 일상적인 설치 도중 함정이 깔린 패키지가 로컬 파일을 읽는 모습을 보여준다.

이 메커니즘은 새롭지 않다. 그리고 바로 그 점이 그것을 심각하게 만든다. npm 패키지는 설치 스크립트를 선언할 수 있다. 패키지가 프로젝트에 추가되는 순간 자동으로 돌아가는 작은 명령들로, 그 안의 단 한 줄도 의도적으로 쓰이기 전에 작동한다. 이것은 결함이 아니라 문서로 기록된 동작이다. 정상적인 도구가 스스로 컴파일하거나 환경을 준비하도록 해준다. 동시에 어떤 패키지든 설치 시점에 당신과 똑같은 권한으로 당신의 기기에서 코드를 실행할 수 있다는 뜻이고, 보안팀은 이를 수년째 경고해 왔다.

세상이 그 판돈의 크기를 날카롭게 다시 떠올린 것은, 공격자들이 주당 수천만 번 내려받히는 네트워크 라이브러리 Axios의 메인테이너 계정을 장악하고, 개발자들의 기기에 원격 접속 트로이목마를 설치하는 악성 의존성을 몰래 끼워 넣었을 때였다. 그들은 진짜 Axios 코드는 건드리지도 않았다. 일은 설치 스크립트가 했다. Axios는 공교롭게도 수많은 다른 애플리케이션과 더불어 Claude Code 자체 안의 한 부품이기도 하다. 당신이 신뢰하는 도구와 그것이 뒤에서 조용히 끌어오는 코드 사이의 거리가 얼마나 가까운지를 보여준다.

이 시연이 그 익숙한 그림에 더하는 것이 바로 에이전트다. 설치를 직접 돌리는 사람은 적어도 멈춰서 패키지 이름을 읽고, 철자가 틀렸거나 막 게시되었음을 알아채고 물러설 수 있다. 느슨한 지시에 따라 움직이는 AI 에이전트에게는 그런 반사가 없다. 필요하다고 판단한 것을 설치한다. 게다가 Computer Use는 화면을 읽고 커서를 움직이며 입력까지 하기 때문에, 독이 든 의존성 하나는 코드 편집기 안에 갇혀 있지 않는다. 바탕화면 전체를 마음껏 누빈다.

이것이 무엇이고 무엇이 아닌지 정확히 해 둘 필요가 있다. 이것은 Claude에만 있는 숨겨진 뒷문이 아니며, 모델이 속아서 자기 규칙을 어기게 되었다는 증거도 아니다. 어떤 자율 프로그램에든 소프트웨어를 설치할 힘을 준 것과, 십 년 넘게 기본값으로 설치 코드를 실행해 온 저장소가 합쳐진, 예견 가능한 결과다. Claude를 같은 권한을 가진 다른 어떤 코딩 에이전트로 바꿔도 그림은 똑같다. 위험은 자율성과 저장소에 사는 것이지, 한 회사의 챗봇에 사는 것이 아니다.

Anthropic은 오히려 반대 방향으로 밀고 있다. 회사는 최근 자사 코딩 도구를 위해 에이전트를 시스템의 나머지로부터 차단하고, 읽을 수 있는 파일과 닿을 수 있는 서버를 제한하는 샌드박스를 내놓았으며, 그 바탕이 되는 격리 도구를 다른 개발자들이 쓰도록 오픈소스로 공개했다. 논리는 이 시연이 드러낸 바로 그것이다. 당신의 SSH 키에 닿지 못하는 에이전트는 그것을 유출할 수 없고, 낯선 서버에 연결하지 못하는 에이전트는 당신의 파일을 어디로도 보낼 수 없다. 회사는 그 경계가 사용자에게 보여주는 권한 요청을 약 84퍼센트 줄인다고 말한다. 모든 것을 묻는 도구는 사람들에게 금세 예를 누르도록 길들이기 때문에 이는 중요하다.

이 도구들을 실제로 쓰는 사람에게 방어책은 지루하지만 효과적이다. 에이전트를 샌드박스나 컨테이너, 또는 쓰고 버리는 가상 머신 안에서 돌려, 나쁜 패키지가 닿을 수 있는 최악이 버려도 되는 환경에 그치게 하라. 작업 흐름이 허락하는 곳에서는 자동 설치 스크립트를 꺼라. 몇몇 새 패키지 매니저는 이미 기본값으로 그렇게 한다. 자격 증명과 키, 개인 파일은 에이전트가 제멋대로 구는 기기에서 떨어뜨려 두라. 그리고 「이것 좀 깔아 줘」를 「이 이메일 첨부를 열어 봐」에 줄 만한 경계심으로 대하라. 속을 들여다보면 그쪽에 더 가깝기 때문이다.

시연의 그 특정 패키지는 한 연구자의 증명이지 실제 발병이 아니며, 진짜 사용자에게 닿았다는 징후도 없다. 가만히 있지 않을 것은 그 뒤에 있는 패턴이다. 에이전트 기반 코딩은 그것을 안전하게 지킬 습관보다 빠르게 기본이 되어 가고 있고, 이 에이전트들이 기대는 저장소는 설치 명령을 치는 것이 사람이 아닌 세상을 위해 만들어진 적이 없다. 그 틈이 메워지기 전까지, 소프트웨어 보안의 가장 오래된 규칙은 이제 새로운 종류의 사용자를 가리킨다. 당신의 에이전트가 설치하는 것은 곧 실행한다. 그러니 시작하게 두기 전에 무엇을 만져도 되는지부터 정하라.

토론

댓글 0개가 있습니다.