🇰🇷 한글 설명
Python 3.2~3.5의 os.py 파일에서 _get_masked_mode 함수의 경쟁 상태(Race condition) 취약점입니다. exist_ok=True 설정 시 여러 스레드에서 동시에 파일을 생성하면 umask 설정 완료 전에 파일 권한 검사가 발생하여 의도된 파일 권한을 우회할 수 있습니다.
💡 쉬운 설명
Python에서 여러 작업이 동시에 파일을 만들 때, 보안 설정이 완료되기 전에 파일이 생성되어 권한 제한을 피할 수 있습니다. 공격자가 이를 악용하면 보호된 파일에 접근할 수 있습니다.
🇺🇸 원문 (English)
Race condition in the _get_masked_mode function in Lib/os.py in Python 3.2 through 3.5, when exist_ok is set to true and multiple threads are used, might allow local users to bypass intended file permissions by leveraging a separate application vulnerability before the umask has been set to the expected value.
📍 영향받는 시스템
Python 3.2, 3.3, 3.4, 3.5 버전에서 exist_ok=True 옵션으로 mkdir/makedirs 사용 시
⚔️ 공격 벡터
로컬 공격자가 다중 스레드 환경에서 경쟁 상태를 이용해 umask 설정 전 파일 생성
🛡️ 대응 방법
Python을 3.5.1 이상으로 업그레이드하거나 해당 함수에 대한 보안 패치 적용
🔧 검증 코드
현재 Python 버전이 3.2~3.5 범위에 있으면 vulnerable, 그 외는 safe
python3 --version | grep -E '3\.[2-5]' && echo 'vulnerable' || echo 'safe'