Uprising attack technique called “Data-Reuse Attacks” utilizes the function address which is left as a fundamental limitation of binary rewriting. The address is left as a solution to the difficulties caused by the lack of symbol and relocation information of the binary, but the attacker can abuse this to make a full exploit. This kind of abusing is crucial since many mitigations depend on the binary rewriting and adopt the solution which is known as address translation mechanism. Therefore, We applied Control Flow Integrity mitigation on the mechanism to reduce attack gadgets by combining static analysis and binary rewriting. For the evaluation, we tested the mitigation’s effectiveness, run-time overhead, attack gadget identification and size overhead with SPEC CPU benchmark and open source softwares including binutils, mruby, gcc, etc. As a result, we could find 5 times more attack gadgets than previous work, successfully reduce attack gadgets by 46% on average, get 7% run-time overhead on the SPEC CPU2006 benchmark.
최근, 새롭게 등장한 데이터 재사용 공격은 바이너리 재작성 기술의 근원적 한계로 남겨진 함수 주소를 공격에 활용한다. 바이너리 내에 심볼과 배치정보가 없어 생긴 어려움의 해결책으로 코드와 데이터를 남겨둔 것이다. 소스 코드가 없거나 취약점 패치 지원이 종료되었을 땐, 바이너리 재작성을 안정성 강화에 활용할 수 있다. 하지만 데이터 재사용 공격은 바이너리 재작성 기법에 의존적인 다수의 바이너리 기반 방어기법에 치명적이다. 본 논문에서는 데이터 재사용 공격을 방어하기 위해 바이너리 정적분석과 바이너리 재작성을 활용해 제어흐름 무결성 방어기법을 적용했다. 우리는 32비트 바이너리를 대상으로 한 실험을 통해 공격 가젯의 탐색, 방어기법의 효과성, 추가 실행시간 등을 측정했다. 그 결과, 기존의 연구 결과보다 5배 많은 공격 가젯을 발견할 수 있었으며, 평균 46%의 공격 가젯을 막을 수 있었고, 재작성된 바이너리와 비교했을 때, 최대 31% 평균 7%의 추가 실행시간이 발생함을 확인했다.