
Claude Code와 Cursor 같은 AI 코딩 에이전트는 코드를 알려주는 데서 끝나지 않습니다. 파일을 수정하고 터미널 명령을 실행할 수 있기 때문에, 악성 문서나 오류 메시지를 잘못 신뢰하면 실제 보안 문제로 이어질 수 있습니다.
AI 코딩 에이전트는 일반 챗봇과 다릅니다
일반적인 AI 챗봇은 사용자의 질문에 답변하거나 코드를 제안합니다. 답변이 틀리더라도 사용자가 직접 복사해 실행하지 않는 한 컴퓨터의 파일이나 시스템이 즉시 변경되지는 않습니다.
반면 AI 코딩 에이전트는 개발자의 작업을 대신 수행하도록 만들어졌습니다. 프로젝트 파일을 읽고 수정하거나, 패키지를 설치하고, 테스트와 빌드 명령을 실행할 수 있습니다. MCP와 외부 API가 연결돼 있다면 데이터베이스나 GitHub 같은 다른 서비스에도 접근할 수 있습니다.
| 구분 | 일반 AI 챗봇 | AI 코딩 에이전트 |
|---|---|---|
| 주요 역할 | 설명과 코드 제안 | 파일 수정과 개발 작업 수행 |
| 파일 접근 | 대부분 제한적 | 프로젝트 파일을 읽고 수정할 수 있음 |
| 명령 실행 | 명령어를 텍스트로 안내 | 터미널 명령을 직접 실행할 수 있음 |
| 외부 연결 | 제한된 검색이나 API 사용 | MCP, 터미널, API를 통해 외부 서비스와 연결 가능 |
| 오류 발생 시 영향 | 잘못된 답변이나 코드 제안 | 파일 변경, 정보 유출, 의도하지 않은 명령 실행 가능 |
AI 코딩 에이전트의 위험은 답변이 틀릴 수 있다는 데만 있지 않습니다. 잘못된 판단을 실제 파일 변경이나 명령 실행으로 옮길 수 있다는 점이 더 중요합니다.
README가 어떻게 공격 수단이 될 수 있을까요?
README는 일반적으로 프로젝트의 설치 방법과 사용법을 설명하는 문서입니다. 사람은 README에 적힌 명령을 읽고 목적과 안전성을 판단한 뒤 실행합니다.
그러나 AI 코딩 에이전트는 README의 내용을 단순한 설명이 아니라 프로젝트를 실행하기 위해 따라야 하는 작업 지침으로 해석할 수 있습니다.
공격자가 README나 코드 주석, 오류 메시지에 AI를 조작하는 문장을 넣어 두면, 에이전트가 해당 문장을 사용자의 요청보다 우선하는 명령처럼 받아들일 가능성이 생깁니다. 이를 간접 프롬프트 인젝션이라고 합니다.
OWASP는 외부 웹페이지, 문서, 이메일과 같은 데이터에 포함된 악성 지시가 AI 에이전트의 행동을 탈취할 수 있다고 설명합니다. 또한 과도한 도구 권한, 민감정보 유출, 권한 상승을 주요 AI 에이전트 보안 위험으로 분류하고 있습니다.
Cursor에서 재현된 악성 README 연구
Mozilla의 AI 보안 연구 조직인 0DIN은 2026년 5월 27일, 악성 README를 이용해 Cursor의 AI 에이전트가 환경변수를 외부로 전송하도록 유도하는 연구 결과를 공개했습니다.
연구진은 테스트용 GitHub 저장소의 README에 AI 에이전트를 조작하는 지시를 삽입했습니다. Cursor가 저장소를 분석하는 과정에서 터미널 명령을 사용해 환경변수를 확인하고, 해당 값을 공격자가 관리하는 외부 주소로 전송하도록 유도했습니다.
환경변수에는 프로그램 설정만 들어 있는 것이 아닙니다. 개발 환경에 따라 다음과 같은 민감한 정보가 포함될 수 있습니다.
- 클라우드 서비스 API 키
- 데이터베이스 접속 정보
- GitHub 접근 토큰
- 배포 시스템 인증정보
- 외부 서비스 비밀 키
- 사내 시스템 주소와 설정값
이 연구에서 중요한 점은 Cursor가 스스로 사용자의 정보를 훔친다는 의미가 아니라는 것입니다. 신뢰할 수 없는 문서, 민감한 데이터 접근 권한, 터미널 실행 권한, 외부 통신 기능이 동시에 결합될 때 정보 유출 경로가 만들어질 수 있다는 사실을 보여준 것입니다.
해당 내용은 보안 연구진이 통제된 환경에서 재현한 개념 증명입니다. 모든 Cursor 버전과 모든 설정에서 동일하게 작동하거나, 불특정 다수를 대상으로 대규모 공격이 발생했다는 의미는 아닙니다.
Claude Code에서 재현된 오류 메시지 공격
0DIN은 2026년 6월 25일 Claude Code를 대상으로 한 별도의 공격 시나리오도 공개했습니다. 이 연구에서는 저장소에 완성된 악성 명령을 직접 넣는 대신, 정상적인 프로그램 설치와 오류 해결 과정처럼 보이도록 여러 단계를 연결했습니다.
연구진은 최종 명령을 저장소 파일에 직접 기록하지 않고 DNS TXT 레코드를 통해 전달했습니다. 따라서 저장소 내부의 소스코드만 검사하면 최종적으로 어떤 명령이 실행될지 발견하기 어려운 구조였습니다.
Claude Code는 악성코드를 실행한다는 목적을 세운 것이 아니라, 프로그램에서 발생한 오류를 정상적으로 해결한다고 판단했습니다. 공격자는 바로 이러한 문제 해결 동작을 이용했습니다.
연구 환경에서는 이 과정을 통해 개발자 계정의 권한으로 동작하는 원격 셸 연결이 재현됐습니다. 원격 셸이 연결되면 해당 사용자 계정이 접근할 수 있는 파일과 인증정보가 노출될 수 있습니다.
소스코드에 명백한 악성 명령이 없더라도 설치 스크립트, 패키지 의존성, 오류 해결 절차, 외부 서버 응답이 결합되면 실행 중에 위험한 동작이 만들어질 수 있습니다.
AI는 왜 설명과 명령을 혼동할까요?
전통적인 프로그램은 명령과 데이터를 비교적 명확하게 구분합니다. 프로그램에 미리 작성된 로직에 따라 특정 데이터만 처리하기 때문입니다.
반면 대규모 언어 모델은 자연어의 의미와 문맥을 바탕으로 다음 행동을 결정합니다. README에 적힌 설명, 사용자의 요청, 코드 주석과 오류 메시지가 모두 자연어 형태로 같은 문맥에 들어오면 어떤 문장이 신뢰할 수 있는 명령이고 어떤 문장이 분석만 해야 하는 데이터인지 완벽하게 구분하기 어렵습니다.
신뢰할 수 없는 콘텐츠를 읽습니다
GitHub 저장소, 웹페이지, 이슈, 문서와 패키지 오류 메시지는 외부 사용자가 변경할 수 있습니다. 에이전트가 이러한 내용을 읽는 순간 공격자가 만든 문장도 AI의 판단 재료에 포함됩니다.
실제 작업을 수행할 수 있는 권한이 있습니다
에이전트가 파일 읽기만 할 수 있다면 피해 범위는 제한적입니다. 하지만 터미널, 파일 쓰기, 네트워크와 외부 API 권한까지 가지고 있다면 잘못된 판단이 실제 행동으로 이어질 수 있습니다.
사용자가 반복되는 승인에 익숙해질 수 있습니다
개발 과정에서 많은 승인 창이 반복되면 사용자는 명령 전체를 확인하지 않고 승인할 수 있습니다. 특히 PowerShell이나 Bash 전체를 넓게 허용하면 이후에 실행되는 다양한 명령까지 같은 권한 범위에 포함될 수 있습니다.
최종 동작이 외부에서 나중에 전달될 수 있습니다
저장소를 검사한 시점에는 안전해 보이더라도 패키지 설치 서버, 외부 API, DNS 응답과 다운로드 파일이 실행 시점에 다른 내용을 반환할 수 있습니다. 따라서 저장소 파일만 검사하는 것으로 전체 실행 과정을 보장할 수는 없습니다.
Claude Code와 Cursor에도 보안 기능은 있습니다
Claude Code와 Cursor에 아무런 보안 기능이 없는 것은 아닙니다. 두 제품 모두 사용자 승인과 권한 제한 기능을 제공하고 있으며, 공식 문서에서도 프롬프트 인젝션과 과도한 권한을 주의해야 한다고 안내합니다.
Claude Code의 보호 기능
- 민감한 도구 실행 전 사용자 승인
- 파일 쓰기가 가능한 작업 디렉터리 제한
- 네트워크를 사용하는 명령에 대한 확인
- 신규 프로젝트와 MCP 서버에 대한 신뢰 확인
- 허용 및 거부 규칙을 이용한 도구 권한 제어
- 프롬프트 인젝션 위험을 줄이기 위한 보호 장치
Cursor의 보호 기능
- 대화형 CLI에서 터미널 명령 실행 전 승인 요청
- 파일 읽기, 파일 쓰기와 셸 명령을 구분한 권한 설정
- 특정 명령과 경로를 차단하는 거부 규칙
- AI가 변경한 코드를 확인할 수 있는 차이 비교 화면
- MCP 도구별 활성화와 승인 설정
- 프로덕션 자동화에서 제한된 권한 구성을 적용하는 방법 제공
Cursor는 공식 Background Agents 문서에서도 원격 에이전트가 인터넷에 접근하고 터미널 명령을 자동 실행하기 때문에, 프롬프트 인젝션을 통한 데이터 유출 위험이 발생할 수 있다고 설명합니다.
승인 창, 샌드박스와 권한 규칙은 위험을 낮추는 수단입니다. 그러나 사용자가 위험한 명령을 승인하거나 권한을 지나치게 넓게 설정하면 보호 범위가 줄어듭니다.
모르는 GitHub 저장소를 안전하게 확인하는 방법
본체에서 바로 실행하지 않습니다
출처를 확신할 수 없는 저장소는 Windows Sandbox, 가상머신, Dev Container 또는 테스트 전용 컴퓨터에서 확인하는 것이 안전합니다.
Docker 컨테이너도 도움이 되지만, 호스트 디렉터리와 Docker 소켓을 광범위하게 연결하면 격리 효과가 약해질 수 있습니다. 격리 환경에 SSH 개인 키, 브라우저 프로필과 운영용 설정 파일을 연결하지 않아야 합니다.
AI 행동을 바꾸는 파일을 먼저 확인합니다
다음 파일은 설치 명령이나 AI 에이전트의 행동 규칙을 포함할 수 있으므로 실행 전에 확인해야 합니다.
README.md
CLAUDE.md
AGENTS.md
.cursor/rules/
.cursor/commands/
.claude/
.mcp.json
.vscode/tasks.json
.vscode/settings.json
package.json
설치 스크립트
빌드 스크립트
Git Hooks
운영용 비밀정보를 분리합니다
AI 코딩 에이전트가 실행되는 터미널에는 가능한 한 운영용 인증정보를 넣지 않아야 합니다. 테스트 키를 사용하더라도 필요한 기능만 허용하고 짧은 유효기간을 적용하는 것이 좋습니다.
- 운영 데이터베이스 비밀번호
- AWS, Azure와 GCP 인증 키
- GitHub Personal Access Token
- 배포 서버 SSH 개인 키
- 결제와 개인정보 처리 API의 비밀 키
- 운영 서버 관리자 계정
넓은 범위의 명령을 영구 허용하지 않습니다
모든 PowerShell, Bash, Python 또는 네트워크 명령을 한 번에 허용하는 설정은 피해야 합니다. 패키지 설치, 파일 삭제, 외부 다운로드, 권한 변경과 외부 전송 명령은 매번 전체 내용을 확인하는 것이 안전합니다.
AI가 만든 변경사항을 직접 검토합니다
에이전트가 작업을 완료했다고 보고해도 변경된 파일을 그대로 배포해서는 안 됩니다. 최소한 다음 항목을 확인해야 합니다.
- Git diff를 이용한 전체 코드 변경사항
- 새로 추가된 패키지와 의존성
- 설치, 빌드와 배포 스크립트
- CI/CD Workflow와 자동 실행 설정
- 새로 추가된 외부 URL과 네트워크 요청
- 환경변수와 인증정보 접근 코드
- 파일 삭제와 권한 변경 명령
회사에서는 최소 권한 원칙이 필요합니다
기업 환경에서 AI 코딩 에이전트를 사용할 때는 개인의 주의만으로 보안을 유지하기 어렵습니다. 도구가 접근할 수 있는 데이터와 실행할 수 있는 작업을 회사 정책으로 제한해야 합니다.
- 개발망과 운영망을 분리합니다.
- AI 코딩 도구 전용 개발 계정을 사용합니다.
- 운영 데이터베이스 직접 접근을 차단합니다.
- 사용 가능한 MCP 서버를 허용 목록으로 관리합니다.
- 외부 GitHub 저장소의 검증 절차를 마련합니다.
- 터미널 명령과 외부 도구 호출 기록을 보관합니다.
- 비밀번호와 API 키는 중앙 비밀정보 관리 시스템에 보관합니다.
- 외부 네트워크 송신 주소를 필요한 범위로 제한합니다.
- AI가 작성한 코드에도 정적 분석과 코드 리뷰를 적용합니다.
- AI의 변경사항이 운영에 자동 배포되지 않도록 분리합니다.
OWASP 역시 AI 에이전트에는 작업에 필요한 최소한의 도구와 권한만 제공하고, 중요한 작업은 사람이 명시적으로 승인하도록 권고합니다.
과장 없이 확인된 사실만 정리하면
보안 연구진은 통제된 환경에서 악성 README를 이용한 Cursor 환경정보 유출과, 오류 해결 과정을 이용한 Claude Code 명령 실행 가능성을 재현했습니다. Anthropic, Cursor, GitHub와 OWASP도 프롬프트 인젝션과 과도한 권한을 실제 보안 위험으로 다루고 정하고 있습니다.
공개된 연구만으로 Claude Code 또는 Cursor 사용자가 대규모로 해킹됐다고 단정할 수는 없습니다. 저장소를 단순히 열기만 하면 조건과 관계없이 무조건 감염된다고 표현하는 것도 정확하지 않습니다.
일반적으로 공격이 성립하려면 AI가 공격자가 만든 콘텐츠를 읽고, 해당 내용을 명령으로 잘못 판단하며, 필요한 파일 또는 터미널 권한을 가지고 있고, 위험한 작업이 실제로 승인되거나 자동 실행돼야 합니다.
마무리
Claude Code와 Cursor 같은 AI 코딩 에이전트는 개발 생산성을 높여주는 강력한 도구입니다. 그러나 일반 챗봇과 달리 실제 파일과 터미널에 접근할 수 있으므로 보안 관점에서도 하나의 실행 주체로 관리해야 합니다.
README, 코드 주석과 오류 메시지는 사람에게는 단순한 설명일 수 있지만, AI 에이전트에는 다음 행동을 결정하는 지시로 해석될 수 있습니다. 따라서 신뢰하지 않는 저장소의 문서와 실행 결과는 기본적으로 외부 입력으로 취급해야 합니다.
그렇다고 AI 코딩 도구 사용을 무조건 중단할 필요는 없습니다. 격리된 실행 환경, 최소 권한, 인증정보 분리, 외부 통신 제한과 사람의 검토 절차를 함께 적용하면 위험을 크게 줄일 수 있습니다.
AI가 실수해도 피해가 발생하지 않도록 환경을 설계해야 합니다.
