입력 길이 검증
외부에서 온 문자열이나 패킷 길이를 destination 크기와 비교하지 않으면 overflow가 시작된다.
버퍼보다 많은 데이터를 쓰면 인접 메모리와 반환 주소, 함수 포인터, metadata가 손상될 수 있다. 방어는 길이 검사와 메모리 보호가 함께 필요하다.
외부에서 온 문자열이나 패킷 길이를 destination 크기와 비교하지 않으면 overflow가 시작된다.
stack buffer 뒤에 return address나 saved frame pointer가 있는지 구조를 본다.
stack canary, ASLR, NX bit, safe library가 각각 다른 공격 단계를 어렵게 만든다.
char buf[16];
// unchecked copy of more than 16 bytes can overwrite adjacent stack data