블로그

Python tarfile 모듈의 경로 탐색 버그 이해하기

October 3, 2022
Laura Verheyde
검은색 배경의 어두운 나뭇가지 위에 몸을 웅크리고 쉬고 있는 초록색 뱀의 근접 촬영 사진입니다.

최근 보안 연구원 팀이 Python의 tar 파일 추출 기능에서 15년 된 버그를 발견했다고 발표했습니다. 이 취약점은 2007년에 처음 공개되었으며 CVE-2007-4559로 추적되었습니다. 공식 Python 문서에 관련 메모가 추가되었지만, 버그 자체는 수정되지 않은 상태로 남아 있었습니다.

이 취약점은 수천 개의 소프트웨어 프로젝트에 영향을 줄 수 있지만, 많은 사람이 이 상황이나 대처 방법을 잘 알지 못합니다. 그래서 Secure Code Warrior에서는 여러분이 직접 이 취약점을 악용하는 과정을 시뮬레이션하여 그 영향을 확인하고, 이 고질적인 버그의 작동 원리를 직접 경험해 볼 수 있는 기회를 제공합니다. 이를 통해 애플리케이션을 더 안전하게 보호하세요!

시뮬레이션된 미션을 지금 바로 체험해 보세요.

취약점: tar 파일 추출 중 발생하는 경로 탐색(Path Traversal)

경로 또는 디렉토리 탐색은 검증되지 않은 사용자 입력이 파일 경로를 구성하는 데 사용될 때 발생하며, 공격자가 파일에 접근하여 덮어쓰거나 임의의 코드를 실행할 수 있게 합니다.

이 취약점은 Python의 tarfile 모듈에 존재합니다. tar(테이프 아카이브) 파일은 아카이브라고 불리는 단일 파일입니다. 여러 파일을 메타데이터와 함께 패키징하며, 일반적으로 .tar.gz 또는 .tgz 확장자로 식별됩니다. 아카이브의 각 구성 요소는 파일 이름, 수정 시간, 소유권 등의 메타데이터를 포함하는 TarInfo 객체로 표현될 수 있습니다.

위험은 아카이브를 다시 추출할 수 있다는 점 때문에 발생합니다.

추출할 때 모든 구성 요소는 기록될 경로가 필요합니다. 이 위치는 기본 경로와 파일 이름을 결합하여 생성됩니다:

Python의 Tarfile.py


이 경로가 생성되면 추출을 수행하기 위해 tarfile.extract 또는 tarfile.extractall 함수로 전달됩니다:

Python code defining extractall method that processes members and directories, copying and setting modes.
Python의 Tarfile.py

문제는 파일 이름에 대한 검증이 부족하다는 점입니다. 공격자는 파일 이름을 변경하여 점 점 슬래시(../)와 같은 경로 탐색 문자를 포함시킬 수 있으며, 이로 인해 파일이 원래 있어야 할 디렉토리를 벗어나 임의의 파일을 덮어쓰게 됩니다. 이는 결국 원격 코드 실행으로 이어질 수 있으며, 악용하기 매우 쉬운 상태입니다.

이 취약점은 식별 방법만 안다면 다른 시나리오에서도 나타납니다. Python의 tar 파일 처리 외에도 zip 파일 추출 과정에서도 이 취약점이 존재합니다. 이는 zip slip 취약점과 같은 다른 이름으로 익숙할 수 있으며, Python 외의 다른 언어에서도 나타난 바 있습니다!

미션 바로가기

위험을 어떻게 완화할 수 있을까요?

이 취약점이 수년간 알려져 왔음에도 불구하고, Python 관리자들은 추출 기능이 의도된 대로 작동하고 있다고 판단합니다. 이 경우 누군가는 "버그가 아니라 기능"이라고 말할지도 모릅니다. 안타깝게도 개발자가 출처를 알 수 없는 tar 또는 zip 파일 추출을 항상 피할 수는 없습니다. 안전한 개발 관행의 일환으로 경로 탐색 취약점을 방지하기 위해 신뢰할 수 없는 입력을 검증하는 것은 개발자의 몫입니다.

Python을 사용하여 안전한 코드를 작성하고 위험을 완화하는 방법에 대해 더 알고 싶으신가요?

저희 Python 챌린지를 무료로 체험해 보세요.

더 많은 무료 코딩 가이드라인을 원하신다면 Secure Code Coach를 확인하여 최신 보안 코딩 관행을 유지해 보세요.

‍

‍

태그라인

배포 전 AI 기반 개발 거버넌스 확보

AI 기반 위험을 측정하고, 커밋 시점에 보안 코딩 정책을 적용하며, SDLC 전반에 걸쳐 안전한 소프트웨어 제공 속도를 높이세요.

데모 예약하기
리소스 라이브러리

더 많은 블로그 살펴보기

보안 코딩, AI 거버넌스, 소프트웨어 리스크 관리에 관한 전문가 콘텐츠를 확인해 보세요.

전체 보기
사례 연구
필터 라벨
div 블록 내부의 텍스트입니다.

Supercharged Security Awareness: How Tournaments are Inspiring Developers at Erste Group

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.

더 알아보기
사례 연구
필터 라벨
div 블록 내부의 텍스트입니다.

Security as culture: How Blue Prism cultivates world-class secure developers

Learn how Blue Prism, the global leader in intelligent automation for the enterprise, used Secure Code Warrior's agile learning platform to create a security-first culture with their developers, achieve their business goals, and ship secure code at speed

더 알아보기
사례 연구
필터 라벨
div 블록 내부의 텍스트입니다.

하나의 보안 문화: Sage는 어떻게 챔피언 프로그램을 구축했는가

Sage가 유연하고 관계 중심적인 접근 방식을 통해 보안을 강화하고, 200명 이상의 보안 챔피언을 양성하며 실질적인 위험 감소를 달성한 사례를 확인해 보세요.

더 알아보기
블로그
필터 라벨
div 블록 내부의 텍스트입니다.

2026년 사이버 보안 인식의 달: 기업 방어의 핵심, AI 보안 이해하기

주요 AI 기업 대부분이 안전 가이드라인이 마련될 때까지 AI 개발 속도를 전 세계적으로 늦춰야 한다고 공개적으로 촉구하는 시점에 이르렀지만, 사실 심각한 보안 문제는 이미 현실화되었습니다. 이로 인해 AI 도입에 따른 금전적 비용과 위험 부담이 계속 쌓이면서 수많은 보안 책임자와 경영진이 절박한 상황에 놓였습니다.

더 알아보기
블로그
필터 라벨
div 블록 내부의 텍스트입니다.

인에이블러 8: 프로그램 브랜딩

성공적인 보안 코딩 프로그램을 위해서는 훌륭한 콘텐츠 그 이상의 것이 필요합니다. 인에이블러 8에서는 브랜딩을 통해 참여를 누구나 선망하는 위상 중심의 경험으로 바꾸는 방법을 알아봅니다.

더 알아보기
블로그
필터 라벨
div 블록 내부의 텍스트입니다.

이제 모든 직원이 AI 사이버 보안의 최전선에 있습니다

엔터프라이즈 기술 환경은 너무 늦기 전까지는 아무도 예상하지 못한 속도로 변화하고 있습니다. 우리는 공식적으로 사람이 직접 작성한 코드와 기본적인 코파일럿 지원의 시대를 지나 '에이전트 기반 개발 수명 주기(ADLC)'의 시대로 진입했습니다. 자율형 AI 에이전트는 여러 기능 전반에 걸쳐 전례 없는 효율성을 약속하지만, 동시에 완전히 새로운 차원의 보안 및 규제 위험을 야기합니다.

더 알아보기

배포 전 AI 기반 개발 보안 확보

소프트웨어 개발 수명 주기 전반에서 개발자 리스크를 파악하고, 정책을 시행하며, 취약점을 예방하세요.

데모 예약하기
항목이 없습니다.