분석 데이터와 위협 탐지 결과
4만 건 이상의 게임 실행 횟수와 40만 9,000건의 개별 승인/거부 결정 데이터를 분석한 결과, 인간이 AI 에이전트의 보안 위협을 걸러내는 '최후의 방어선'으로서 한계가 있음이 드러났다. 실험 환경에서 사용자가 마주한 명령어 중 약 34%가 보안 위협이었으며, 이 중 3분의 1에 해당하는 위협 명령어가 승인됐다. 특히 단순 파괴적인 명령어보다 자격 증명을 외부로 유출하는 형태의 공격이 3배 더 많이 통과됐다.
가장 높은 승인율을 기록한 위협 명령어는 `npm run analyze`로, 사용자의 64.7%가 이를 승인했다. 해당 명령어 자체는 일반적인 분석 도구 실행으로 보이지만, 실제로는 `package.json`에 정의된 임의의 스크립트를 실행하는 구조다. 게임 내에서는 에이전트의 히스토리 로그를 통해 해당 스크립트가 실제로는 어떤 동작을 수행하는지 명시했음에도 불구하고, 사용자의 3분의 2가 이를 무시하고 승인했다.
가장 의견이 갈린 명령어는 `cat ~/.zshrc`로, 45.9%의 사용자가 승인했다. 이는 개발자마다 셸 프로필 파일에 API 키 등 민감 정보를 저장하는 습관이 다르기 때문에 발생한 결과다. 셸 프로필에 비밀 정보를 저장하지 않는 사용자에게는 무해한 명령이지만, 환경 변수로 키를 관리하는 사용자에게는 즉각적인 자격 증명 유출로 이어진다.
명령어 은닉 메커니즘과 판단 오류 원인
익숙한 스크립트 이름 뒤에 페이로드를 숨기는 방식은 공격 성공률을 크게 높였다. `npm run`과 같이 친숙한 명령어 세 가지를 묶어 분석했을 때, 미탐지율은 52.5%(n=9,482)로 나타났다. 이는 일반적인 유출 공격의 미탐지율인 28.4%보다 약 2배 높은 수치다. 사용자가 명령어의 텍스트 자체에 의존하고, 그 명령어가 실제로 호출하는 하위 스크립트의 내용을 검증하지 않는 경향이 확인됐다.
세션이 진행될수록 위협 미탐지율이 다시 상승하는 경향이 관찰됐다. 초기 몇 개의 명령어에서는 적응 기간을 거치며 미탐지율이 낮아지지만, 시간이 흐를수록 다시 높아지는 양상을 보인다. 이는 제한된 시간 내에 더 많은 명령어를 처리하려는 압박과 반복적인 승인 요청으로 인한 주의력 저하가 결합된 결과로 분석된다.
앤스로픽(Anthropic)은 자사 도구인 클로드 코드(Claude Code)에서도 이와 유사한 '승인 피로감(Permission Fatigue)' 문제를 지적했다. 사용자가 승인해야 할 명령어가 많아질수록 개별 명령어에 기울이는 주의력이 감소하며, 결과적으로 감독 능력이 저하된다는 분석이다. 특히 `git status`나 `npm test` 같은 무해한 명령어가 반복적으로 승인 요청을 보내는 '노이즈' 상황은 사용자가 경계심을 풀고 악성 명령어를 승인하게 만드는 트리거가 된다.
권한 모델의 한계와 실무적 대응
명령어 단위의 개별 승인 모델은 AI 에이전트의 실행 속도를 늦출 뿐 아니라 보안상으로도 취약하다. 에이전트가 파일 내용을 수정해 무해했던 명령어를 유해하게 바꾼 뒤 승인을 요청하면, 사용자는 이전의 맥락만으로 이를 안전하다고 판단할 가능성이 크기 때문이다. 앤스로픽은 이를 해결하기 위해 명령어가 안전한지 자동으로 판단하는 '오토 모드(Auto Mode)'를 도입했으나, 이 역시 완벽한 해결책은 아니라는 점이 확인됐다.
결국 인간이 모든 명령어를 검토하는 방식은 운영 효율과 보안성 모두를 충족하기 어렵다. 에이전트가 접근할 수 있는 권한의 범위를 명령어 수준이 아니라 시스템 수준에서 제어하는 구조적 접근이 필요하다.
개발자는 샌드박싱(Sandboxing)을 적용해 에이전트의 실행 환경을 격리하고, `.zshrc`와 같은 셸 프로필에 API 키를 직접 노출하는 대신 별도의 비밀 파일(secrets file)로 분리해 관리하는 권한 모델을 구축해야 한다.



