AI 에이전트 명령 승인 4만 판, 사람은 위협 3개 중 1개를 놓쳤다
Humans missed 1 in 3 threats approving AI agent commands across 40k game runs
TL;DR Highlight
4만 판 승인 게임에서 사람은 위협 명령의 33.7%를 승인해 버렸다
Who Should Read
Claude Code·Codex 같은 코딩 에이전트의 명령 승인 프롬프트를 보안 장치로 믿고 쓰는 개발자
Core Mechanics
- 위협 3개 중 1개를 놓쳤다
- 4만 판, 승인/거부 40만 9천 건을 분석했다.
- 평균 정확도는 66.3%였다.
- 32.9%의 세션은 점수가 마이너스였다.
- 자격 증명 유출이 파괴 명령보다 3배 더 놓쳤다
- rm -rf /, chmod -R 777 / 같은 명백한 파괴 명령의 미탐률은 11.7%였다.
- 인증 정보 유출·코드 실행류는 33.4%, ~/.aws/credentials 읽기 같은 범위 위반은 35.0%였다.
- npm run은 가장 큰 사각지대였다
- npm run analyze는 64.7%가 승인해 가장 많이 놓친 명령이었다.
- package.json의 스크립트에 curl 전송이 숨어 있었고 히스토리 로그에도 보였다.
- npm run 3종은 52.5% 미탐으로, 다른 유출형 공격 28.4%의 약 2배였다.
- 끝으로 갈수록 미탐률이 다시 올랐다
- 초반 몇 개 명령에서는 미탐률이 개선됐다.
- 이후 게임 끝으로 갈수록 다시 올랐다.
- 시간 압박 탓일 수도 있다고 저자도 말한다.
Community Reactions
- 게임 설계 자체가 결과를 무의미하게 만든다는 의견
- 일부 명령이 위험한지 모호했고 시간제한과 오답 페널티가 있었다는 지적이다.
- 실패해도 대가가 없는 게임이라 실무에 일반화할 수 없다는 반론이 여러 개 있었다.
- 샌드박스가 답이라는 경험담이 많았다
- Apple Container나 별도 사용자 계정으로 에이전트를 돌리고 네트워크를 막는다는 경험이 나왔다.
- yoloAI, claude-contained, Eclipse Enclave 같은 도구가 소개됐다.
- 허용 목록은 모델이 인라인 스크립트를 쓰면 깨진다는 의견
- 한 댓글러는 허용 목록이 모델의 인라인 스크립트로 자주 무력화된다고 했다.
- 승인 프롬프트를 쓰는 이유는 유출보다 데이터 삭제 같은 의도 불일치를 막기 위해서라고 했다.
- Auto mode는 보안 위협만 보고 삭제 게이트는 조정할 수 없다는 지적이 있었다.
- 명령이 아니라 파일 단위로 묻자는 의견
- 파일 읽기/쓰기 권한을 묻고 명령은 bwrap으로 감싸자는 제안이 있었다.
- 반복 승인을 룰과 LLM 모니터로 대체하는 Watcher를 만든다는 팀도 있었다.
How to Apply
- 에이전트를 샌드박스·별도 계정에서 돌리기
- 오늘 Docker나 Apple Container에 에이전트를 넣고 네트워크를 막아 보자.
- 홈 디렉터리 대신 작업 디렉터리만 마운트하라.
- chmod 0700 $HOME으로 다른 사용자 접근을 막아라.
- npm run 승인 전에 scripts 확인하기
- 에이전트가 package.json이나 빌드 스크립트를 수정한 뒤에는 npm run 승인 전에 git diff를 보라.
- scripts 항목에 curl이나 외부 전송이 있는지 확인하라.
- 시크릿을 .zshrc 밖으로 빼기
- API 키 export를 별도 시크릿 파일로 옮기고 .zshrc에서 source하라.
- 에이전트의 접근 허용 목록에서 셸 프로필과 자격 증명 경로를 제외하라.
- 승인 프롬프트를 로그와 알림으로 보완하기
- 승인 횟수를 줄이려면 안전한 명령은 허용 목록으로 자동 통과시켜라.
- 위험 명령만 사람이 보도록 구분하라.
Try It
# Claude나 ChatGPT에 붙여넣기 (논문 방법의 간이 버전: LLM이 명령을 먼저 심사)
당신은 코딩 에이전트의 명령 승인 심사관이다. 아래 명령을 보고 APPROVE 또는 DENY로 판정하라.
규칙:
- npm run, make, 스크립트 실행은 반드시 해당 스크립트 내용을 가정하지 말고 "스크립트 내용 확인 필요"로 표시한다.
- 자격 증명(~/.aws, ~/.kube, ~/.ssh, .env)을 읽거나 외부로 보내면 DENY.
- 알 수 없는 URL로 curl/wget 하거나 낯선 패키지를 설치하면 DENY.
- crontab, git config, 셸 프로필 수정은 DENY.
프로젝트 package.json scripts:
{{package.json scripts}}
심사할 명령 목록:
{{명령 목록}}
출력: 명령별로 판정, 이유 한 줄, 위험 범주(파괴/지속/유출/범위위반)를 표로 정리하라.
이어서 해 볼 것: 같은 명령 목록을 직접 승인/거부해 보고 LLM 판정과 비교해 보라.Terminology
관련 논문
같은 시뮬레이션, 다른 근거: 도구 출력을 파일로 넘기면 LLM 에이전트 정확도가 어디서 깎이나
긴 툴 출력을 파일로 넘기자 GPT-5.1은 정확도 11.3%p 하락, 정식 출력 지정하니 회복
가짜 뉴스가 진짜 폭락을: LLM 트레이딩 에이전트 대상 정보 주입 공격
가짜 헤드라인 한 줄로 LLM 트레이딩 에이전트 62%를 조종했다(프롬프트 주입은 14%)
Harness Engineering 101: LLM은 뇌, harness는 몸
에이전트는 JSON 배열을 관리하는 루프이고, 16개 챕터로 직접 만들어 본다
Harness²: 에이전트 harness를 스스로 고쳐 쓰는 재귀 최적화 프레임워크
모델은 고정하고 harness를 재귀로 고쳤더니 벤치마크 점수가 최대 11.8%p 올랐다
해고된 Savannah 경찰관, ICE 요원 남편에게 Flock 계정 공유
경찰관이 Flock 계정을 남편(ICE 요원)에게 공유했고, 감사에서 983건 검색이 드러나 해고됐다
tmux와 Claude Code: 세션, send-keys, 그리고 한계선
tmux로 Claude Code 여러 개를 돌리면 편하지만 에이전트 4개쯤에서 한계가 온다
Hybrid Reasoning Agents: 잠재 공간에서 생각하고 텍스트로 행동하는 LLM 에이전트
잠재 공간 추론과 텍스트 도구 호출을 섞었더니 성능 10.4%↑, 토큰 최대 54.7%↓