저는 실험실에서 실험실에서 우리에게 제공하는 코드에 버퍼 오버플로 악용을 수행하는 코스를 진행하고 있습니다. 이것은 스택의 함수에 대한 리턴 주소를 변경하여 다른 함수로 리턴하는 것과 같은 간단한 악용에서부터 프로그램 레지스터 / 메모리 상태를 변경하지만 호출 한 함수로 돌아가는 코드까지 다양합니다. 당신이 호출 한 함수는 익스플로잇에 대해 완전히 알지 못합니다.
나는 이것에 대해 약간의 연구를 했으며, Wii에서 homebrew를 실행 하고 iOS 4.3.1을위한 무제한 탈옥 과 같은 것들에서 이러한 종류의 공격은 지금까지 거의 모든 곳에서 사용됩니다.
내 질문은 왜이 문제를 해결하기가 어렵습니까? 이것은 수백 가지를 해킹하는 데 사용되는 주요 익스플로잇입니다. 그러나 허용 된 길이를 초과하는 입력을 잘라 내고 입력하는 모든 입력을 삭제하는 것만으로 쉽게 고칠 수있을 것 같습니다.
편집 : 또 다른 대답을 고려해야합니다. C 작성자가 라이브러리를 다시 구현하여 이러한 문제를 해결하지 않는 이유는 무엇입니까?