Downloads 폴더에서 Claude를 실행하면 탈취당할 수 있습니다. 제 PC도 위험했던 설정이었습니다
요약
코딩 에이전트(Claude Code, Codex 등)는 실행된 폴더 내의 지시서 파일(Instruction File)을 따라 작동합니다. 연구에 따르면, Downloads와 같은 신뢰할 수 없는 외부 폴더에 악성 지시서가 놓일 경우, 에이전트는 이를 정상적인 명령으로 오인하여 악성 패키지 설치나 API 통신 대상 변경 등의 피해를 입힐 수 있습니다.
핵심 포인트
- 코딩 에이전트는 실행된 폴더의 지시서 파일(AGENTS.md 등)을 최우선으로 읽습니다.
- Downloads와 같은 외부 폴더는 악성 코드가 놓이기 쉬워 보안상 위험합니다.
- 공격자는 지시서 파일을 이용해 에이전트를 속여 악성 동작을 유도할 수 있습니다.
- 보고된 피해 사례들은 버그가 아닌, 현재 사양대로의 정상적인 동작으로 분석되었습니다.
“이 ZIP 파일 내용 좀 봐줘.”라고 생각하며 다운로드 폴더에 있는 상태 그대로 claude나 codex를 실행해 본 적이 없으신가요? 2026년 10월, “Downloads 폴더에서 코딩 에이전트를 실행하면 탈취당할 수 있다”는 보고가 화제가 되면서 궁금증을 느껴 제 PC를 점검해 보니, Codex 기록상 홈 디렉토리는 신뢰 상태였고 심지어 홈 자체도 알 수 없는 빈 git 리포지토리였습니다. 이 글을 다 읽으시면 왜 Downloads 폴더만 위험한지, 그리고 자신의 PC를 5분 만에 확인할 수 있는 방법을 알게 되실 겁니다.

AI는 실행된 폴더의 지시서 파일(Instruction File)을 따릅니다
우선 전체 흐름을 한 장으로 요약하면 다음과 같습니다.
Claude Code나 Codex 같은 코딩 에이전트(Coding Agent)는 실행된 폴더에 있는 지시서 파일을 가장 먼저 읽습니다(상위 폴더에 있는 것까지도 읽을 수 있습니다). Claude Code의 경우 CLAUDE.md를, Codex의 경우는 AGENTS.md를 사용합니다. 이는 사람이 AI에게 전달하는 메모와 같은 것으로, “이 프로젝트에서는 테스트를 이렇게 돌려라”, “커밋 메시지는 이렇게 작성해라” 등의 지침이 담겨 있습니다.
AI는 이 메모에 적힌 내용을 따라야 할 지시로 진지하게 받아들입니다. 만약 자신의 리포지토리라면, 메모를 작성한 사람이 자신이나 팀 동료이기 때문에 문제가 없습니다. 곤란한 상황은 타인이 작성한 파일이 임의로 놓이는 폴더에서 실행했을 때 발생합니다.
Downloads 폴더는 열어본 웹페이지가 아무렇게나 전단지를 던져 넣을 수 있는 우체통과 같습니다. 보도에 따르면, 브라우저의 기본 설정에서는 웹페이지가 파일명과 내용물을 지정한 후 저장 위치를 묻지 않고 이곳에 파일을 놓을 수 있다고 합니다(자세한 내용은 이후 절에서 설명합니다). 그리고 에이전트는 그곳에 AGENTS.md가 있으면, 자신이 작성한 메모인지 아닌지를 구분하지 않고 지시서로 읽어들입니다.
참고로 Claude Code 역시 2.1.277 버전부터는 CLAUDE.md가 없는 폴더에서는 AGENTS.md를 읽도록 변경되었습니다(공식 CHANGELOG). 하지만 제가 아는 범위 내에서는 AGENTS.md를 경유하여 Claude Code가 탈취당한 사례는 보고된 바 없습니다.
무엇이 보고되었나요
발단은 에이전트 모니터링 제품을 다루는 Forever Security가 2026-10-22에 공개한 블로그 게시물 “Markdown Is the New Executable”입니다. BleepingComputer 등에서도 연이어 보도했습니다.
연구원 측의 발표 내용을 세 줄로 요약하면 다음과 같습니다.
- 고객 PC의
~/Downloads폴더에 악의적인AGENTS.md가 놓여 있었습니다. 이를 읽은 에이전트가 알려진 악성 npm 패키지를 설치하려 하자 Forever 제품이 막았습니다(파일이 어떻게 배치되었는지는 불명). - 연구원 측이 동일한 수법을 재현하자, Codex는 자신의 설정에 악성 코드를 실행하는 장치를 작성했고, Claude Code는 자신의 API 통신 대상을 공격자 서버로 변경했습니다.
- 두 경우 모두 버그가 아닌 사양대로의 동작이었기 때문에, “OpenAI나 Anthropic 모두 패치할 것이 없다”(원문: "There is nothing here for OpenAI or Anthropic to patch.")고 결론지었습니다.
재현 성공률 역시 연구원 측이 공표했습니다.
| 지시서에 작성하게 한 내용 | 연구원 측이 발표한 성공률 |
|---|---|
| Codex | 사용자 공통 설정 파일에 “기동 시 동작하는 툴 서버”를 추가하여 악성 코드를 삽입 |
| Claude Code | 프로젝트의 .claude/settings.json에 ANTHROPIC_BASE_URL을 작성하게 하여 통신을 공격자 서버로 유도 |
두 수치 모두 연구원 측 자신의 발표이며, 제3자에 의한 검증은 아직 이루어지지 않았습니다. Claude Code의 성공률이 낮은 이유에 대해 연구원 측은 “이러한 종류의 작성에는 인간의 승인이 필요하며, 의심스러운 작성은 Claude가 거부하는 경우도 많다”고 적었습니다. 이 한 문장이 나중에 저에게 중요하게 작용했습니다.
가장 소름 돋았던 것은 세 번째 내용입니다. 연구원 측 말대로 수정할 곳이 없다면, 최소한 당분간 지켜야 할 것은 사용자 본인의 노력입니다.
왜 Downloads 폴더만 특별히 위험한가요
Downloads 폴더가 위험한 이유는 세 가지가 있습니다.
웹 페이지가 조용히 지시서 파일을 배치할 수 있다
보도에 따르면 Chrome, Edge, Firefox는 기본 설정 상태에서는 저장 위치를 묻지 않고 Downloads 폴더에 저장하며, 파일 이름과 내용은 웹 페이지 측에서 지정할 수 있습니다(BleepingComputer가 연구원 검증용 페이지에서 무해한 AGENTS.md가 다운로드되는 것을 확인했다고 Martin Cid Magazine의 기사가 전했습니다). 다운로드된 실행 파일을 열 때 OS 경고(Windows의 SmartScreen이나 macOS의 Gatekeeper)는 나오지만, AGENTS.md는 에이전트가 '읽기만' 하는 텍스트 파일이기 때문에 이러한 메커니즘에 걸리지 않습니다. 연구원들이 제시한 제목인 'Markdown은 새로운 실행 파일이다'는 이 부분을 지적하고 있습니다.
한 번 '신뢰'하면, 나중에 다운로드되는 것까지 신뢰된다
Claude Code를 아직 신뢰하지 않는 폴더에서 대화형으로 시작하면 '이 폴더를 신뢰하겠습니까?'라는 다이얼로그가 나타납니다. 하지만 공식 문서에 따르면 git 리포지토리 외부에서는 '실행을 시작한 디렉터리와 그 하위 모든 것'이 신뢰의 대상입니다. Downloads에서 한 번 '신뢰'를 누르면, 그 이후 브라우저가 저장한 파일도, 압축 해제된 폴더도 모두 신뢰 범위에 포함됩니다.
연구원들은 Codex에 대해 'Codex는 신뢰한 프로젝트의 AGENTS.md에만 따른다'고 전제를 깔면서도 "Once you have worked in Downloads, it qualifies." (Downloads에서 한 번 작업하면, 그곳은 신뢰된 조건을 충족한다)라고 작성했습니다.
Codex의 경우, 수정 사항이 사용자 공통 설정에 남는다
Codex를 재현하는 과정에서 수정된 것은 프로젝트 설정이 아니라 홈 디렉터리에 있는 ~/.codex/config.toml (어떤 프로젝트에서 시작해도 읽히는 사용자 공통 설정)이었습니다. 연구원들은 '폴더를 떠나도 독은 남는다'고 쓰면서, 한 번 속으면 이후 어떤 리포지토리에서 Codex를 실행하더라도 공격자의 툴 서버가 함께 실행될 수 있음을 경고했습니다.
권한 확인을 모두 비활성화한 저의 경우
여기서 고백하자면, 저는 평소 Claude Code를 --dangerously-skip-permissions 옵션을 붙여 사용하고 있습니다. 파일 편집이나 명령어 실행에 대해 일일이 확인하는 설정이 아닙니다.
공식 문서는 Permission modes(권한 모드)가 인터넷에 연결되지 않은 컨테이너나 VM 같은 격리 환경을 위해 안내하면서, 명확하게 경고합니다.
bypassPermissions는 프롬프트 인젝션(prompt injection)이나 의도치 않은 동작에 대한 보호 기능을 제공하지 않습니다.
.claude나 .git과 같은 '보호된 경로'에 대한 쓰기 작업 역시 수동 승인 모드(default나 acceptEdits)에서는 반드시 확인 절차가 나오지만, 이 모드에서는 확인 없이 통과됩니다. 저는 그 사실을 알고 사용하고 있습니다.
여기서 아까 연구원들의 문장으로 돌아갑니다. 연구원들이 설명한 바에 따르면, Claude Code에 대한 공격이 약 절반만 성공할 수 있었던 이유 중 하나는 '인간의 승인이 필요했기 때문'이었습니다. 권한 확인을 비활성화한 저의 환경에는 그 승인해 줄 인간이 없습니다. 남아있는 방어선은 주로 모델 자체(AI)가 '이 쓰기는 수상하다'고 인지하고 거부하는 것입니다.
수동으로 승인하는 사람에게는 두 가지 방어선(AI 자체 판단과 인간의 승인)이 있습니다. 반면 저에게는 하나밖에 없습니다. 권한 확인을 끄지 말라는 이야기가 아니라, 꺼두었다면 실행할 폴더 정도는 스스로 선택하자는 이야기입니다.
제 PC를 조사해 보았습니다
그래서 제 PC를 읽기 전용으로 조사해 보았습니다. 다운로드한 파일의 내용은 열어보지 않고, 파일 이름과 에이전트 설정만 확인했습니다.
Downloads 직하에는 295개의 항목이 있었습니다. Claude Setup (1).exe 같은 번호가 붙은 중복 설치 프로그램, 압축 해제된 폴더들, 그리고 일반에 널려있는 .md 파일 5개였습니다. Claude Code용 스타터 키트를 압축 해제한 폴더에는 AI를 위한 .md
템플릿도 들어 있었습니다. 지시서 파일의 재료가 될 수 있는 .md 파일이 많은 상태입니다.
다행히도, 루트 디렉터리에는 CLAUDE.md, AGENTS.md, 그리고 .claude/ 폴더는 발견되지 않았습니다. Claude Code 기록(~/.claude.json)에서도 Downloads에서 실행한 흔적은 없습니다.
다음으로 Codex의 설정을 확인했습니다.
[projects.'c:\users<user>']
trust_level = "trusted"
Codex 기록에는 홈 디렉터리가 신뢰됨(trusted)으로 설정되어 있었습니다. 언제, 왜 신뢰했는지는 알 수 없습니다. 대조적으로 Claude Code는 홈 디렉터리 바로 아래에서 실행하더라도 세션에 한정하여 신뢰를 저장하지 않습니다 (공식 문서는 "프로젝트 하위 디렉터리에서 Claude Code를 시작하십시오(Start Claude Code from a project subdirectory instead)"라고 안내하고 있습니다).
그리고 또 하나. 홈 디렉터리 자체가 이유 모르게 git 리포지토리로 되어 있었습니다.
$ git -C ~
rev-parse --show-toplevel
C:/Users/<user>
추적하는 파일은 0개, 원격 저장소도 없습니다. 언제 만들었는지 알 수 없는 빈 리포지토리입니다. 즉, 제 PC에는 다음 세 가지가 중첩되어 있었습니다.
- 홈 디렉터리는 신뢰됨 (Codex 기록)
- Downloads 폴더는 홈 안에 위치함
- 홈 디렉터리가 이유 모르게 git 리포지토리임
Downloads에서 실행했을 때, 툴은 마치 "홈이라는 거대한 리포지토리 안에 있다"고 인식할 수 있으며, Codex에게는 그 홈이 신뢰됨 상태입니다. 다만, 실제로 에이전트가 이 상태에서 Downloads를 신뢰함으로 처리하는지는 시험해 보지 않았기 때문에 알 수 없습니다. 적어도 "나는 Downloads에서 실행하지 않으니 상관없다"라고 넘길 수 있는 설정은 아니었습니다.
오늘부터 해야 할 일
확인하기 (5분)
자신의 환경에서도 먼저 다음 명령어로 확인해 보세요(macOS / Linux / Git Bash 가정. 모두 파일을 읽기만 하며, 아무것도 수정하지 않습니다). Claude Code의 두 가지 항목과 마지막 한 항목은 아무것도 표시되지 않으면 일단 안심입니다. Codex의 두 항목은 평소 사용하는 프로젝트나 MCP 서버도 표시되므로, 낯선 것이 섞여 있지 않은지 확인해 주세요. 다만, 어느 것도 알려진 수법 중 일부를 포착하는 간이 점검일 뿐이므로, 아무것도 나오지 않아도 안전을 증명하지는 못합니다.
# Claude Code: Downloads를 시작 폴더로 기록했는지 확인
grep -i -o "[^"]*downloads[^"]*": *{ ~/.claude.json
# Claude Code: 낯선 API 연결처가 설정되지 않았는지 확인
...
Codex의 [projects...]에 Downloads나 홈이 trusted로 나열되어 있다면, 정말 필요한지 재검토해 볼 후보입니다.
습관 바꾸기
- 에이전트는 프로젝트 폴더에서 실행해야 합니다. Downloads, 바탕화면(Desktop), 홈 바로 아래에서는 실행하지 마세요. - 다운로드한 파일을 보여주고 싶을 때는 프로젝트 안에 작업용 폴더를 만들고, 필요한 파일만 복사해서 실행하세요 (폴더 전체를 복사하면 그 안의
CLAUDE.md나AGENTS.md까지 함께 가져오게 됩니다). - 남에게 받은 폴더에CLAUDE.md나AGENTS.md가 있다면, 에이전트에게 전달하기 전에 본인의 눈으로 읽어보는 권한 확인을 거치세요.
권한 확인을 줄이고 싶지만 skip(건너뛰기)까지는 포기하고 싶지 않은 사람에게는, 공식에서 skip 대신 안내하는 auto 모드(확인 대신 백그라운드에서 안전 점검을 하는 모드)라는 선택지도 있습니다. 다만 공식은 auto 모드에 대해서도 "안전을 보장하지 않는다"고 주석 처리했습니다.
유의점
- 연구원은 에이전트 감시 제품 판매처이며, 성공률 등의 수치는 자체 검증입니다. 위험을 크게 보이려는 상업적 동기가 있다는 점은 제외하고 읽어주세요.
- 실제로 발견된 공격 파일은 macOS용이었습니다.
마지막으로
AI는 실행된 폴더의 지침서 파일에 순순히 따릅니다. 그 자체로는 편리한 사양이며, 연구원들이 말하는 대로 버그가 아닙니다. 따라서 주의해야 할 것은 지침서가 아니라, 실행되는 폴더 쪽입니다. Downloads는 열었던 웹 페이지가 조용히 던져 넣을 수 있는 우체통이었습니다.
권한 확인(Permission check)을 꺼둔 사람일수록, 남아있는 제동 장치(safety measure)는 적어집니다.
claude
나 codex
를 실행하기 전에 pwd를 한 번만 봐도, 남아있는 몇 안 되는 제동 장치로서 충분히 유용합니다. 다음으로 할 일로, 저는 먼저 홈에 있는 미스터리한 빈 리포지토리(repository)의 처리를 생각합니다.
토론 (Discussion)

AI 자동 생성 콘텐츠
본 콘텐츠는 Zenn AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기