보안뉴스 창간 15주년을 축하합니다!!

Home > 전체기사

[CSRC@KAIST 차세대보안R&D리포트] 데이터 공격 방어기법

  |  입력 : 2021-04-22 10:06
페이스북 보내기 트위터 보내기 네이버 밴드 보내기 카카오 스토리 보내기
데이터 공격은 메모리 손상으로부터 시작되어 ‘Non-Control Data’의 변조가 일어나면서 시작
메모리 손상을 막기 위한 Memory Safety 기법, 데이터의 위치를 알 수 없게 만드는 방법, 데이터 흐름 무결성 등


[보안뉴스= 정동재 KAIST 사이버보안연구센터 악성코드분석팀장] 이번 기고에서는 지난 기고(Data-oriented Attack)에서 살펴본 데이터 공격(Data-oriented attack)에 대한 방어기법들에 대해서 공격이 발생되는 과정에 따라 단계별로 보호할 수 있는 어떤 방법들이 존재하는지 알아보고, 이들 각각의 보안 방법들이 지닌 한계점에 대해서도 간략히 살펴보도록 하겠습니다.

[이미지=utoimage]


데이터 공격은 메모리 손상으로부터 시작되어 ‘Non-Control Data’의 변조가 일어나면서 시작됩니다. 메모리 손상부터 데이터 변조까지의 공격 흐름에 따라 각 단계에 대한 방어 기법을 생각해보면, 가장 처음 할 수 있는 방법은 메모리 손상을 막는 것입니다. 메모리 손상은 흔히 취약점을 통해 익스플로잇(Exploit)되면서 발생하며, 방어기법으로는 Memory Safety 기법이 존재합니다.

Memory Safety 기법은 비제어 데이터뿐만 아니라 제어 데이터까지도 보호하는 방식으로 모든 메모리 손상을 막는 것을 목표로 합니다. 메모리 오류를 탐지해 유효한 포인터와 오브젝트의 주소를 검사하는 방식으로 메모리 공간의 안정성을 보장합니다. 하지만 이 방식은 바이너리 내의 포인터들을 메타데이터와 구분하기 위해 별개의 메모리 공간에 보관하고, 데이터의 접근이 발생할 때, 포인터 여부에 대한 검사와 포인터들이 역참조될 때마다 유효한 범위 내에 있는지 검사를 진행하는 오버헤드로 인해 아직까지는 실생활에 적용할 수 없을 정도의 엄청난 오버헤드가 발생한다는 단점이 존재합니다.

메모리 손상으로부터 보호하기 위한 또 다른 방식으로는 중요한 데이터들을 따로 격리시키는 방법이 있습니다. 이러한 메모리 격리 방식은 권한이 높은 리소스에 대한 무단 액세스를 방지하기 위해 널리 사용됩니다. 합법적인 코드 영역에서만 사용자 ID와 권한 같은 보안에 중요한 데이터에 접근할 수 있게 함으로써 의도치 않은 접근으로 인한 직접적인 데이터 손상을 방지합니다. 이 방식은 메모리를 격리할 수 있는 추가적인 하드웨어나 소프트웨어적인 방법이 필요하다는 것과 적은 양의 중요한 데이터를 보호하는 경우에만 효과적이라는 단점이 존재합니다.

다음으로 Non-Control Data가 변조되는 것을 막기 위한 방법으로는 데이터의 위치를 알 수 없게 만드는 방법이 있습니다. 이 방식은 데이터 오브젝트 내의 위치를 랜덤하게 변화하는 방식과 데이터 표현을 수정하는 방식이 있습니다. DSR(Data Space Randomization)이라고 하는 방식은 메모리의 각 데이터 개체를 임의의 키값으로 암호화하고, 사용하기 전에 해독하는 방식으로 데이터를 보호합니다. 하지만, ASLR과 유사하게 무작위화의 한계로 인해 완벽한 보안을 제공하지는 못합니다. 또한, 메모리 레이아웃을 파악해 공격이 가능하며, DOP(Data-Oriented Programming) 공격에 취약하다는 한계점이 있습니다. 또한, 모든 데이터의 위치를 무작위화 하는 것은 높은 오버헤드를 발생시킬 수 있다는 단점도 존재합니다.

마지막 방법으로 데이터 흐름 무결성(Data Flow Integrity) 기법이 있습니다. 이름에서도 느껴지듯이, 데이터 흐름 무결성 방식은 제어 흐름 무결성 방식과 접근 방식이 비슷합니다. 먼저 프로그램 실행 전에 데이터가 정의되고 사용되는 것에 대한 정적 데이터 흐름 그래프(DFG)를 생성합니다. 그리고 프로그램이 실행되면서 각 데이터의 읽기 작업이 수행될 때, 이 데이터가 합법적인 작업에 의해서 정의되었는지 데이터 변조에 대한 검사를 수행해 데이터를 보호합니다. 이 방식 또한, 모든 메모리 영역에 데이터 흐름 무결성을 완벽하게 적용하면 모든 데이터 변조 공격을 막을 수 있지만, 모든 데이터가 정의될 때 값을 기억하고, 사용될 때 값이 변조되었는지 검사하는 루틴이 추가되어 매우 높은 오버헤드가 존재하며, 아직까지 기술적으로 어려운 부분이 많이 있습니다.

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

대부분의 데이터 공격에 대한 방어기법들을 요약하자면, 프로그램 내에 존재하는 수많은 데이터를 모두 보호하기에 아직 기술적으로나 성능적인 측면에서 볼때 상당히 많은 비용이 발생하기 때문에 결국에는 보안적으로 중요한 데이터들을 선별하여 일부 데이터들만 보호하는 방법이 실용적인 접근 방법이라고 할 수 있겠습니다.

지금까지 살펴본 것처럼 메모리 손상에 대한 다양한 공격들과 그에 대한 여러 가지 방어 기법들에 대해 살펴보았습니다. 결국 가장 완벽해 보이는 최신의 방어기법이라도 또 다른 취약점과 여러 우회적인 공격에 의해 공격이 가능하다는 한계점이 있다는 것을 알 수 있었습니다. 따라서 더욱 안전한 시스템을 만들기 위해서는 여러 공격들에 대한 높은 이해와 심도 있는 분석을 바탕으로 한 방어기법 연구, 더욱 철저한 검증과 테스팅이 조화를 이룰 때 가능하며, 더욱 완벽한 보안을 위해서는 자동화가 필수적인 과제가 아닐까 생각해 봅니다.
[글_ KAIST 사이버보안연구센터 악성코드분석팀 정동재 팀장]

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

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

  •  SNS에서도 보안뉴스를 받아보세요!! 
2021 전망보고서위즈디엔에스 2018파워비즈배너 시작 11월6일 20181105-20200131
설문조사
지난 5일 밤 발생한 카카오톡 장애로 인해 일명 ‘넷플릭스법’에 대한 관심이 다시금 높아지고 있는데요. 통신서비스 품질 유지 의무를 부과하고 있는 기업 가운데 가장 안정적인 서비스를 제공하는 부가통신사업자는 어디라고 생각하시나요?
네이버
카카오
웨이브
넷플릭스
구글
페이스북