List/Embedded

Cache Incoherency Problem on MIPS Architectures

LF0827 2017. 2. 28. 02:11

Exploiting Buffer Overflows on MIPS Architectures.pdf


MIPS에서 쉘 코드 실행 시 발생하는 문제 및 해결 방법



[+] 요약 - 캐시 비 일관성


쉘코드 내에 쉘코드를 디코딩하는 요소가 있는 경우, 해당 인코딩 된 데이터는 Instruction Cache, Data Cache에 들어가게 되는데, 디코딩 후에는 Data Cache에만 디코딩 된 데이터가 들어감. 따라서 프로세서에서 명령어를 실행할 때는 Instruction Cache에서 여전히 인코딩 된 명령어를 실행하기 때문에 쉘코드 실행이 불가능함. 이러한 문제를 해결하기 위해서는 sleep()과 같은 함수로 분석 대상 프로세스를 대기하게 만듦. 이를 통해 프로세서는 다른 컨텍스트를 수행하게 되며, 분석 대상 프로세스에 관한 Instruction Cache, Data Cache는 비워지게 되므로(flush) 캐시 비 일관성에 따른 쉘코드 실행 문제가 해결됨



1줄 요약 : 먼저 쉘코드를 실행시켜 보고, 이 후 쉘코드의 동작이 멈추는 부분의 앞쪽에 sleep() 함수 호출 코드 삽입