설명
과도한 파일 권한(Insecure File Permissions)은 파일이나 디렉토리에 적절한 접근 제어가 적용되지 않아, 무단 접근이나 데이터 유출 등의 보안 문제가 발생하는 취약성입니다. 이는 민감한 정보가 포함된 파일이 비인가 사용자에게 노출될 위험이 있습니다. 또한 비인가 사용자로 인한 데이터 변조로 의도하지 않은 파일 실행이 발생해 시스템이 탈취될 수 도 있습니다.
잠재적 영향
- 데이터 유출: 민감한 정보가 비인가 사용자에게 노출될 수 있습니다.
- 데이터 변조: 비인가 사용자가 파일을 수정하여 데이터 무결성을 해칠 수 있습니다.
- 시스템 손상: 중요한 시스템 파일이 변조되거나 삭제되어 시스템이 손상될 수 있습니다.
해결 방법
- 최소 권한 원칙 적용: 파일과 디렉토리에 최소한의 권한만 부여하여 접근을 제한합니다.
- 정기적인 권한 검토: 파일 권한을 정기적으로 검토하여 불필요한 권한이 부여되지 않도록 합니다.
예시
File permissions
변경 전
python
# Unsafe file permissions
import os
file_path = 'sensitive_data.txt'
with open(file_path, 'w') as f:
f.write('Sensitive information')
# 과도한 권한 부여로 타 사용자들이 파일을 덮어 쓰고 악성 코드를 실행할 가능성이 있음
os.chmod(file_path, 0o777)
변경 후
python
# Safe file permissions
import os
file_path = 'sensitive_data.txt'
# 새 파일만 0o600으로 원자적으로 생성합니다. 기존 파일이나 심볼릭 링크면 실패합니다.
fd = os.open(file_path, os.O_WRONLY | os.O_CREAT | os.O_EXCL, 0o600)
with os.fdopen(fd, 'w') as f:
f.write('Sensitive information')
설명
- 변경 전: 과도한 권한 부여로 타 사용자들이 파일을 덮어 쓰고 악성 코드를 실행할 가능성이 있습니다.
- 변경 후:
O_CREAT | O_EXCL과0o600으로 파일을 처음부터 최소 권한으로 생성합니다. 같은 경로의 기존 파일이나 심볼릭 링크는 덮어쓰지 않고 실패하므로 권한 변경 전 노출과 링크 추적을 방지합니다.
Directory permissions
변경 전
python
# Unsafe directory permissions
import os
dir_path = 'sensitive_dir'
os.mkdir(dir_path)
# 모든 사용자에게 읽기·쓰기·탐색 권한을 명시적으로 부여
os.chmod(dir_path, 0o777)
변경 후
python
# Safe directory permissions
import os
dir_path = 'sensitive_dir'
# 생성 순간부터 소유자만 접근할 수 있도록 설정
os.mkdir(dir_path, mode=0o700)
설명
- 변경 전:
0o777을 명시적으로 부여하여 다른 사용자도 디렉토리를 탐색하고 내용을 변경할 수 있습니다. - 변경 후: 디렉토리를 만든 뒤 권한을 바꾸는 대신 생성 시점에
0o700을 지정하여 중간 노출 없이 소유자만 접근하도록 합니다.