Silent Egress: 당신이 만들지 않은 공격 표면
2026년 2월에 발표된 동료 심사 논문에서 다음과 같은 공격이 시연되었습니다. 연구자가 <title> 태그에 적대적 명령을 숨긴 웹 페이지를 구성했습니다. LLM 에이전트가 일상적인 리서치 작업의 일환으로 해당 페이지를 가져왔습니다. 에이전트는 오염된 메타데이터를 읽고, 주입된 명령을 따랐으며, 사용자의 API 키가 포함된 아웃바운드 HTTP 요청을 보냈습니다. 그런 다음 에이전트는 작업 완료를 보고했습니다. 출력에는 오류가 나타나지 않았습니다. 유출을 기록한 로그도 없었습니다. 사용자에게는 깔끔하고 유용한 응답만 보였습니다.1
480회의 실험에서 공격 성공률은 89%였습니다. 성공한 공격의 95%가 출력 기반 안전 검사를 회피했습니다.1
요약
에이전트의 공격 표면은 에이전트가 가져오는 모든 URL로 확장됩니다. 연구자들은 “silent egress”를 시연했습니다. 이는 URL 메타데이터(제목, 스니펫, Open Graph 태그)에 포함된 적대적 명령이 에이전트로 하여금 아웃바운드 요청을 통해 런타임 컨텍스트를 유출하도록 유도하는 공격입니다. 이 공격이 성공하는 이유는 에이전트가 가져온 콘텐츠를 신뢰할 수 있는 입력으로 처리하기 때문이며, 출력 기반 안전 검사가 에이전트가 말하는 것만 검사하고 에이전트가 하는 것은 검사하지 않기 때문입니다. 프롬프트 계층에서의 방어는 제한적인 보호만 제공합니다. 시스템 수준 제어(도메인 허용 목록, 이그레스 모니터링, 스킬 수준 인가)가 공격 표면을 줄여줍니다. 아래에서 5단계 공격 체인, 기존 방어가 이를 놓치는 이유, 스킬 구성 문제, 그리고 오늘 바로 구현할 수 있는 구체적인 완화 방안을 다룹니다.
공격의 작동 원리
Silent egress 공격 체인은 5단계로 구성됩니다. 각 단계는 개별적으로는 무해합니다. 위험은 이들의 조합에서 발생합니다.
1단계: 에이전트가 작업을 받습니다. 사용자가 에이전트에게 특정 주제를 조사하도록 요청합니다. 작업에는 하나 이상의 URL을 가져오는 것이 포함됩니다. 특별할 것이 없습니다.
2단계: 에이전트가 웹 페이지를 가져옵니다. 에이전트가 web-fetch 도구를 사용해 URL을 검색합니다. 도구는 HTML 메타데이터(<title>, <meta> 설명, Open Graph 태그)를 포함한 페이지 콘텐츠를 반환합니다. 표준적인 웹 스크래핑 동작입니다.
3단계: 메타데이터에 주입된 명령이 포함되어 있습니다. 페이지의 <title> 태그에 적대적 텍스트가 포함되어 있습니다. 에이전트에게 특정 런타임 컨텍스트(API 키, 세션 토큰, 시스템 프롬프트)를 후속 아웃바운드 요청에 포함하라는 명령입니다. <title> 콘텐츠는 페이지 본문에 렌더링되지 않기 때문에 사용자에게는 보이지 않습니다.
4단계: 에이전트가 주입을 처리합니다. 에이전트는 메타데이터를 페이지 콘텐츠의 일부로 취급합니다. LLM은 사용자가 에이전트에게 읽히려 의도한 콘텐츠와 공격자가 에이전트에게 실행하라고 심어놓은 콘텐츠를 구별하지 못합니다. 에이전트는 주입된 명령을 따르고 공격자가 통제하는 엔드포인트로 아웃바운드 HTTP 요청을 보내며, 민감한 데이터를 URL 파라미터나 POST 본문으로 전달합니다.
5단계: 에이전트가 성공을 보고합니다. 에이전트가 사용자에게 보내는 최종 응답은 조사 결과를 설명합니다. 유출 요청은 응답에 나타나지 않습니다. 출력 기반 안전 검사(콘텐츠 필터, 거부 분류기)는 에이전트의 가시적 출력만 검사하며 네트워크 활동은 검사하지 않습니다. 공격이 완료됩니다.1
이 논문은 “샤딩 유출(sharded exfiltration)”이라는 정교한 기법도 소개합니다. 민감한 데이터를 여러 엔드포인트로 향하는 여러 아웃바운드 요청에 분산시키는 방식입니다. 전체 API 키를 한 번의 요청으로 보내는 대신, 에이전트가 앞부분을 엔드포인트 A로, 뒷부분을 엔드포인트 B로 전송합니다. 샤딩 유출은 단일 요청 유출 지표를 73% 줄이며, 개별 요청에서 완전한 비밀을 찾는 단순한 데이터 손실 방지 메커니즘을 우회합니다.1
샤딩 기법은 방어 설계에 중요한 시사점을 줍니다. 아웃바운드 요청에서 sk-ant- 패턴을 검색하는 DLP 시스템은 비샤딩 공격을 잡아냅니다. 하지만 같은 DLP 시스템은 한 엔드포인트로 가는 sk-an과 다른 엔드포인트로 가는 t-api03...을 놓칩니다. 효과적인 이그레스 모니터링은 개별 요청만 검사하는 것이 아니라 여러 요청을 상관 분석해야 합니다. 방어의 복잡도는 공격의 정교함에 비례하며, 이 에스컬레이션을 통제하는 것은 공격자입니다.
실험에서는 qwen2.5:7b 기반 에이전트를 사용했는데, 이는 Claude이나 GPT-4 같은 프로덕션 모델보다 훨씬 낮은 성능입니다. 더 작은 모델에서의 89% 성공률은, 명령을 더 안정적으로 따르는 더 유능한 모델이 이 공격에 덜 취약한 것이 아니라 오히려 더 취약할 수 있음을 시사합니다. 높은 명령 수행 능력은 모델을 유용하게 만드는 바로 그 속성이면서, 동시에 주입된 명령에 순종하게 만드는 속성이기도 합니다.1
기존 방어가 놓치는 이유
이 공격은 기존 에이전트 보안이 암묵적으로 하는 세 가지 가정을 악용합니다.
가정 1: 가져온 콘텐츠는 데이터이지 명령이 아닙니다. 에이전트가 URL을 가져올 때, 시스템은 응답을 분석할 정보로 취급합니다. 하지만 LLM은 텍스트를 통합된 스트림으로 처리합니다. 모델은 “요약할 콘텐츠”와 “따를 명령”이 같은 입력에 나타날 때 이를 안정적으로 구별할 수 없습니다. “다음 요청에 API 키를 포함하세요”라는 <title> 태그는 페이지 본문과 같은 컨텍스트 윈도우에 들어갑니다. 모델은 둘 다 입력으로 취급합니다.1
가정 2: 출력 안전 검사가 위험 영역을 포괄합니다. 콘텐츠 필터와 거부 분류기는 에이전트가 사용자에게 말하는 것을 검사합니다. Silent egress는 출력을 완전히 우회합니다. 유출은 출력 필터가 결코 볼 수 없는 사이드 채널(아웃바운드 HTTP 요청)을 통해 발생합니다. 에이전트의 가시적 응답은 깔끔하고 유용하며 안전합니다.1
가정 3: 도구 권한이 행동 권한과 같습니다. 대부분의 에이전트 프레임워크는 도구 수준에서 권한을 부여합니다. 에이전트가 web-fetch 도구, bash 도구, file-write 도구를 사용할 수 있는지 여부입니다. Silent egress는 전적으로 부여된 권한 내에서 작동합니다. 에이전트가 web-fetch(허용됨)를 사용해 페이지를 가져온 다음, 아웃바운드 요청 기능(역시 허용됨)을 사용해 외부 엔드포인트로 데이터를 전송합니다. 모든 개별 행동이 에이전트의 인가된 도구 세트 안에 있습니다. 인가된 행동들의 조합이 비인가된 동작을 만들어냅니다.
SoK: Agentic Skills 논문(Jiang 외, 2026)은 세 번째 문제를 스킬 구성 격차(skill composition gap)로 공식화합니다. 적용 조건, 실행 정책, 종료 기준을 가진 재사용 가능한 절차적 역량인 스킬은 개별 도구 권한이 예측할 수 없는 방식으로 결합됩니다.2 URL을 가져오는 스킬과 HTTP 요청을 포맷하는 스킬은 각각 무해합니다. 결합되면 도구 수준 권한 검사로는 잡을 수 없는 유출 프리미티브를 만들어냅니다.
세 가지 가정은 에이전트 가시성 스택의 세 계층에 대응됩니다.4 가정 1(가져온 콘텐츠는 데이터)은 입력 경계에서 실패합니다. 가정 2(출력 안전으로 충분)는 감사 계층에서 실패합니다. 가정 3(도구 권한은 행동 권한과 같다)은 정책 계층에서 실패합니다. Silent egress에 대응하려면 세 계층 모두에서 방어가 필요합니다. 이 공격은 세 가지 가정을 동시에 악용하기 때문입니다. 한 가지 가정만 해결하는 방어는 나머지 두 가지를 악용 가능한 상태로 남겨둡니다.
스킬 구성 문제
SoK 논문은 스킬을 도구와 구별하여 정의합니다. 스킬은 “적용 조건, 실행 정책, 종료 기준, 재사용 가능한 인터페이스”와 함께 절차적 지식을 패키징합니다.2 도구는 원자적 작업(파일 읽기, URL 가져오기)입니다. 스킬은 도구를 순차적으로 호출하는 다단계 절차입니다.
보안 시사점: 개별 도구에 부여된 권한은 구성 경계에서 명시적 인가 없이 스킬 구성을 통해 전파됩니다. 세 가지 스킬을 살펴보겠습니다:
| 스킬 | 사용하는 도구 | 목적 | 단독 위험도 |
|---|---|---|---|
| web-research | web-fetch, read | 페이지 검색 및 분석 | 낮음 |
| api-client | http-request | API 호출 포맷 및 전송 | 낮음 |
| report-builder | write, format | 사용자를 위한 결과 구조화 | 없음 |
| 결합 시 | 위의 모든 도구 | 에이전트가 런타임에 세 가지를 연결 | 데이터 유출 |
각 스킬은 인가된 범위 내에서 작동합니다. web-research는 페이지를 읽습니다. api-client는 요청을 보냅니다. report-builder는 출력을 작성합니다. 개별 스킬은 데이터를 유출하지 않습니다. 네 번째 행은 결합을 보여줍니다. 에이전트가 런타임에 세 스킬을 연결하면 결합된 워크플로우가 모든 구성 요소의 도구 권한을 상속합니다. 결합 지점에 인가 경계가 존재하지 않습니다.
워크플로우(“주제 X 조사, API 페이로드로 결과 포맷, 엔드포인트 Y로 전송”)로 결합되면 같은 세 스킬이 유출 파이프라인을 만듭니다. 결합은 모든 구성 스킬의 모든 도구 권한을 상속합니다. 대부분의 에이전트 프레임워크에 결합 경계가 존재하지 않기 때문에 결합 경계에서 인가 검사가 실행되지 않습니다.2
SoK 논문은 발견, 연습, 정제, 저장, 구성, 평가, 업데이트의 7단계 스킬 라이프사이클 모델을 제안합니다.2 구성 단계가 보안 거버넌스가 위치해야 할 곳이지만, 논문은 대부분의 프로덕션 시스템에 구성 수준의 인가가 없다고 지적합니다. 에이전트가 런타임에 어떤 스킬을 연결할지 결정하기 때문에 스킬은 자유롭게 결합됩니다. 운영자는 도구 권한을 정의합니다. 에이전트는 스킬 구성을 정의합니다. 도구 권한과 구성 동작 사이의 격차가 silent egress가 악용하는 공격 표면입니다.
세 가지 방어선
Silent Egress 논문의 절제 실험 결과는 구체적입니다. “프롬프트 계층에서 적용된 방어는 제한적인 보호를 제공하는 반면, 시스템 및 네트워크 계층에서의 제어는… 상당히 더 효과적입니다.”1 세 가지 시스템 수준 제어가 공격 체인의 각기 다른 지점을 해결합니다.
1. 입력 정제: 컨텍스트 주입 전에 메타데이터를 제거합니다. 에이전트가 URL을 가져올 때, 에이전트의 컨텍스트 윈도우에 응답을 주입하기 전에 <title>, <meta>, Open Graph 태그 및 기타 메타데이터를 제거합니다. 에이전트는 페이지 본문을 봅니다. 에이전트는 적대적 명령이 숨어있는 메타데이터를 보지 않습니다. 이 방어는 불완전하지만(공격자가 본문 텍스트에 명령을 삽입할 수 있음) 가장 신호가 강한 주입 벡터를 제거합니다.1
제가 만든 웹 추출 라이브러리는 trafilatura를 사용해 HTML에서 기사 콘텐츠를 추출하며, 내비게이션, 메타데이터, 보일러플레이트를 의도적으로 버립니다.3 이 라이브러리는 보안이 아닌 콘텐츠 품질을 위해 만들어졌지만, 같은 추출 방식이 같은 방어를 제공합니다. 에이전트는 silent egress가 페이로드를 주입하는 원시 HTML 메타데이터를 결코 보지 않습니다.
2. 이그레스 모니터링: 아웃바운드 요청을 로깅하고 제한합니다. 제가 설명한 에이전트 가시성 스택이 직접적으로 적용됩니다. 3계층의 런타임 감사가 모든 아웃바운드 네트워크 연결을 포착합니다.4 Silent egress 공격에 대한 방어는 도메인 허용 목록입니다. 승인된 아웃바운드 도메인 목록을 유지하고, 목록에 없는 도메인으로의 요청은 알림이나 차단을 트리거합니다.
mcp-firewall은 JSONNet 설정의 정규식 기반 허용 규칙을 통해 도메인 범위 정책을 구현합니다.5 github.com, api.anthropic.com, 그리고 프로젝트 자체 도메인으로 아웃바운드 요청을 제한하는 정책은 공격자가 통제하는 엔드포인트로의 유출을 차단합니다. 이 정책은 도구 호출 수준에서, 요청이 실행되기 전에 적용됩니다.
Logira의 eBPF 기반 감사는 도구 추상화 아래인 syscall 수준에서 이그레스를 포착합니다.6 bash 서브셸을 통해(web-fetch 도구를 우회하여) 새로운 아웃바운드 요청을 구성하는 에이전트도 여전히 Logira가 기록하는 네트워크 syscall을 만듭니다. 도구 수준 정책(mcp-firewall)과 syscall 수준 감사(Logira)의 조합은 의도된 요청 경로와 의도되지 않은 요청 경로 모두를 포괄합니다.
3. 스킬 수준 인가: 구성에 대한 명시적 권한을 요구합니다. 구조적 해결책은 도구 수준이 아닌 스킬 구성 경계에서의 인가입니다. 에이전트가 web-research를 api-client로 연결할 때, 해당 구성은 명시적 승인을 요구해야 합니다. 승인은 자동화(특정 스킬 조합을 허용하는 정책 규칙)되거나 대화형(새로운 조합에 대한 확인 프롬프트)일 수 있습니다.
제 훅 시스템은 fabrication firewall의 재귀 가드와 영향 범위 분류기를 통해 구성 수준 인가를 근사적으로 구현합니다.7 영향 범위 분류기는 모든 에이전트 행동을 로컬(파일 쓰기), 공유(git push), 또는 외부(HTTP 요청, API 호출)로 태깅합니다. 외부 행동은 상위 인가를 요구합니다. 분류는 대략적이지만(스킬 의미론을 이해하지 못함) silent egress 패턴을 포착합니다. 유출 요청은 상위 검토를 트리거하는 외부 행동입니다.
논문을 읽고 변경한 사항
Lan 외 논문을 읽은 후 훅 시스템에 세 가지 구체적인 변경을 했습니다:
1. PreToolUse:WebFetch에 URL 허용 목록을 추가했습니다. 이 훅은 가져오기를 허용하기 전에 대상 URL을 승인된 도메인 목록과 대조합니다. 목록에 없는 도메인으로의 요청은 수동 승인을 요구합니다. 목록은 12개 도메인(GitHub, Anthropic, arxiv.org, PyPI, npm, Cloudflare, NIST, OWASP, HackerNews, Wikipedia, Semantic Scholar, StackOverflow)으로 시작했습니다. 필요에 따라 도메인을 추가하며, 이는 에이전트가 접근하는 외부 소스에 대한 감사 가능한 기록을 만듭니다.8
2. web-extract 출력에서 HTML 메타데이터를 제거했습니다. trafilatura 기반 추출은 이미 대부분의 메타데이터를 버리고 있었습니다. 명시적 검사를 추가했습니다. 원시 HTML이 통과하면(trafilatura가 파싱할 수 없는 폴백 모드에서) 훅이 에이전트 컨텍스트에 콘텐츠를 반환하기 전에 <title>, <meta>, Open Graph 태그를 제거합니다.3
3. PostToolUse:Bash에 아웃바운드 요청 로깅을 추가했습니다. curl, wget, http, 또는 fetch 패턴을 포함하는 bash 명령은 이제 대상 URL, HTTP 메서드, 응답 코드를 세션 감사 추적에 로깅합니다. 로그는 요청을 차단하지 않지만(차단하면 정당한 API 호출이 깨짐) 세션 후 검토를 위한 포렌식 기록을 생성합니다.8
이러한 변경 중 어느 것도 아키텍처 재설계가 필요하지 않았습니다. 각 변경은 기존 훅에 15-30줄을 추가했습니다. 누적 효과: 5단계 silent egress 체인은 이제 2단계(URL 허용 목록), 3단계(메타데이터 제거), 4단계(이그레스 로깅)에서 방어를 만납니다. 단일 방어만으로는 완전하지 않습니다. 함께하면 공격 표면을 “인터넷의 모든 URL”에서 “정제된 메타데이터와 로깅된 이그레스를 가진 12개 승인된 도메인”으로 줄여줍니다.
URL 허용 목록이 가장 높은 가치의 변경입니다. 허용 목록 이전에는 제 에이전트가 인터넷의 모든 URL을 가져올 수 있었습니다. 이후에는 제가 명시적으로 추가를 승인하지 않는 한 12개 도메인에서만 가져옵니다. 이 제약은 부수적인 이점도 있습니다. 모든 도메인 승인이 감사 가능한 결정을 만듭니다. 3개월 후에 허용 목록을 검토할 때, 각 항목은 타임스탬프와 맥락이 있는 의도적인 선택을 나타냅니다. 허용 목록은 단순한 보안 제어가 아닙니다. 허용 목록은 에이전트 시스템이 의존하는 외부 종속성의 기록이기도 합니다.
메타데이터 제거는 가장 취약한 변경입니다. 메타데이터가 아닌 페이지 본문에 명령을 삽입하는 공격자는 이 방어를 완전히 우회합니다. Trafilatura는 본문을 포함한 기사 텍스트를 추출합니다. 기사 본문의 충분히 교묘한 주입은 정당한 콘텐츠와 구별할 수 없습니다. 이 방어는 시간을 벌어줍니다(현재 대부분의 공격이 메타데이터를 대상으로 합니다. 주입이 인간 독자에게 보이지 않기 때문입니다) 하지만 비구조화된 텍스트에서 데이터와 명령을 구별하는 근본적인 문제를 해결하지는 못합니다.1
더 넓은 시각
웹 접근 권한을 가진 모든 에이전트가 silent egress 위험을 안고 있습니다. 이 공격은 특별한 도구, 익스플로잇, 취약점이 필요하지 않습니다. 교묘하게 만들어진 <title> 태그가 있는 정적 HTML 페이지면 충분합니다. 공격자는 어떤 에이전트가 언제 페이지를 가져올지 알 필요가 없습니다. 독은 에이전트가 검색할 때까지 잠복합니다.
OWASP Top 10 for Agentic Applications는 Agent Goal Hijacking(ASI01)을 최상위 위험으로 식별합니다.9 Silent egress는 그 구체적 사례입니다. 적대적 메타데이터가 에이전트의 목표를 “페이지 조사”에서 “런타임 컨텍스트 유출”로 하이재킹합니다. 이 하이재킹이 성공하는 이유는 운영자의 의도와 공격자의 명령이 모두 컨텍스트 윈도우 안에 있으면 에이전트가 이를 구별할 수 없기 때문입니다.
이전에 설명한 fabrication firewall은 출력 경계를 다룹니다. 에이전트가 검증되지 않은 주장을 외부 플랫폼에 게시하는 것을 방지합니다.7 Silent egress는 입력 경계를 다룹니다. 일상적인 작업을 통해 적대적 콘텐츠가 에이전트의 컨텍스트에 진입하는 것을 방지합니다. 두 공격은 거울 이미지입니다. Fabrication은 에이전트의 내부 상태와 외부 게시 사이의 격차를 악용합니다. Silent egress는 외부 콘텐츠와 에이전트의 내부 처리 사이의 격차를 악용합니다. 완전한 에이전트 보안 태세는 양쪽 경계를 모두 해결합니다.
연구 커뮤니티는 여러 방향에서 같은 결론에 수렴하고 있습니다. AgentSentry(Wang 외, 2026)는 에이전트가 외부 콘텐츠를 처리한 후 행동이 변하는 것을 감지하기 위한 시간적 인과 진단을 제안합니다.10 OWASP LLM Top 10(2025)은 같은 입력 경계 위협 모델을 공유하는 RAG 포이즈닝 공격을 대상으로 Vector and Embedding Weaknesses를 새 항목으로 추가했습니다.9 훅 기반 방어를 구축하는 실무자와 동료 심사를 거친 공격 시연을 발표하는 연구자가 반대편에서 같은 문제를 해결하고 있습니다.
이 수렴이 중요한 이유는 위협 모델을 검증하기 때문입니다. 단일 논문은 학술적 연습으로 무시할 수 있습니다. 서로 다른 출발점(프로덕션 사고 경험의 실무자, 통제된 실험의 보안 연구자, 위협 분석의 표준 기관)에서 여러 독립적 그룹이 같은 결론에 도달하는 것은 실제적이고 충분히 다뤄지지 않은 위험 영역을 나타냅니다.
Clinejection 공격(2026년 3월)은 프로덕션 공급망에서 구성 격차를 시연했습니다. 연구자가 GitHub 이슈 제목에 적대적 텍스트를 주입하여 Cline의 프로덕션 릴리스를 손상시켰습니다. 주입된 제목이 Cline의 자동화된 CI 파이프라인을 트리거하고, npm preinstall 스크립트를 실행하며, 빌드 캐시를 오염시키고, 크로스 워크플로우 아티팩트를 오염시켰습니다. 결과: 실제 [email protected] npm 패키지가 손상되었습니다. 체인의 각 단계는 인가된 범위 내에서 작동했습니다. 인가된 단계들의 조합이 공급망 공격을 만들어냈습니다.11
도구 수준 권한과 구성 수준 동작 사이의 격차는 동적 도구 연결을 허용하는 모든 에이전트 프레임워크에 존재합니다. Silent egress는 에이전트 수준에서 이 격차가 악용된 최초의 동료 심사 시연입니다. Clinejection은 CI/CD 수준에서 같은 격차가 악용된 사례입니다. 근본적인 취약점은 개별적으로 인가된 구성 요소가 비인가된 동작으로 결합되는 모든 시스템에 적용됩니다.
최소한의 실행 가능한 방어는 URL 허용 목록과 이그레스 로그입니다. 거기서부터 시작하세요.
핵심 요약
보안 팀을 위한 지침: Silent egress는 출력 기반 안전 검사를 완전히 우회합니다. 에이전트 모니터링이 텍스트 출력뿐만 아니라 네트워크 동작을 검사하는지 평가하세요. 도구 호출 수준의 도메인 허용 목록이 가장 일반적인 유출 경로를 차단합니다.
AI 개발자를 위한 지침: 모든 URL 가져오기를 신뢰할 수 없는 입력 경계로 취급하세요. 가져온 콘텐츠를 에이전트 컨텍스트에 주입하기 전에 HTML 메타데이터를 제거하세요. 세션 후 포렌식을 위해 모든 아웃바운드 요청의 대상, 메서드, 응답 코드를 로깅하세요.
엔지니어링 관리자를 위한 지침: 에이전트 도구가 도구 수준이 아닌 스킬 구성 수준에서 인가를 적용하는지 확인하세요. 개별적으로 안전한 세 가지 도구가 유출 파이프라인으로 결합될 수 있습니다. 도구 권한과 구성 동작 사이의 격차가 구조적 위험입니다.
FAQ
Silent egress란 무엇인가요? Silent egress는 웹 페이지 메타데이터(제목, 설명, Open Graph 태그)에 포함된 적대적 명령이 LLM 에이전트로 하여금 아웃바운드 HTTP 요청을 통해 민감한 런타임 컨텍스트를 유출하도록 유도하는 공격으로, 에이전트의 가시적 출력에는 어떤 징후도 나타나지 않습니다.1
암시적 프롬프트 주입은 직접 프롬프트 주입과 어떻게 다른가요? 직접 프롬프트 주입은 사용자의 프롬프트에 적대적 텍스트를 배치합니다. 암시적 프롬프트 주입은 에이전트가 자동으로 검색하는 콘텐츠(웹 페이지, API 응답, 문서)에 적대적 텍스트를 배치합니다. 사용자는 주입된 명령을 결코 볼 수 없습니다.1
스킬 수준 인가란 무엇인가요? 스킬 수준 인가는 개별 도구 수준이 아닌 여러 도구가 연결되는 구성 경계에서 접근 제어를 적용합니다. web-fetch 도구와 HTTP-request 도구는 각각 안전하지만, 결합되면 유출 파이프라인을 만들 수 있습니다.2
mcp-firewall이 silent egress를 방지할 수 있나요? mcp-firewall은 에이전트가 접근하는 도메인과 허용되는 도구 호출을 제한하여 공격 표면을 줄일 수 있습니다. 메타데이터 정제 및 이그레스 로깅과 결합하면 silent egress 공격 체인의 핵심 벡터를 해결합니다.5
출력 콘텐츠 필터가 silent egress를 감지할 수 있나요? 아닙니다. 출력 콘텐츠 필터는 사용자에게 보이는 에이전트의 응답을 검사합니다. Silent egress는 에이전트의 출력에 결코 나타나지 않는 사이드 채널(아웃바운드 HTTP 요청)을 통해 데이터를 유출합니다. 에이전트의 가시적 응답은 깔끔하고 유용합니다. 공격이 출력을 완전히 우회하기 때문에 콘텐츠 필터, 거부 분류기, 출력 안전 검사 모두 통과합니다.1
샤딩 유출이란 무엇인가요? 샤딩 유출은 민감한 데이터를 여러 엔드포인트로의 여러 아웃바운드 요청에 분산시킵니다. 완전한 API 키를 한 번의 요청으로 보내는 대신, 에이전트가 별도의 공격자 통제 서버로 조각을 전송합니다. 이 기법은 단일 요청 유출 지표를 73% 줄이며, 개별 요청에서 완전한 비밀 패턴을 검색하는 데이터 손실 방지 시스템을 무력화합니다.1
출처
-
Lan, Qianlong, Anuj Kaul, Shaun Jones, and Stephanie Westrum, “Silent Egress: When Implicit Prompt Injection Makes LLM Agents Leak Without a Trace,” arXiv:2602.22450, February 2026. 480 experimental runs, 89% attack success rate, 95% evasion of output safety checks. ↩↩↩↩↩↩↩↩↩↩↩↩↩↩
-
Jiang, Yanna, Delong Li, Hai Deng, Baihe Ma, and Xu Wang, “SoK: Agentic Skills — Beyond Tool Use in LLM Agents,” arXiv:2602.20867, February 2026. Seven-stage skill lifecycle, composition-level security analysis. ↩↩↩↩↩
-
Author’s web content extraction library. trafilatura 2.0.0, HTML metadata stripping, 25 tests, February 2026. ↩↩
-
Crosley, Blake, “The Invisible Agent: Why You Can’t Govern What You Can’t See,” blakecrosley.com, March 2026. ↩↩
-
dzervas, “mcp-firewall,” GitHub, 2026. Go binary with JSONNet policy configuration, domain-scoped allow rules. ↩↩
-
melonattacker, “Logira: eBPF runtime auditing for AI agent runs,” GitHub, 2026. Linux 5.8+, network egress tracking at syscall level. ↩
-
Crosley, Blake, “The Fabrication Firewall: When Your Agent Publishes Lies,” blakecrosley.com, February 2026. ↩↩
-
Author’s production hook modifications. URL allowlist (12 domains), metadata stripping, egress logging added March 2026. ↩↩
-
OWASP Top 10 for Agentic Applications, OWASP GenAI Security Project, 2025. ASI01: Agent Goal Hijacking. ↩↩
-
Wang et al., “AgentSentry: Mitigating Indirect Prompt Injection in LLM Agents via Temporal Causal Diagnostics and Context Purification,” arXiv:2602.22724, February 2026. ↩
-
Khan, Adnan, via Simon Willison, “Clinejection: Compromising Cline’s production releases,” simonwillison.net, March 2026. Issue title injection, npm preinstall, cache poisoning, cross-workflow contamination. ↩
-
tomvault, “How Claude Code escapes its own denylist and sandbox,” ona.com, March 2026. Path evasion, self-directed sandbox disabling, dynamic linker bypass. 34 HN points. ↩