개발/코더 탈출

ROV

-=HaeJuK=- 2024. 9. 12. 12:19

ROV(Return-Oriented Vulnerability)은 **Return-Oriented Programming (ROP)**과 밀접한 관계가 있습니다. **ROP(리턴 지향 프로그래밍)**는 메모리의 기존 코드 조각을 악용하여 임의의 동작을 수행하게 만드는 익스플로잇 기술로, 특히 DEP(Data Execution Prevention) 같은 방어 기법을 우회하는 데 사용됩니다.

ROP(Return-Oriented Programming) 개념:

  1. 기존 코드 조각 재사용: ROP는 공격자가 시스템 메모리에 있는 기존 코드 조각들을 재사용하여 악성 동작을 수행합니다. 이때 코드 조각은 작은 부분, 즉 **가젯(gadget)**이라고 부르는 기계어 명령의 모음입니다. 각 가젯은 RET(return) 명령으로 끝나며, 공격자는 이를 연결하여 자신의 목적에 맞는 새로운 프로그램 흐름을 구성합니다.
  2. DEP 우회: DEP는 메모리 영역에서 실행할 수 있는 코드를 제한하지만, ROP는 새로운 코드를 실행하지 않고 이미 존재하는 코드 조각을 사용하기 때문에 DEP를 우회할 수 있습니다. 공격자는 이러한 가젯을 조합하여 악성 행동을 유도할 수 있습니다.
  3. ROP 공격의 원리:
    • 공격자는 스택 오버플로우나 다른 취약점을 이용하여 시스템의 제어를 획득합니다.
    • 공격자는 함수 호출 이후의 리턴 주소를 조작하여, 코드가 원래 실행될 코드 대신 자신이 설정한 가젯으로 점프하도록 만듭니다.
    • 이렇게 연결된 가젯들은 공격자가 의도한 동작을 수행하도록 프로세스를 제어하게 됩니다.

ROV(Return-Oriented Vulnerability):

**ROV(Return-Oriented Vulnerability)**는 ROP 공격을 가능하게 만드는 시스템의 취약성을 의미합니다. 이는 시스템 메모리에 있는 다양한 가젯들이 악용될 수 있다는 것을 의미합니다. 시스템 내에서 존재하는 여러 가젯들이 모여 ROP 공격을 수행할 수 있는 기반이 되기 때문에, ROV는 ROP 공격의 대상이 될 수 있는 환경에서 중요한 취약점으로 여겨집니다.

ROP/ROV의 방어 기법:

  1. ASLR(Address Space Layout Randomization): 메모리 주소를 무작위로 배치하여 가젯의 위치를 예측하기 어렵게 만들어 ROP 공격을 방지하는 데 도움을 줍니다.
  2. Control Flow Integrity (CFI): 프로그램의 제어 흐름을 보호하는 기법으로, ROP와 같은 공격에서 허가되지 않은 제어 흐름 변경을 탐지하고 차단합니다.
  3. Stack Canaries: 스택 오버플로우 공격을 탐지하기 위해 스택에 특별한 값을 저장해 두고, 이를 통해 스택이 조작되었는지 여부를 감지하는 방법입니다.

요약:

  • ROP는 악성 공격자가 메모리에 있는 기존 코드 조각을 재사용하여 의도된 프로그램 흐름을 변경하는 기법.
  • ROV는 ROP 공격에 취약한 시스템 내의 취약성.
  • ASLR, DEP, CFI 등은 ROP/ROV 공격을 방어하는 데 사용되는 기법들입니다.
반응형