Skip to main content
QUICK REVIEW

[논문 리뷰] Block Oriented Programming: Automating Data-Only Attacks

Kyriakos K. Ispoglou, Bader AlBassam|arXiv (Cornell University)|2018. 05. 12.
Security and Verification in Computing참고 문헌 43인용 수 11
한 줄 요약

이 논문은 블록 기반 프로그래밍(BOP)을 사용하여 고수준 악성 코드 페이로드를 실행 가능한 프로그램 추적으로 컴파일함으로써 CFI 및 샤페론 스택으로 보호된 바이너리에 대한 데이터 전용 공격을 자동화하는 BOPC 프레임워크를 소개한다. BOPC는 기본 블록에 대한 히우리스틱 기반 검색을 통해 Turning 완전한 SPL 페이로드를 유효한 실행 추적으로 매핑하여, 10개의 실제 응용 프로그램에서 81%의 성공률로 성공적인 악성 코드 생성을 달성한다.

ABSTRACT

With the widespread deployment of Control-Flow Integrity (CFI), control-flow hijacking attacks, and consequently code reuse attacks, are significantly more difficult. CFI limits control flow to well-known locations, severely restricting arbitrary code execution. Assessing the remaining attack surface of an application under advanced control-flow hijack defenses such as CFI and shadow stacks remains an open problem. We introduce BOPC, a mechanism to automatically assess whether an attacker can execute arbitrary code on a binary hardened with CFI/shadow stack defenses. BOPC computes exploits for a target program from payload specifications written in a Turing-complete, high-level language called SPL that abstracts away architecture and program-specific details. SPL payloads are compiled into a program trace that executes the desired behavior on top of the target binary. The input for BOPC is an SPL payload, a starting point (e.g., from a fuzzer crash) and an arbitrary memory write primitive that allows application state corruption. To map SPL payloads to a program trace, BOPC introduces Block Oriented Programming (BOP), a new code reuse technique that utilizes entire basic blocks as gadgets along valid execution paths in the program, i.e., without violating CFI or shadow stack policies. We find that the problem of mapping payloads to program traces is NP-hard, so BOPC first reduces the search space by pruning infeasible paths and then uses heuristics to guide the search to probable paths. BOPC encodes the BOP payload as a set of memory writes. We execute 13 SPL payloads applied to 10 popular applications. BOPC successfully finds payloads and complex execution traces -- which would likely not have been found through manual analysis -- while following the target's Control-Flow Graph under an ideal CFI policy in 81% of the cases.

연구 동기 및 목표

  • CFI 및 샤페론 스택과 같은 강력한 제어 흐름 방어 기법으로 보호된 바이너리에 대한 데이터 전용 악성 코드 재사용 공격을 자동화하는 것.
  • CFI 제약 조건 하에서 복잡하고 경로에 의존하는 악성 코드를 수작업으로 작성하는 데 필요한 노력의 감소.
  • 최신 바이너리에 고도의 제어 흐름 무결성 메커니즘이 도입된 후에도 남아 있는 공격 표면을 평가하는 것.
  • 고수준 언어 추상화를 통해 루프 및 조건문을 포함한 복잡한 악성 코드 행동의 자동 합성 가능성을 제공하는 것.
  • CFI가 적용되어 있음에도 불구하고 체계적이고 자동화된 페이로드 생성을 통해 데이터 전용 코드 재사용 공격이 여전히 가능함을 입증하는 것.

제안 방법

  • BOPC는 공격자가 지정한 행동을 표현하기 위해 아키텍처나 프로그램 고유의 세부 사항과는 독립적인 고수준의 Turning 완전한 언어인 SPL(SPL)을 사용한다.
  • SPL 페이로드를 개별 문장의 제약 조건으로 컴파일하고, 이러한 제약 조건을 충족시키는 타깃 바이너리의 기본 블록을 검색하여 후보 기능 블록을 구성한다.
  • 자원 및 레지스터, 메모리의 상태 매핑을 기반으로 하여 히우리스틱 기반 검색을 수행함으로써 비가능한 경로를 잘라내고 높은 확률의 실행 추적을 우선순위로 정렬한다.
  • CFI나 샤페론 스택 정책을 위반하지 않도록 유효한 CFG 경로를 따라 디스패처 블록을 통해 기능 블록을 연결함으로써 종단 간 실행 추적을 구성한다.
  • SPL 페이로드의 순열 수, 블록 길이, 서브그래프 크기, 디스패처 경로 수에 대한 구성 가능한 상한을 적용하여 NP-난이도 매핑 문제를 줄인다.
  • 경로의 타당성을 검증하기 위해 상호 기반 실행을 사용하고, 예외(예: null 포인터 역참조)는 비유효 경로를 기각함으로써 탐지하고 처리한다.

실험 결과

연구 질문

  • RQ1CFI 및 샤페론 스택으로 보호된 바이너리에 대해 데이터 전용 코드 재사용 공격을 자동으로 생성할 수 있는가?
  • RQ2SPL과 같은 고수준 언어가 CFI 보호 환경에서 루프 및 조건문과 같은 복잡한 악성 코드 행동을 얼마나 잘 표현할 수 있는가?
  • RQ3CFI 제약 조건 하에서 SPL 페이로드를 유효한 CFG 추적으로 매핑하는 NP-난이도 문제를 해결하기 위해 히우리스틱 기반 검색 전략이 얼마나 효과적인가?
  • RQ4이deal CFI 정책 하에서 자동화 기법을 사용할 때 복잡한 악성 코드 페이로드의 몇 퍼센트가 성공적으로 합성되고 실행될 수 있는가?
  • RQ5BOPC는 수작업 역공학으로는 찾기 어려운 악성 코드 체인을 발견할 수 있는가?

주요 결과

  • BOPC는 10개의 인기 있는 응용 프로그램에서 13개의 다양한 SPL 페이로드에 대해 이상적인 CFI 정책 하에서 유효한 실행 추적을 성공적으로 생성하여 81%의 성공률을 달성했다.
  • 이 프레임워크는 CFI 제약 조건 하에서도 루프 및 조건부 논리와 같은 복잡한 악성 코드 생성을 자동화할 수 있음을 입증했으며, 수작업으로는 어려운 작업임을 보여주었다.
  • 고수준의 SPL 언어 사용으로 인해 저수준 아키텍처나 프로그램 고유의 세부 사항에서의 추상화가 가능해져 악성 코드 사양을 단순화했다.
  • 히우리스틱을 활용하여 비가능한 실행 경로를 효과적으로 잘라내고 높은 확률의 추적을 우선순위로 정렬함으로써 합리적인 시간 제한 내에서 확장 가능한 검색을 가능하게 하였다.
  • 프로토타입은 상호 기반 실행 중 예외(예: null 포인터 역참조)를 탐지하고 비유효 경로를 기각함으로써 대체 경로를 탐색함으로써 예외를 효과적으로 처리하였다.
  • 평가 결과, 강력한 제어 흐름 방어 조치가 적용되어 있음에도 불구하고 데이터 전용 공격은 여전히 실현 가능한 위협 표면임을 확인했으며, 특히 자동화된 페이로드 합성과 결합될 경우 더욱 심각한 위협이 될 수 있음을 시사한다.

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.