Home > 전체기사

[CSRC@KAIST 차세대보안R&D리포트] Data-oriented Attack

  |  입력 : 2021-03-25 13:31
페이스북 보내기 트위터 보내기 네이버 밴드 보내기 카카오 스토리 보내기
제어 흐름을 변조하지 않으면서 공격할 수 있는 ‘데이터 변조 공격’ 살펴보기

[보안뉴스= 정동재 KAIST 사이버보안연구센터 악성코드 분석팀 팀장] CFI는 제어 흐름의 무결성을 보장하는 기법으로 정상적인 제어 흐름을 벗어나는 공격에 대해 탐지합니다. 하지만 지난 ‘제어 흐름 무결성 CFI의 종착점’ 칼럼에서 살펴본 것처럼, 완벽하게 문맥까지 고려하여 만들어진 CFI라고 하더라도 모든 메모리 손상 공격을 완벽하게 방어하지 못합니다. 이번 칼럼에서는 메모리 손상 공격이 발생했을 때, 제어 흐름을 변조하지 않으면서 공격할 수 있는 데이터 변조 공격에 대해 알아보겠습니다.

[이미지=utoimage]


메모리 손상 공격(memory corruption)은 시스템 보안에서 가장 오래된 문제 중 하나입니다. 메모리 손상 공격은 흔히 프로그램의 개발 실수로 인해 초기화되지 않거나 허가되지 않는 메모리 영역에 접근 시 발생합니다. 해킹이 발생하는 일련의 과정을 보면, 응용 프로그램이나 운영체제에 존재하는 취약점으로 인해 익스플로잇(exploit)이 발생하면, 공격자는 메모리의 특정 영역을 변조할 수 있게 됩니다. 공격자는 특정 영역을 조작함으로써 자신이 원하는 악의적인 행위를 수행하게 됩니다. 이렇게 메모리 손상을 통해 공격자는 특정 데이터를 조작할 수 있게 되고 이를 통해 공격자가 원하는 악의적인 행위를 수행합니다.

여기서 데이터는 제어 데이터(control data)와 비제어 데이터(non-control data) 두 가지로 구분할 수 있습니다. 제어 데이터는 값으로 메모리 주소를 가지고 있어 제어 흐름에 직접적으로 영향을 미치는 데이터입니다. 제어 데이터 변조는 프로그램의 흐름을 변조하여 공격자가 원하는 코드를 실행하며, 제어 흐름 탈취 공격(control flow hijacking attack)이라 합니다.

반면, 비제어 데이터는 제어 데이터와 상반된 개념으로 제어 흐름에 직접적으로 영향을 미치지 않는 데이터 변수나 포인터를 뜻합니다. 비제어 데이터 변조는 프로그램의 흐름을 변조하지 않으면서 공격자가 원하는 행위를 실행하는 방법으로 Data-Oriented Attack이라 합니다.

Data-oriented attack은 앞에서 언급한 것과 같이 프로그램의 비제어 데이터를 조작하여 악의적인 행위를 수행합니다. 이 공격은 간단히 데이터의 변수를 변조하는 것으로도 가능하며, 주로 패스워드나 암호화키를 추출하는 정보 누출(information disclosure), 사용자의 정보를 조작하여 더 높은 권한을 획득하는 권한 상승(privilege escalation), 시스템 자원의 낭비로 인한 성능 하락을 노리는 성능 저하(performance degradation), 시스템에 적용된 여러 가지 보안 기법들을 우회하기 위한 목적으로 사용됩니다.

Data-oriented attack은 공격 방식에 따라 직접 데이터 변조(Direct Data Manipulation)와 DOP(Data-Oriented Programming)로 나뉩니다. 직접 데이터 변조 방식은 말 그대로 데이터를 직접 변조함으로써 공격자가 원하는 악의적인 행위를 하는 것을 뜻합니다. 이를 위해 공격자는 변조할 데이터의 메모리 주소를 알아야 하고, 이 데이터를 조작할 수 있어야 합니다.

▲정동재 KAIST 사이버보안연구센터 악성코드 분석팀 팀장[사진=KAIST]

DOP는 좀 더 고도화된 비제어 데이터 공격 방식입니다. 직접 데이터 변조가 비제어 데이터를 직접적으로 단순하게 변조하는 것이라면, DOP는 튜링 완전(turing-complete)한 비제어 데이터 공격을 목표로 합니다. 즉, 단순히 데이터의 값을 변조하는 것에서 그치는 것이 아니라, 값을 읽고, 쓰고, 연산하는 것을 포함하여 모든 조작이 가능하게 하여 풍부하게 표현하는 것을 목표로 합니다.

DOP 공격은 ROP 공격과 유사하게 기존에 존재하는 코드를 활용하여 공격 코드를 구성합니다. 이때 사용하는 DOP 가젯은 산술, 논리, 할당, 읽기, 쓰기 기능을 하는 명령어로 구분하고, 제어 흐름을 벗어나지 않는 코드를 대상으로 탐색합니다. 이렇게 구분된 가젯을 조합하여 공격 코드를 구성하여 원하는 데이터에 접근하여 값을 읽거나 변조합니다.

Data-oriented attack은 제어 흐름을 벗어나지 않는 정상적인 흐름 내에서 공격하기 때문에 제어 흐름 방어 기법으로는 보호할 수 없습니다. Data-oriented attack을 방어하는 방법은 ASLR과 유사하게 데이터 공간 무작위화(data space randomization) 방식과 DFI(Data Flow Integrity)가 존재합니다. 이 두 방식은 아직까지 Data-oriented attack에 대해 완벽한 보안을 제공하지 못하고 있습니다. 다음 칼럼에서는 Data-oriented attack에 대한 방어 기법에 대해 살펴보고, 각 기법의 문제점에 대해 알아보겠습니다.
[글_ 정동재 KAIST 사이버보안연구센터 악성코드 분석팀 팀장]

<저작권자: 보안뉴스(www.boannews.com) 무단전재-재배포금지>

  •  
  • 0
  • 페이스북 보내기 트위터 보내기 네이버 밴드 보내기 카카오 스토리 보내기

  •  SNS에서도 보안뉴스를 받아보세요!! 
2021 전망보고서넷앤드 파워비즈 진행 2020년1월8일 시작~2021년 1월8일까지위즈디엔에스 2018파워비즈배너 시작 11월6일 20181105-20200131
설문조사
과기정통부가 발표한 ‘K-사이버방역 추진전략’ 8대 과제 가운데 가장 시급하고 중요하게 해결해야 할 과제는?
사이버보안 대응체계 고도화
수요자 중심 디지털보안 역량 강화
차세대 융합보안 기반 확충
신종 보안위협 및 AI 기반 대응 강화
디지털보안 핵심기술 역량 확보
정보보호산업 성장 지원 강화
디지털보안 혁신인재 양성
디지털보안 법제도 정비