안전하지 않은 방법으로 임시 파일을 만들면 애플리케이션이 파일 이름에 대한 경쟁 조건에 노출됩니다. 악의적인 사용자가 애플리케이션보다 먼저 예측 가능한 이름으로 파일을 만들려고 시도할 수 있습니다. 공격이 성공하면 다른 파일이 액세스, 수정, 손상 또는 삭제될 수 있습니다. 애플리케이션이 상승된 권한으로 실행되는 경우 이러한 위험은 더욱 높아집니다.
과거에는 다음과 같은 취약점이 발생했습니다:
규칙을 어긴 코드
import tempfile
filename = tempfile.mktemp() # 규칙을 어긴 코드
tmp_file = open(filename, "w+")
규칙을 준수한 해결책
import tempfile
tmp_file1 = tempfile.NamedTemporaryFile(delete=False) # 규칙을 준수한 코드; tempfile.mktemp()로 쉽게 대체 가능
tmp_file2 = tempfile.NamedTemporaryFile() # 규칙을 준수한 코드; 생성된 파일은 자동으로 삭제됩니다
같이보면 좋은 자료
- OWASP Top 10 2021 Category A1 - 취약한 접근 제어
- OWASP Top 10 2017 Category A9 - 알려진 취약점이 있는 컴포넌트 사용
- MITRE, CWE-377 - 안전하지 않은 임시 파일
- MITRE, CWE-379 - 잘못된 권한으로 디렉토리에 임시 파일 생성
- OWASP, Insecure Temporary File
- Python tempfile module
-
Python 2.7 os module
If you like SONARKUBE, don’t forget to give me a star.