AI 에이전트가 압축파일을 읽고 처리하는 과정에서도 보안 문제가 발생할 수 있다는 것을 알게 되었다.
대표적인 사례가 Path Traversal(경로 탐색 공격)이며, 압축파일 해제 과정에서 발생하는 유형을 Zip Slip이라고 한다.
1. 어떤 문제일까?
에이전트가 압축파일을 /작업/임시/ 폴더에 해제한다고 가정하자.
| 압축파일 내부 경로 | 실제 생성 위치 |
|---|---|
| 문서.txt | /작업/임시/문서.txt |
| 자료/문서.txt | /작업/임시/자료/문서.txt |
| ../escape/문서.txt | /작업/escape/문서.txt |
여기서 ..은 상위 디렉터리를 의미한다.
압축 해제 도구가 경로를 검증하지 않는다면, 악의적인 경로를 통해 지정된 작업 폴더 밖에 파일을 생성하거나 기존 파일을 덮어쓸 수 있다.
2. AI 에이전트에서도 위험할까?
에이전트에게 "지정된 폴더 안에서만 작업하라"고 지시하더라도 실제 파일 시스템 접근 권한까지 제한되는 것은 아니다.
에이전트가 사용하는 압축 해제 도구에 취약점이 있다면 다음과 같은 문제가 발생할 수 있다.
- 허용된 디렉터리 밖에 파일 생성
- 기존 설정 파일이나 중요 데이터 덮어쓰기
- 특정 환경에서 악성 코드 실행으로 이어질 가능성
단순히 압축파일의 목록을 읽는 것만으로 이러한 파일 생성 문제가 발생하는 것은 아니다. 취약한 압축 해제 또는 파일 처리 과정이 있어야 한다.
3. 에이전트의 도구 호출 흐름
사용자가 에이전트에게 압축파일 분석을 요청했다고 가정하자.
[사용자]
"첨부한 압축파일을 분석해 줘."
↓
[AI 에이전트]
압축파일 해제가 필요하다고 판단
↓
[도구 호출]
extract_archive(
archive="첨부.zip",
output_dir="/작업/임시/"
)
↓
[압축 해제 도구]
압축파일 내부 경로 확인
↓
../escape/문서.txt 발견
↓
[취약한 압축 해제 로직]
경로 검증 없이 파일 생성
↓
[결과]
/작업/escape/문서.txt
허용된 작업 폴더 이탈
여기서 중요한 점은 에이전트가 악의적인 경로를 직접 지정하지 않았다는 것이다.
에이전트는 정상적으로 압축 해제 도구를 호출했지만, 도구가 압축파일 내부의 악성 경로를 검증하지 않아 문제가 발생한 것이다.
반대로 안전하게 구현된 도구라면 다음과 같이 처리해야 한다.
AI 에이전트
↓
압축 해제 도구 호출
↓
압축파일 내부 경로 검증
↓
허용된 작업 폴더 내부인가?
├─ YES → 안전하게 압축 해제
└─ NO → 해당 파일 차단
즉, LLM의 도구 호출 판단과 실제 도구의 보안 검증은 별개의 책임이다.
4. 어떻게 방어할까?
- 경로 정규화: 압축파일 내부 경로를 정규화한 뒤 허용된 디렉터리 내부인지 검증한다.
- 위험 경로 차단: 상위 경로 이동, 절대 경로, 심볼릭 링크 등을 통한 우회를 방지한다.
- 권한 제한: 에이전트와 도구가 접근할 수 있는 파일 시스템 범위를 제한한다.
- 격리 환경: 신뢰할 수 없는 압축파일은 샌드박스에서 처리한다.
5. 정리
Zip Slip은 AI 등장 이전부터 알려진 취약점이며, 2018년 보안 기업 Snyk가 수많은 프로젝트에서 관련 취약점을 발견하면서 널리 알려졌다.
이번 사례를 통해 알게 된 점은 에이전트에게 행동을 제한하는 프롬프트를 제공하는 것과 실제 시스템 권한을 제한하는 것은 별개의 문제라는 것이다.
AI 에이전트를 개발할 때는 모델의 판단뿐 아니라 모델이 호출하는 도구의 입력 검증과 실행 권한까지 고려해야 한다.
'AI' 카테고리의 다른 글
| 테디노트의 랭체인을 활용한 RAG 비법노트 - 기본편 - chapter01 (0) | 2026.09.30 |
|---|---|
| 아주 단순한 수식에서 시작해 머신러닝 이해하기 (0) | 2026.09.14 |
| 프롬프트가 GPT의 답변이 되기까지 (0) | 2026.09.02 |
