임의 파일 쓰기 아카이브 추출을 통한 공격 (Tar Slip)

Arbitrary File Write via Archive Extraction (Tar Slip)

설명

Tar Slip 공격은 공격자가 특수하게 조작된 tar 아카이브 파일을 통해, 파일이 아카이브에서 추출될 때 임의의 위치에 파일을 작성하도록 하는 공격입니다. 이 공격은 절대 경로 및 상대 경로(../)를 사용하여 발생하며, 이를 통해 중요한 시스템 파일이나 민감한 정보가 덮어쓰여질 수 있습니다.

잠재적 영향

  • 파일 시스템 손상: 공격자가 시스템 파일을 덮어써서 시스템을 손상시킬 수 있습니다.

  • 정보 유출: 민감한 정보가 공격자에게 노출될 수 있습니다.

  • 권한 상승: 공격자가 시스템의 중요한 파일을 수정하여 권한을 상승시킬 수 있습니다.

해결 방법

  • 파일 경로 검증: 아카이브에서 추출되는 파일 경로를 검증하여 절대 경로 및 상대 경로(../)가 포함되지 않도록 합니다.

  • 안전한 추출 경로 사용: 파일이 안전한 디렉토리에만 추출되도록 제한합니다.

취약한 코드 및 안전한 코드 예시

취약한 코드

# Unsafe Flask code
import tarfile

def unsafe_extract(tar_file_path, extract_path):
    with tarfile.open(tar_file_path) as tar:
        tar.extractall(path=extract_path)

안전한 코드

설명:

  • 취약한 코드: tar 파일에서 추출된 파일 경로를 검증하지 않고 그대로 추출하여, 공격자가 절대 경로 및 상대 경로(../)를 사용하여 임의의 위치에 파일을 작성할 수 있습니다.

  • 안전한 코드: 추출 전에 파일 경로를 검증하여 절대 경로 및 상대 경로가 포함되지 않도록 하여, 안전한 위치에만 파일이 추출되도록 합니다.

참조

Last updated