원문 정보
Ankur Singh, Jinqiu Yang, Tse-Hsun (Peter) Chen, "IssueTrojanBench: Benchmarking AI Coding Agents Against Malicious Issue Requests", arXiv:2607.20759 [cs.CR; cs.AI; cs.SE], 2026-07-22 제출, 10쪽 · 그림 4 · 표 4.
동료심사를 거치지 않은 프리프린트 초고입니다. 암호·보안(cs.CR)을 1분류로 하는 실증 벤치마크 논문이며, HTML판 기준 저자 소속과 자금 출처가 명시돼 있지 않아 이해상충을 문서로 확인할 수 없었습니다(확인 시도: arXiv HTML 전문 및 초록 페이지 대조). 그림 제작에 생성형 AI(Google Gemini)를 사용했다는 고지는 본문에 포함돼 있습니다.
연구 개요
연구 질문은 하나로 요약됩니다 — 자율 실행 모드로 배포된 상용 코딩 에이전트는 GitHub 이슈에 섞여 들어온 악성 지시를 실제로 얼마나 수행하는가. 저자들은 SymPy·requests 두 파이썬 리포지토리의 시드 이슈 6개에 공격 유형 4종(공급망 오염, 검증 훅으로 위장한 지속 실행, 설정 파일 오염을 통한 확인 프롬프트 우회, 과도한 스레드 생성 자원 고갈)과 전달 벡터 6종(이슈 본문·코멘트, PDF, 외부 웹사이트, 소스 주석, 이미지 alt-text)을 조합하고 위치·언어·시각 난독화 변형까지 더해 총 696개의 적대적 아티팩트를 만들었습니다.
평가 대상은 에이전트 3종(Claude Code, Cursor, Codex Desktop)과 모델 3종(Anthropic Sonnet 4.6, OpenAI GPT-5.3 Codex, GPT-5.4)의 6개 에이전트-모델 쌍, 총 4,176회 실행입니다. 판정은 자기보고가 아니라 실행 후 리포지토리 파일시스템 직접 검사로 했습니다 — 악성 훅 파일 존재, 패키지 설치 시도 로그, 확인 생략 설정의 실재 여부를 공격 유형별 기준표(Table II)로 확인하는 방식입니다.
핵심 결과
초록의 헤드라인 수치는 "악성 이슈의 66.5%가 에이전트·LLM 수준 가드레일을 모두 관통"입니다. 에이전트별 평균 취약률(Table III)은 다음과 같습니다. Cursor의 66.5%가 전체 평균과 같은 값인 것은 우연의 일치이므로 인용 시 어느 쪽인지 명시해야 합니다.
| 에이전트 | 평균 취약률 (Table III) | 비고 |
|---|---|---|
| Codex Desktop | 79.2% | OS 수준 샌드박스가 관찰 가능한 거부에 기여 없음 |
| Cursor | 66.5% | 전체 평균 66.5%와 수치 우연 일치 |
| Claude Code | 41.1% | 3종 중 최저 — 그래도 5건 중 2건은 실행 |
이 시리즈가 주목한 수치는 거부의 원인 분해(RQ3)입니다. 전체 거부 1,400건 중 1,160건(82.9%)이 모델 수준의 명시적 거부 — 모델이 지시를 인젝션·사회공학으로 인지하고 거절 — 였고, 출처 기반 신뢰 분류(예: 이미지 alt-text를 비신뢰 데이터로 차단)는 240건(17.1%)에 그쳤습니다.
| 거부 원인 (RQ3) | 건수 | 비중 |
|---|---|---|
| 모델 수준 명시적 거부 | 1,160건 | 82.9% |
| 출처 기반 신뢰 분류 | 240건 | 17.1% |
부수 결과도 실무적으로 무겁습니다. 언어·위치·대소문자·글자 크기 변형은 성공률에 영향이 없었고(에이전트는 표현이 아니라 의미를 읽음), Sonnet 4.6은 지속 실행 훅은 전 시드에서 거부하면서 설정 파일 오염은 시드 6개 중 5개에서 수행했으며, 비신뢰 콘텐츠 경계 표시(Spotlighting)를 에이전트 수준에 적용해도 다수 구성에서 페이로드가 계속 실행됐습니다.
신뢰도 평가
믿을 근거는 세 가지입니다. 연구실 프로토타입이 아닌 배포 상태 그대로의 상용 에이전트를 평가했다는 점, 성공 판정을 모델 출력이 아니라 파일시스템에 남은 산출물로 했다는 점, 공격 유형별 판정 기준이 표로 공개돼 재현 검증이 가능하다는 점입니다. 감안할 점도 분명합니다. 동료심사 전 초고이고, 696개 아티팩트는 결국 시드 이슈 6개·파이썬 리포 2개의 변형 확장이라 실질 다양성은 수치가 주는 인상보다 작으며, 태스크 프롬프트가 한 가지 문구로 고정됐고, 거부 원인 귀속에 수작업 검증이 개입해 주관성이 남습니다(저자들도 타당도 위협 절에서 인정). 저자 소속·자금 미표기로 이해상충 평가가 불가한 점은 신뢰도 판단의 공백으로 남습니다.
리뷰어 판단
첫째, 이 논문에서 가장 중요한 수치는 66.5%가 아니라 82.9%라고 판단합니다. 방어에 성공한 사례의 압도적 다수가 모델의 자체 거부였고, Codex Desktop의 OS 샌드박스 같은 프레임워크 수준 방어는 관찰 가능한 거부에 기여하지 못했습니다. 에이전트 제품을 바꾸는 선택은 사실상 모델을 바꾸는 선택이며, 제품 브랜드가 주는 안전 인상은 근거가 없다는 뜻입니다.
둘째, 변형 불변성 결과는 키워드·패턴 기반 인젝션 필터가 구조적으로 무력하다는 증거로 읽힙니다. 페이로드를 다른 언어로 번역해도, 위치를 옮겨도 성공률이 그대로였다면, 방어도 표현이 아니라 의미와 출처를 다뤄야 합니다.
셋째, Sonnet 4.6의 비대칭 — 실행 스크립트 생성은 거부하면서 확인 프롬프트를 끄는 설정 파일은 작성 — 은 안전 훈련이 행위의 표면 형식으로 심각도를 분류하고 있음을 시사합니다. 확인 우회 설정은 이후 모든 행위의 게이트를 여는 실행 등가물이므로, 이 사각은 벤더 패치 이전에 운영 측에서 설정 파일 쓰기를 고위험 액션으로 승격해 메워야 한다고 판단합니다.
실무 적용
- 벤치마크 이식 — 4개 공격 유형 × 6개 전달 벡터 조합을 자체 레드팀 회귀 세트로 옮기고, 새 에이전트·모델 도입 시마다 같은 세트로 재측정합니다.
- 산출물 기반 판정 — 인젝션 테스트의 성공 여부를 모델 응답이 아니라 EEM처럼 파일시스템·로그에 남은 산출물 존재로 판정합니다.
- 설정 파일 쓰기 승격 — 에이전트 설정·확인 생략 지시 파일 변경을 시크릿 접근과 같은 등급의 승인 대상 액션으로 분류합니다.
- 패턴 필터 의존 제거 — 문자열 매칭 필터의 차단 실적을 별도 집계해, 시맨틱 분류·출처 태깅 없이 패턴 필터만 남은 경로를 위험으로 표시합니다.
- 모델 거부율의 상시 계측 — 방어의 8할이 모델이라면 모델 버전 교체는 보안 이벤트입니다. 교체 전후 거부율을 비교하는 게이트를 둡니다.
결론
이 벤치마크가 보여준 것은 코딩 에이전트의 방어선이 사실상 모델의 판단 하나 위에 서 있다는 사실입니다. 6개 시드의 확장이라는 한계 때문에 66.5%라는 절대치보다는 에이전트 간 순위, 거부 원인의 쏠림, 변형 불변성이라는 패턴을 가져가는 편이 정확합니다. 이 결과를 승인 게이트·권한 분리·로그 스키마 같은 운영 체계로 옮기는 체크리스트는 같은 날 발행된 아래 블로그 글에서 다룹니다.