반환 지향형 프로그래밍
반환 지향 프로그래밍은 스택 스매싱의 진화된 버전이다. 일반적으로 공격들의 이러한 종류들은 상대방이 프로그램의 버그(주로 버퍼 오버런)를 이용함으로써 콜 스택을 조작할 때 발생한다. 버퍼 오버런 시에 사용자가 제공하는 데이터를 적절한 경계 검사 없이 메모리에 저장하는 함수는 적정한 양보다 더 많은 데이터를 받아들일 수 있다. 데이터가 스택에 겹쳐써지면 초과된 데이터는 함수의 변수에 할당된 공간을 넘치게 되고 반환 주소도 겹쳐쓰게 된다. 이 주소는 이후에 함수에 의해서 제어 흐름을 다시 호출자로 넘겨줄 때 사용된다. 만약 겹쳐써졌다면 제어 흐름은 새로운 반환 주소로 넘겨지게 된다.
버퍼 오버플로 보호
GNU 컴파일러 모음, LLVM, 마이크로소프트 비주얼 스튜디오 등에는 버퍼 오버플로 보호의 여러 기법들이 존재한다.
스택 버퍼 오버플로는 스택 스매싱으로 알려진 공격의 한 부분으로서 고의적으로 유발될 수 있다. 만약 감염된 프로그램이 특별한 권한으로 실행되거나 신뢰되지 않은 네트워크 호스트로부터 데이터를 받는다면, 이 버그는 공격자가 실행 가능한 코드를 실행 중인 프로그램에 삽입하여 프로세스의 제어를 가질 수 있게 함으로써 잠재적으로 보안 취약점이 될 수 있다. 이것은 공격자가 컴퓨터에 대한 비인가된 접근을 갖게 하는 가장 오래된 방식 중 하나이다.