본문 바로가기

List/Embedded

Cache Incoherency Problem on MIPS Architectures

Exploiting Buffer Overflows on MIPS Architectures.pdf


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



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


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



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

'List > Embedded' 카테고리의 다른 글

IDA plugins for mips  (0) 2016.01.10
[읽어보기-다읽음] MIPS Exploit 관련 문서  (0) 2016.01.10
아키텍쳐 별 busybox binaries  (0) 2016.01.08
binwalk 설치 및 사용법  (0) 2016.01.07
Explain about MIPS ROP using router vuln  (0) 2015.09.05