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

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

설명

예측 가능한 임시 파일 이름 API는 경쟁 조건과 심볼릭 링크 공격에 노출될 수 있습니다.

잠재적 영향

  • 임의 파일 덮어쓰기, 정보 노출, 권한 상승이 발생할 수 있습니다.

해결 방법

이름만 생성하는 API 대신 파일을 원자적으로 생성하고 여는 mkstemp 또는 플랫폼별 안전 API를 사용하세요. 반환된 파일 디스크립터를 사용하고, 실패를 처리한 뒤 사용이 끝나면 파일을 닫고 삭제하세요.

예시

변경 전

c
char name[] = "/tmp/app.XXXXXX";
mktemp(name);
FILE *f = fopen(name, "w");

변경 후

c
char name[] = "/tmp/app.XXXXXX";
int fd = mkstemp(name);

설명:

  • 변경 전: mktemp로 이름만 만든 뒤 별도로 파일을 열어 경쟁 조건이 생깁니다.
  • 변경 후: 임시 파일을 원자적으로 생성합니다.

참조