압축파일의 경로 조작 취약점 - Zip Slip

2026. 10. 29. 20:07·AI

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 에이전트를 개발할 때는 모델의 판단뿐 아니라 모델이 호출하는 도구의 입력 검증과 실행 권한까지 고려해야 한다.

참고 자료: Snyk - Zip Slip Vulnerability

저작자표시 비영리 변경금지 (새창열림)

'AI' 카테고리의 다른 글

테디노트의 랭체인을 활용한 RAG 비법노트 - 기본편 - chapter01  (0) 2026.09.30
아주 단순한 수식에서 시작해 머신러닝 이해하기  (0) 2026.09.14
프롬프트가 GPT의 답변이 되기까지  (0) 2026.09.02
'AI' 카테고리의 다른 글
  • 테디노트의 랭체인을 활용한 RAG 비법노트 - 기본편 - chapter01
  • 아주 단순한 수식에서 시작해 머신러닝 이해하기
  • 프롬프트가 GPT의 답변이 되기까지
수수다
수수다
우하하
  • 수수다
    그냥살자
    수수다
  • 전체
    오늘
    어제
    • 분류 전체보기 (96) N
      • 프로젝트 (2)
      • 알고리즘 & 자료구조 (49)
        • 내용 정리 (2)
        • 문제 풀이 (47)
      • 데이터베이스 (37)
        • 내용 정리 (1)
        • 문제 풀이 (36)
      • CS (2)
      • 기타 (2)
      • AI (4) N
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 네이버 블로그
  • 공지사항

  • 인기 글

  • 태그

    정렬
    깊이/너비 우선 탐색(DFS/BFS)
    이분탐색
    프로그래머스
    coalesce
    해시
    동적계획법
    IFNULL
    SQL
    코테
    bfs
    알고리즘
    그래프
    Lv2
    mysql
    Stack
    DP
    dfs
    완전탐색
    Java
    date_format
    Round
    유니온파인드
    프로그래머스 알고리즘 고득점 kit
    코딩테스트
    분리집합
    union-find
    SUBSTR
    AVG
    백트래킹
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
수수다
압축파일의 경로 조작 취약점 - Zip Slip
상단으로

티스토리툴바