tarball이 파일을 추출하는 데 사용 된 명령에 관계없이 파일이 추출되는 위치를 변경할 수 있다는 것이 사실입니까?


27

나는 당신이 모르는 변경을 할 수 있기 때문에 타르볼을 조심스럽게 추출해야한다고 말하는 동료가 있습니다. 나는 항상 tarball이 압축 파일의 계층 구조라고 생각했기 때문에 / tmp / example /에 압축을 풀면 / etc / 등으로 파일을 몰래 넣을 수 없습니다.


1
어떤 운영 체제 환경에 관심이 있습니까? GNU / Linux의 tar는 -P이와 관련하여 동작에 영향을주는 옵션이 있습니다.
Jeff Schaller

1
이 경우 CentOS를 추측하지만 내가 알아야 할 것을 알고 싶습니다.
Adam R. Gray

1
오랫동안 GNU tar는 /etc/passwd루트로 실행 된 경우 제거 할 수있는 방식으로 속일 수 있습니다 . 잠시 후, 나는 그것이 gtar당신과 비슷한 보안 을 제공 한다고 생각합니다 star.
schily

답변:


41

다른 tar 유틸리티는 이와 관련하여 다르게 작동하므로주의를 기울이는 것이 좋습니다. 작성하지 않은 tar 파일의 경우, 추출하기 전에 항상 목차를 나열하십시오.

솔라리스 tar :

이름이 지정된 파일은 tarfile에서 추출되어 현재 디렉토리를 기준으로 tarfile에 지정된 디렉토리에 기록됩니다. 추출 할 파일 및 디렉토리의 상대 경로 이름을 사용하십시오.

tar 아카이브에 포함 된 절대 경로 이름은 절대 경로 이름을 사용하여 압축이 풀립니다. 즉 선행 슬래시 (/)가 제거되지 않습니다.

전체 (절대) 경로 이름을 가진 tar 파일의 경우 :

/tmp/real-file
/etc/sneaky-file-here

... 그러한 파일을 추출하면 두 파일로 끝납니다.

GNU 타르 :

기본적으로 GNU tar /는 입력 또는 출력에서 선행 을 삭제 하고 ..구성 요소를 포함하는 파일 이름에 대해 불평 합니다. 이 동작을 해제하는 옵션이 있습니다.

--absolute-names

-P

파일 이름에서 슬래시를 제거하지 말고 ..파일 이름 구성 요소를 포함하는 파일 이름을 허용하십시오 .

... 옵션 사용 하지 않고 GNU tar 사용 하여 완전히 경로가 지정된 tar 파일을 추출 -P하면 다음과 같이 알려줍니다.

tar : /멤버 이름에서 행간 제거

파일을 현재 디렉토리의 하위 디렉토리로 추출합니다.

AIX tar :

그것에 대해 아무 말도하지 않고 Solaris tar로 작동합니다-전체 / 절대 경로 이름을 가진 tar 파일을 만들고 추출합니다.

HP-UX tar : (더 나은 온라인 참조 환영)

경고

절대 경로 이름을 상대 위치로 복원 할 방법이 없습니다.

OpenBSD tar :

-P

/경로 이름에서 선행 슬래시 ( )를 제거하지 마십시오 . 기본값은 선행 슬래시를 제거하는 것입니다.

있다 -P구현 옵션 tar것을 추가와 동일한 의미를 가진뿐만 아니라 맥 OS, FreeBSD의와 NetBSD의에, tarFreeBSD의 와 맥 OS "쓰레기는 경로 이름이 포함 아카이브 항목을 추출하는 것 ..없이 또는 그 대상 디렉토리 심볼릭 링크에 의해 변경 될 것이다"는 -P.

schilytools 스타 :

-/

아카이브를 추출 할 때 파일 이름에서 선행 슬래시를 제거하지 마십시오. 절대 경로 이름을 포함하는 Tar 아카이브는 일반적으로 나쁜 생각입니다. 다른 tar 구현의 경우 기존 파일을 방해하지 않으면 추출 할 수 없습니다. 이러한 이유로 별표를 지정하면 기본적으로 추출 모드에있을 때 파일 이름에서 슬래시를 제거합니다.


2
오랜 시간 동안, GNU 타르가 포함 된 경로 이름이 있다는 사실을 무시 ..하므로 사용, 보안 상 위험을 star하거나 최근 gtar. 또한 대부분의 구현에서 경고없이 파일을 제거 star하게하는 수공 tar헤더가 포함 된 tar 아카이브 예를 살펴보십시오 tar.
schily

Jeff의 인용에 따르면 @schily tar는 Solaris, AIX 및 HP-UX 에도 적용되지 않습니까? 그렇다면 왜 GNU 타르 만 지적 ..합니까? 특히 위의 인용문에 따르면 다시 받아들이지 않는 것으로 바뀌 었 습니까? 잘못된 입력 문제는 물론 버그이며 이러한 버그를보고했다고 가정합니다.
ilkkachu

1
역사적인 타르 구현은 그런 것들을 확인하지 않습니다. GNU tar가 릴리스를 언급하지 않고 문제가 없다는 주장이 있었기 때문에 언급해야했습니다. 그리고 BTW : star(가장 오래된 무료 구현) 을 언급하지 않은 이와 같은 목록 은 불완전한 것으로 보여야합니다.
schily

@ schily, 주요 OS (다른 tar 구현이있을 수 있음)에 대한 매뉴얼 페이지를 검색했습니다. 스타의 온라인 맨 페이지에 대한 링크가 있다면 기꺼이 포함시켜 드리겠습니다.
Jeff Schaller


9

타르 폭탄으로 발생하는 재미있는 일 중 하나 현재 디렉토리의 권한을 타르볼에 포함 된 권한으로 변경한다는 것입니다.

예를 들어, tarball에 '.'이 포함 된 경우 디렉토리를 루트로 / tmp에 압축 해제하면 루트 이외의 다른 사람이 / tmp를 쓸 수 없도록하여 시스템이 손상됩니다.


그리고 압축을 /풀면 루트 디렉토리의 권한이 변경되어 예기치 않은 결과가 발생합니다 ( /모드 770 이므로 콘솔에 로그인 할 때 "/ bin / bash를 실행할 수 없음"을 기억 합니다).
Law29

1
공식 소프트웨어에서 이런 일이 발생했습니다. "rancher-compose"의 github 릴리스에는 모두 ""가 포함되어 있습니다. 예를 들어 tar 파일에 압축을 풀고 nuke / tmp를 추출하십시오.
Harald
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.