고정 버퍼 오버플로

고정 버퍼 오버플로

설명

고정 크기 스택 버퍼에 버퍼 크기보다 큰 상수 길이로 복사하거나 읽으면 인접 스택 메모리를 덮어쓸 수 있습니다.

잠재적 영향

  • 크래시, 데이터 손상, 제어 흐름 탈취 가능성이 있습니다.

해결 방법

목적지 버퍼 크기 이하의 길이만 사용하고, 크기를 자동으로 계산하는 안전한 래퍼를 사용합니다.

예시

변경 전

c
char buf[8];
memcpy(buf, src, 32);

변경 후

c
char buf[8];
memcpy(buf, src, sizeof(buf));

설명:

  • 변경 전: 8바이트 버퍼에 32바이트를 복사합니다.
  • 변경 후: 목적지 배열 크기를 기준으로 복사 길이를 제한합니다. 이 예시는 src에서 최소 8바이트를 읽을 수 있다는 전제의 바이트 복사이며, 문자열의 종료 문자를 추가하지는 않습니다.

참조