Developer/iOS

iOS의 코드 서명(데이터 실행 보호(DEP - Data Execution Prevention))

블로blow 2017. 3. 21. 15:48
728x90

iOS는 왜 해킹에 강할까? 라는 의문점을 가지고 찾아 보는 중에 DEP라는 매커니즘이 적용된 것을 알 수 있었다.


01 DEP란?

프로세서가 데이터 영역은 실행하지 않고 코드 영역만 구동하도록 메모리에서 코드 영역과 데이터 영역을 구분하기 위한 메커니즘.

즉, 공격 코드가 다운로드한 코드를 실행시키는 것을 막을 수 있다는 뜻이다.


다운로드한 코드는 DEP를 통해 데이터로 취급되어서 실행을 할 수 없게 된다.

그래서 iOS를 공격할 때는 ROP를 사용한단다. ( ROP에 대해선 나중에..)


02 iOS의 코드서명.

iOS의 코드서명은 매커니즘은 DEP와 비슷하지만 좀 더 강력하다.

DEP를 매커니즘이 되어있다면, ROP를 활용해 쓰고 실행할 수 있는 메모리 영역을 먼저 생성한 후, 공격에 필요한 페이로드를 작성하고 실행시키면 되지만,

iOS의 코드서명의 경우 신뢰할 수 있는 기관으로 부터 서명되지 않은 코드는 아무것도 실행시킬 수 없다.

따라서 ROP를 실행시킬 수 있을 뿐 페이로드는 실행하기 어렵다.



728x90