버퍼 오버플로는 어떤 상황에서 발생하는 오류인가?
경계 검사
소프트웨어적인 경계 검사는 프로그램의 안전성을 높여주는 대신 추가 CPU 시간을 소모시키지만, 하드웨어적인 경계 검사는 이론적으로는 실행 시간 손실 없이 "공짜로" 안전성의 이점만을 취할 수 있다. 1974년 초창기 컴퓨터 시스템 중 하나인 ICL 2900 시리즈 시스템이 하드웨어 경계 검사를 차용한 이래로,[2] 일러도 2005년에 들어 x86 시스템의 내장 메모리 관리 유닛 (MMU)을 배열 및 버퍼 접근 시에 안전성을 확보하는 데 사용할 방법에 대한 연구가 시작되었다.[3] 2015년에는 Intel 사에서 배열 경계를 CPU 레지스터와 메모리 상에 테이블로 저장해두는 신형 Skylake 프로세서 아키텍처 확장을 발표하고 (Intel MPX), 2017년 GCC 컴파일러에서 Intel MPX 확장을 지원하기 시작했다. 하지만 이후 다수의 연구에 의해 기존 소프트웨어적 기술들과 비교해 성능상/기능상 이점을 갖추지 못한 것으로 평가받으며[4][5][6] 실세계 적용이 둔화되거나 위축되는 추세이다.[7]