파이썬의 tarfile 모듈에서 경로 통과 버그 이해

게시일: Oct 03, 2022
by Laura Verheyde
사례 연구

파이썬의 tarfile 모듈에서 경로 통과 버그 이해

게시일: Oct 03, 2022
by Laura Verheyde
리소스 보기
리소스 보기

최근 보안 연구원 팀은 파이썬의 타르 파일 추출 기능에서 열다섯 살짜리 버그를 발견했다고 발표했습니다. 이 취약점은 2007년에 처음 공개되었으며 CVE-2007-4559로 추적되었습니다. 공식 파이썬 문서에 메모가 추가되었지만 버그 자체는 패치되지 않은 채로 남아 있습니다.

이 취약점은 수천 개의 소프트웨어 프로젝트에 영향을 줄 수 있지만 많은 사람들이 상황이나 처리 방법에 익숙하지 않습니다. 그래서 여기 Secure Code Warrior이 취약점을 직접 악용하는 것을 시뮬레이션하여 영향을 직접 확인하고 이 영구 버그의 메커니즘에 대한 실무 경험을 얻을 수 있는 기회를 제공하므로 응용 프로그램을 더 잘 보호할 수 있습니다!

시뮬레이션된 미션 을 지금 사용해 보세요.

취약점: tar 파일 추출 중 경로 통과

경로 또는 디렉터리 탐색은 비위생적인 사용자 입력을 사용하여 파일 경로를 구성하여 공격자가 파일에 액세스하여 파일을 덮어쓰고 임의 코드를 실행할 수 있도록 할 때 발생합니다. 

이 취약점은 파이썬의 tarfile 모듈에 존재합니다. tar(테이프 아카이브) 파일은 아카이브라고 하는 단일 파일입니다. 메타 데이터와 함께 여러 파일을 함께 패키지화하며 일반적으로 .tar.gz 또는 . tgz 확장자를 사용하여 인식됩니다. 아카이브의 각 멤버는 파일 이름, 수정 시간, 소유권 등과 같은 메타데이터를 포함하는 TarInfo 개체로 나타낼 수 있습니다.

위험은 아카이브에서 다시 추출 될 수있는 능력에서 발생합니다.

추출할 때 모든 멤버는 쓸 경로가 필요합니다. 이 위치는 기본 경로를 파일 이름으로 조인하여 만들어집니다. 

파이썬의 Tarfile.py 에서 발췌 한 스 니펫


이 경로가 만들어지면 tarfile.extract 또는 tarfile.extractall 함수로 전달되어 추출을 수행합니다. 

파이썬의 Tarfile.py 에서 발췌 한 스 니펫

여기서 문제는 파일 이름의 삭제 부족입니다. 공격자는 도트 도트 슬래시 (.. /), 이로 인해 파일이 의도 된 디렉토리에서 트래버스되어 임의의 파일을 덮어 씁니다. 이것은 결국 원격 코드 실행으로 이어질 수 있으며, 이는 악용에 익숙합니다. 

취약점은 식별 방법을 알고 있는 경우 다른 시나리오에서 나타납니다. 파이썬이 tar 파일을 처리하는 것 외에도 zip 파일을 추출하는 데 취약점이 존재합니다. 파이썬이 아닌 다른 언어로 나타난 zip slip 취약점과 같은 다른 이름으로 이것을 잘 알고있을 수 있습니다!

미션에 대한 링크 

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

이 취약점이 수년간 알려져 있음에도 불구하고 파이썬 메인테이너들은 추출 기능이 해야 할 일을 하고 있다고 생각합니다. 이 경우 일부 사람들은 "버그가 아닌 기능"이라고 말할 수 있습니다. 불행히도 개발자는 알 수없는 소스에서 tar 또는 zip 파일을 추출하는 것을 항상 피할 수는 없습니다. 신뢰할 수 없는 입력을 삭제하여 보안 개발 관행의 일환으로 경로 통과 취약점을 방지하는 것은 그들에게 달려 있습니다.

Python으로 보안 코드를 작성하고 위험을 완화하는 방법에 대해 자세히 알고 싶으신가요?

파이썬 챌린지를 무료로 사용해보십시오.

더 많은 무료 코딩 지침을 얻고 싶다면 보안 코드 코치 를 확인하여 안전한 코딩 관행을 계속 활용할 수 있도록 도와주세요.

리소스 보기
리소스 보기

저자

로라 베르헤이드

Laura Verheyde는 Secure Code Warrior 의 소프트웨어 개발자로서 취약점을 연구하고 Missions 및 코딩 연구소의 콘텐츠를 제작하는 데 주력하고 있습니다.

더 알고 싶으신가요?

블로그에서 최신 보안 코딩 인사이트에 대해 자세히 알아보세요.

Atlassian의 광범위한 리소스 라이브러리는 안전한 코딩 숙련도를 확보하기 위한 인적 접근 방식을 강화하는 것을 목표로 합니다.

블로그 보기
더 알고 싶으신가요?

개발자 중심 보안에 대한 최신 연구 보기

광범위한 리소스 라이브러리에는 개발자 중심의 보안 코딩을 시작하는 데 도움이 되는 백서부터 웨비나까지 유용한 리소스가 가득합니다. 지금 살펴보세요.

리소스 허브

파이썬의 tarfile 모듈에서 경로 통과 버그 이해

게시일: Oct 03, 2022
로라 베르헤이데

최근 보안 연구원 팀은 파이썬의 타르 파일 추출 기능에서 열다섯 살짜리 버그를 발견했다고 발표했습니다. 이 취약점은 2007년에 처음 공개되었으며 CVE-2007-4559로 추적되었습니다. 공식 파이썬 문서에 메모가 추가되었지만 버그 자체는 패치되지 않은 채로 남아 있습니다.

이 취약점은 수천 개의 소프트웨어 프로젝트에 영향을 줄 수 있지만 많은 사람들이 상황이나 처리 방법에 익숙하지 않습니다. 그래서 여기 Secure Code Warrior이 취약점을 직접 악용하는 것을 시뮬레이션하여 영향을 직접 확인하고 이 영구 버그의 메커니즘에 대한 실무 경험을 얻을 수 있는 기회를 제공하므로 응용 프로그램을 더 잘 보호할 수 있습니다!

시뮬레이션된 미션 을 지금 사용해 보세요.

취약점: tar 파일 추출 중 경로 통과

경로 또는 디렉터리 탐색은 비위생적인 사용자 입력을 사용하여 파일 경로를 구성하여 공격자가 파일에 액세스하여 파일을 덮어쓰고 임의 코드를 실행할 수 있도록 할 때 발생합니다. 

이 취약점은 파이썬의 tarfile 모듈에 존재합니다. tar(테이프 아카이브) 파일은 아카이브라고 하는 단일 파일입니다. 메타 데이터와 함께 여러 파일을 함께 패키지화하며 일반적으로 .tar.gz 또는 . tgz 확장자를 사용하여 인식됩니다. 아카이브의 각 멤버는 파일 이름, 수정 시간, 소유권 등과 같은 메타데이터를 포함하는 TarInfo 개체로 나타낼 수 있습니다.

위험은 아카이브에서 다시 추출 될 수있는 능력에서 발생합니다.

추출할 때 모든 멤버는 쓸 경로가 필요합니다. 이 위치는 기본 경로를 파일 이름으로 조인하여 만들어집니다. 

파이썬의 Tarfile.py 에서 발췌 한 스 니펫


이 경로가 만들어지면 tarfile.extract 또는 tarfile.extractall 함수로 전달되어 추출을 수행합니다. 

파이썬의 Tarfile.py 에서 발췌 한 스 니펫

여기서 문제는 파일 이름의 삭제 부족입니다. 공격자는 도트 도트 슬래시 (.. /), 이로 인해 파일이 의도 된 디렉토리에서 트래버스되어 임의의 파일을 덮어 씁니다. 이것은 결국 원격 코드 실행으로 이어질 수 있으며, 이는 악용에 익숙합니다. 

취약점은 식별 방법을 알고 있는 경우 다른 시나리오에서 나타납니다. 파이썬이 tar 파일을 처리하는 것 외에도 zip 파일을 추출하는 데 취약점이 존재합니다. 파이썬이 아닌 다른 언어로 나타난 zip slip 취약점과 같은 다른 이름으로 이것을 잘 알고있을 수 있습니다!

미션에 대한 링크 

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

이 취약점이 수년간 알려져 있음에도 불구하고 파이썬 메인테이너들은 추출 기능이 해야 할 일을 하고 있다고 생각합니다. 이 경우 일부 사람들은 "버그가 아닌 기능"이라고 말할 수 있습니다. 불행히도 개발자는 알 수없는 소스에서 tar 또는 zip 파일을 추출하는 것을 항상 피할 수는 없습니다. 신뢰할 수 없는 입력을 삭제하여 보안 개발 관행의 일환으로 경로 통과 취약점을 방지하는 것은 그들에게 달려 있습니다.

Python으로 보안 코드를 작성하고 위험을 완화하는 방법에 대해 자세히 알고 싶으신가요?

파이썬 챌린지를 무료로 사용해보십시오.

더 많은 무료 코딩 지침을 얻고 싶다면 보안 코드 코치 를 확인하여 안전한 코딩 관행을 계속 활용할 수 있도록 도와주세요.

우리는 당신에게 우리의 제품 및 / 또는 관련 보안 코딩 주제에 대한 정보를 보낼 수있는 귀하의 허가를 바랍니다. 우리는 항상 최대한의주의를 기울여 귀하의 개인 정보를 취급 할 것이며 마케팅 목적으로 다른 회사에 판매하지 않을 것입니다.

전송
양식을 제출하려면 '분석' 쿠키를 활성화하세요. 완료되면 언제든지 다시 비활성화할 수 있습니다.