안전하지 않은 임시 파일 생성

Insecure Temporary File Creation

설명

안전하지 않은 임시 파일 생성은 임시 파일을 생성할 때 race condition에 취약한 tempfile.mktemp() 함수를 사용했을때 발생하는 취약성입니다. Race Condition이 발생할 경우 공격자가 생성된 임시 파일을 악용하여 데이터를 탈취하거나 덮어쓸 수 있는 위험이 있습니다.

잠재적 영향

  • 데이터 유출: 공격자가 임시 파일에 접근하여 민감한 정보를 탈취할 수 있습니다.

  • 데이터 변조: 공격자가 임시 파일을 덮어써서 데이터를 변조할 수 있습니다.

  • 권한 상승: 공격자가 임시 파일을 조작하여 권한을 상승시킬 수 있습니다.

해결 방법

  • 안전한 임시 파일 생성: tempfile.mkstemp() 또는 tempfile.NamedTemporaryFile() 함수를 사용하여 안전하게 임시 파일을 생성합니다.

  • 임시 파일 접근 제한: 임시 파일의 접근 권한을 적절히 설정하여 보안을 강화합니다.

  • 임시 파일 사용 후 삭제: 임시 파일 사용 후 즉시 삭제하여 불필요한 노출을 방지합니다.

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

취약한 코드

# Unsafe temporary file creation
import tempfile

filename = tempfile.mktemp()  # Noncompliant
tmp_file = open(filename, "w+")

안전한 코드

tempfile.mkstemp 활용

tempfile.NamedTemporaryFile 활용

설명:

  • 취약한 코드: tempfile.mktemp()를 사용하여 임시 파일을 생성하면, 파일이 생성되는 동안의 시간차를 악용하여 다른 프로세스가 파일을 덮어쓸 수 있습니다.

  • 안전한 코드: tempfile.mkstemp() 또는 tempfile.NamedTemporaryFile()을 사용하여 임시 파일을 안전하게 생성할 수 있습니다. 추가로 tempfile.NamedTemporaryFile(delete=True)을 사용하여 파일이 안전하게 생성되고 자동으로 삭제되도록 할수도 있습니다.

참조

Last updated