취약한 함수 하나를 고치는 것만으로는 부족합니다. 스택 카나리, ASLR, NX, PIE, RELRO, CFI가 각기 다른 공격 단계를 막습니다.
strcpy 대신 snprintf,
fgets를 사용합니다.
반환 전 랜덤 값이 바뀌었는지 확인합니다.
스택, 힙, 라이브러리 위치를 실행마다 바꿉니다.
스택과 힙에 넣은 코드를 바로 실행하지 못하게 합니다.
동적 링크 테이블 변조를 어렵게 만듭니다.
허용된 제어 흐름 밖으로 점프하지 못하게 합니다.
공격자는 우회 기법을 조합하므로 여러 계층이 필요합니다.
보안 플래그가 실제 바이너리에 적용됐는지 검사합니다.
무결성 검사와 MAC 정책은 침해 이후 확산을 줄입니다.