ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [07-15 공부정리 Fine-Grained ASLR]
    공부정리 2018.07.15 20:19

    Fine-Grained ASLR 논문을 보고서 내용을 정리해보았다.


    URL : https://ieeexplore.ieee.org/abstract/document/6547134/

    논문명 : Just-In-Time Code Reuse: On the Effectiveness of Fine-Grained Address Space Layout Randomization

    저자 : Kevin Z. Snow, Fabian Monrose, Lucas Davi, Alexandra Dmitrienko, 

    Christopher Liebchen, Ahmad-Reza Sadeghi




    ASLR이란, Address Space Layout Randomization의 약자로써 메모리 보호기법 중 하나이다

    단어에서 유추할 수 있듯이 메모리 주소를 실행할 때 마다 랜덤하게 위치하도록 하는 것이다.

    하지만 이 보호기법은 ROP(Return-Oriented Programming)공격에 무효화 된다.

     

    ROPStack Pivoting하여 가짜 스택 안에 필요한 Gadget을 넣어서 공격자가 원하는 대로 프로그램이 흘러가도록 하는 공격법이다바이너리의 주소를 실행할 때 마다 변경시킨다고 해도 서로의 offset은 항상 일정하기 때문에, 로컬에서 바이너리 취약점을 분석하고 Payload를 작성해도 실제 환경에서 Exploiting이 가능한 것이다. 이러한 'Code Reuse Attack'을 막기 위해서 등장한 것이 'Fine-Grained ASLR'이다.

     

    Fine-Grained ASLR'Fine-Grained'는 무엇인가? 'Grain'은 곡식을 하나하나의 낱알로 만드는 작업을 말한다. 낱알을 듬성듬성 크게 하는 것을 Coarse-Grain, 곱고 가늘게 하는 것을 Fine-Grain이라고 표현하는데, ‘Fine-Grained ASLR‘은 기존 ASLR보다 

    메모리를 좀 더 세분화하여 랜덤하게 위치하도록 하는 보호기법이다.


    Fine-Grained ASLR 도식화 ]

     

    그림은 'Fine-Grained ASLR'을 도식화한 것인데, 처음 실행했을 때의 Gadget들의 위치와 두 번째 실행했을 때의 Gadget들의 위치가 서로 다른 것을 확인할 수 있다Code영역의 주소까지 Randomization하여 'Code Reuse Attack'을 방지한 것이다.

     

    그렇다면 왜 이 보호기법은 보편화되지 않았을까?

    우선 제일 먼저 생각할 수 있는 것은 Code영역까지 건드려야 하기 때문에 Overhead가 굉장히 커진다.

    또한, 발생하는 Overhead를 감수하고 적용한다고 해서 완벽히 보호되는 것이 아니다

    이 보호기법은 'JIT ROP'공격(Just-In-Time ROP)으로 우회할 수 있기 때문에 기본적으로 ASLR을 적용하고 있는 것이다

    댓글 0

Designed by Tistory.