사이버 보안 · 1 min read · Oct 17, 2025
15세의 패치되지 않은 Python 버그로 35만 개 프로젝트에서 코드 실행 가능

350,000개 이상의 고유 오픈 소스 리포지토리가 Python의 tarfile 모듈에 있는 15년 된 패치되지 않은 취약점으로 인해 잠재적인 공급망 사이버 공격의 위험에 처해 있다고 믿어집니다. 이 모듈은 Python을 사용하는 모든 프로젝트의 기본 모듈입니다.
현재 Python tarfile 모듈은 AWS, Facebook, Google, Intel 및 Netflix가 만든 프레임워크에서 광범위하게 발견되며, 소프트웨어 개발, 인공지능/기계 학습 및 코드 개발과 같은 여러 산업뿐만 아니라 웹 개발, 보안, IT 관리 및 미디어와 같은 다양한 분야에서도 사용됩니다.
이 취약점은 CVE-2007-4559(CVSS 점수: 6.8)로 추적되며, 15년 전에 발견되었습니다. 이 결함은 두세 줄의 간단한 코드로 생성된 악성 파일을 업로드하여 악용할 수 있으며, 공격자가 임의의 코드 실행 또는 대상 장치의 제어를 허용합니다.
올해 초, CVE-2007-4559는 Trellix의 취약점 연구원인 Kasimir Schulz가 다른 보안 문제를 조사하는 동안 다시 발견되었습니다.
“관련 없는 취약점을 조사하는 동안, Trellix 고급 연구 센터는 Python의 tarfile 모듈에서 취약점을 발견했습니다. 처음에는 새로운 제로데이 취약점을 발견한 줄 알았습니다. 문제를 파고들면서, 사실 이것이 CVE-2007-4559라는 것을 깨달았습니다.” 보안 회사 Trellix가 발표한 게시물에 적혀 있습니다.
“이 취약점은 tarfile 모듈의 extract 및 extractall 함수에서 경로 탐색 공격을 허용하여 공격자가 TAR 아카이브의 파일 이름에 ‘..’ 시퀀스를 추가하여 임의의 파일을 덮어쓸 수 있게 합니다.”
이 취약점은 원래 6.8로만 표시되었지만, 대부분의 경우 공격자는 파일 쓰기에서 코드 실행을 얻을 수 있습니다. 아래 비디오에서 Trellix는 Universal Radio Hacker를 악용하여 코드 실행을 얻는 방법을 보여줍니다:
공격자는 악성 tarfile을 업로드하여 추출될 의도된 디렉토리를 탈출하고 코드 실행을 달성할 수 있는 방식으로 악용할 수 있으며, 이를 통해 적이 대상 장치를 장악할 수 있습니다.
“공격자가 이 취약점을 이용하려면 파일 이름에 운영 체제의 구분자(‘/’ 또는 ‘\’)와 함께 ‘..’를 추가하여 파일이 추출될 디렉토리를 탈출해야 합니다. Python의 tarfile 모듈은 정확히 이것을 할 수 있게 해줍니다:” 게시물은 계속됩니다.
“tarfile 모듈은 사용자가 TAR 아카이브에 추가되기 전에 파일의 메타데이터를 파싱하고 수정하는 데 사용할 수 있는 필터를 추가할 수 있게 해줍니다. 이를 통해 공격자는 위의 6줄의 코드로 자신의 악용 코드를 만들 수 있습니다.”
“신뢰할 수 없는 출처에서 아카이브를 추출하기 전에 반드시 검사를 하십시오.” tarfile에 대한 Python 문서에 적혀 있습니다. “파일이 경로 외부에 생성될 가능성이 있습니다. 예를 들어, ‘/’로 시작하는 절대 파일 이름을 가진 멤버나 두 개의 점 ‘..’이 있는 파일 이름이 있을 수 있습니다.”
또한 Trellix는 CVE-2007-4559에 취약한 프로젝트를 스캔하기 위해 Creosote라는 무료 도구를 출시했으며, 이를 사용하여 Spyder Python IDE 및 Polemarch와 같은 애플리케이션에 숨어 있는 취약점을 발견했습니다.
“방치된다면, 이 취약점은 전 세계 수십만 개의 오픈 및 클로즈드 소스 프로젝트에 의도치 않게 추가되어 상당한 소프트웨어 공급망 공격 표면을 생성하게 됩니다.” Trellix의 수석 엔지니어이자 취약점 연구 책임자인 Doug McKee가 언급했습니다.
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.