특집

주 8000명이 쓰는 에이전트, 위협은 코드가 아니라 문서였다

원본 · We let an AI agent execute Bash and lived to talk about it — Sarah Sanders, PostHog
AI Engineer · Sarah Sanders · PostHog · 2026-09-14 업로드 · 21분

한국어·English

PostHog의 컨텍스트 엔지니어 Sarah Sanders는 자사 에이전틱 CLI 'Wizard'를 기본 설치 경로로 만들자는 논의가 나오자 보안 감사를 자청했다. 결론은 뜻밖이었다. bash 실행 권한 같은 명령어 통제보다, 에이전트에게 먹이는 문서·프롬프트 콘텐츠 자체가 가장 위험한 침투 경로였다는 것이다.

  • Wizard란 무엇인가 — 코드베이스를 읽어 SDK를 설치하고 이벤트를 계측하고 대시보드까지 구축해, 보통 1~2시간 걸리던 설정을 5~6분으로 줄이는 에이전틱 CLI다.
  • 확산 규모 — npx post hog wizard를 실행하는 사용자가 주간 8000명에 도달했다.
  • 위협의 해부 — 명령을 실행할 수 있는 에이전트의 구조는 기본적으로 악성코드를 공격자에게 친절히 건네주는 '말웨어 스타터팩'과 다르지 않다고 진단했다.
  • 초기 보안 수준 — 9개월~1년 전 보안 수준을 '레이어 제로'라 불렀는데, 이는 실제 보안이 아니라 에이전트를 유도만 하는 프롬프트에 불과했다고 밝혔다.
  • 허용 목록 점검 — bash는 기본 차단, 설치 가능한 패키지는 검증된 것만, .env 파일 접근은 원천 차단하고 비밀값은 볼트로 라우팅하는 등 생각보다 허용 목록이 촘촘히 묶여 있었다.
  • 보안팀 감사 결과 — 발견된 취약점 대부분은 명백히 악의적인 게 아니라 선의의 두 요소가 결합해 우연히 구멍을 만든 형태였다며, '공격은 결합하지만 코드 리뷰는 결합하지 않는다'고 정리했다.
  • 진짜 위험 지점 — 진짜 무서운 건 명령어가 아니라 컨텍스트 엔진이 에이전트의 '뇌'에 주입하는 문서·프롬프트·예제 앱 콘텐츠 자체였다고 말했다.
  • 공급망 공격 시나리오 — 누군가 오픈소스 저장소에 PR을 올려 마크다운 파일이나 코드 주석에 프롬프트 인젝션을 심고 LLM 기반 코드리뷰가 이를 통과시키면, PostHog 이름으로 서명된 페이로드가 수천 대의 개발자 머신에서 실행되는 에이전트에 배포될 수 있다고 지적했다.
  • Warlock 스캐너 — 15년 넘게 악성코드 분석에 쓰인 YARA 규칙 엔진 위에 만든 독립 스캐너로, 문자열을 입력받아 범주·심각도·권장 조치가 담긴 탐지 결과만 돌려주고 스스로 행동하지는 않는다.
  • 서브 에이전트 차단 — 대형 작업을 위해 스폰된 서브 에이전트들이 가드레일을 우회해 코드베이스 곳곳에서 비밀값을 만들어내려는 시도를 Warlock이 포착했고, 이로 인해 서브 에이전트 기능 자체를 없앴다.
  • PII 노출 — 명시적 규칙이 없으면 에이전트는 이메일과 전화번호를 이벤트에 그대로 담아버렸다고 밝혔다.
  • 프롬프트 인젝션 실적 — 실제 악성 프롬프트 인젝션은 아직 한 번도 못 잡았지만, 데모 로그인 화면이나 문서 예제 같은 오탐은 대량으로 걸러냈다.
  • LLM 트리아지 원칙 — 탐지·집행은 전적으로 결정론적 YARA 규칙에 맡기고, LLM은 규칙이 차단하지 않은 경우에만 오탐 노이즈를 줄이는 조언자 역할로 제한했으며 모델 오류 시 전체 세션을 닫는 방식으로 설계했다.

그가 한 말

그 부분이 걱정됐어요. 레이어 1인 허용 목록을 파고들기 시작했을 때, 꽤 촘촘하게 제한되어 있다는 걸 알고 조금 안심이 됐습니다.So I was concerned there. Uh layer one uh it was an allow list and when I started digging into this allow list I started to feel a little bit better because it was pretty tightly bounded.5분 31초
Sarah Sanders 발표 화면 · We let an AI agent execute Bash and lived to talk about it — 5분 31초
Sarah Sanders 발표 화면 · 5분 31초 · AI Engineer
매주 수천 명의 개발자가 이걸 쓰는 걸 꿈꿨는데, 어제 막 매주 8,000명이 실행하는 수치를 달성했습니다.we were dreaming of thousands of developers running this a week and yesterday we just hit 8,000 people running this a week.4분 54초
Sarah Sanders 발표 화면 · We let an AI agent execute Bash and lived to talk about it — 4분 54초
Sarah Sanders 발표 화면 · 4분 54초 · AI Engineer
흥미로운 점은 그들이 찾은 구체적인 허점이나 버그 자체가 아니라 그 형태였습니다. 거의 대부분이 명백히 악의적이지 않았어요. 모두 두 가지 선의의 요소가 서로 맞물려 구멍을 여는 것이었습니다.the interesting part wasn't the specific gaps or bugs they found themselves, but it was the shape of them. Because almost none of them were obviously evil. They were all two very innocent, well-intentioned things that were shaking hands and opening a hole.7분 39초
Sarah Sanders 발표 화면 · We let an AI agent execute Bash and lived to talk about it — 7분 39초
Sarah Sanders 발표 화면 · 7분 39초 · AI Engineer
서브 에이전트들이 시크릿을 지어내려 했어요. 코드베이스 어디에서든 시크릿을 끌어오려 했고, 우리는 그걸 차단했습니다. 더 이상 서브 에이전트는 없다고 선언했고, 워록 덕분에 그걸 잡아낼 수 있었습니다.they were trying to invent secrets. They were trying to pull secrets from quite literally anywhere in the codebase and we shut it down. We said no more sub agents and because of the warlock we caught that.13분 0초
Sarah Sanders 발표 화면 · We let an AI agent execute Bash and lived to talk about it — 13분 0초
Sarah Sanders 발표 화면 · 13분 0초 · AI Engineer

이해관계 · 발화자는 PostHog 소속으로, 소개한 Wizard·Warlock·컨텍스트 엔진은 모두 자사가 만든 오픈소스 제품이다.

덧붙임 — 여기에 하나 덧붙이면, 이 사례가 말하는 건 '허용 목록만 촘촘하면 안전하다'는 통념이 깨졌다는 점이다. 실제 구멍은 명령 실행 권한이 아니라 에이전트에게 먹이는 문서 콘텐츠, 즉 팀 스스로가 만든 공급망에서 났다.

오늘 밤 해볼 수 있는 한 가지
자신이 만든 에이전트가 외부 문서(README, PR, 마크다운, 코드 주석)를 런타임 컨텍스트로 읽어 들이는 지점이 어디인지 하나만 골라, 거기에 "ignore all previous instructions" 같은 전형적 인젝션 문구를 실제로 넣어 통과되는지 30분 안에 테스트해 본다.