인텔, 차세대 프로세서에 악성코드 방어 기능 심는다

'리턴 어드레스 공격' 방어책 타이거레이크부터 탑재

홈&모바일입력 :2020/06/18 17:22

인텔이 조만간 출시될 모바일(노트북)용 프로세서인 타이거레이크(Tiger Lake)에 백신이나 보안 소프트웨어 없이 자체적으로 작동하는 악성코드 방어 기능을 탑재한다.

인텔이 타이거레이크 프로세서에 악성코드를 막는 기술을 투입한다. (사진=지디넷코리아)

이 기능은 악성코드가 메모리의 일부 내용을 변조해도 이를 감지하고 프로그램 실행을 중단시킨다. 인텔은 이 기능에 CET(제어-흐름 강화 기술)라는 이름을 붙였다.

현재 마이크로소프트가 윈도10 참가자 프로그램용 버전에 CET 지원 기능을 탑재했다. 인텔 역시 타이거레이크를 시작으로 향후 출시하는 프로세서에 CET를 확대 적용할 예정이다.

■ 명령어·데이터 담기는 메모리 영역 분리

컴퓨터에서 실행되는 프로그램은 SSD나 HDD에서 메모리로, 그리고 다시 메모리에서 프로세서 내부로 옮겨지며 실행된다. 프로세서는 한 번에 데이터를 32비트, 혹은 64비트씩 빠른 속도로 읽어들이며 명령어에 따라 각종 동작을 처리한다.

예전에는 명령어가 담기는 메모리 영역과 데이터가 담기는 메모리 영역이 엄격하게 구분되지 않았다. 이 때문에 메모리에 엉뚱한 명령어를 몰래 심은 다음 실행하게 만드는 공격 방법이 흔히 쓰였다.

현재 모든 운영체제는 데이터와 명령어 영역을 분리하는 방식으로 보안을 강화했다. (자료=지디넷코리아)

그러나 이 방법은 실행되는 명령어와 데이터가 저장되는 메모리 영역을 엄격하게 분리하면서 효력을 잃었다. 인텔과 AMD 등이 2004년에서 2005년을 전후해 해당 기능을 프로세서에 탑재했고 현재 출시되는 모든 프로세서와 운영체제 역시 이 기능을 지원한다.

■ 스택을 악용한 공격 방법 등장

그러자 공격자들은 다른 방법을 찾아냈다. 바로 컴퓨터의 데이터 저장 구조인 스택(Stack)을 활용(또는 악용)하는 것이다.

현대 실행되는 모든 프로그램들은 처음부터 끝까지 한 덩어리로 구성되지 않는다. 각 기능을 '함수'(Function)라는 단위로 잘게 쪼갠 다음 같은 프로그램 안에서, 혹은 다른 프로그램에서 서로를 불러내며(Call) 실행된다.

간략화한 스택 개요도. (자료=지디넷코리아)

이렇게 불러낸 프로그램들은 자기 할 일을 마치면 종료(Return)되면서 원래 자신을 불러냈던 프로그램으로 다시 돌아간다. 이렇게 프로그램이 서로를 불러내며 실행되는 데이터가 메모리에 쌓이는 것이 바로 '스택'이다.

■ 원래 프로그램 대신 악성코드 실행

스택을 공격해 악성코드가 실행되는 ROP 공격의 개요도. (자료=지디넷코리아)

스택은 프로그램이 실행되면서 계속해서 메모리에 쌓이며 한 함수가 실행을 마칠 때마다 비워진다. 그리고 실행이 끝나면 원래 실행하던 동작으로 돌아가기 위해 읽어야 하는 명령어가 담긴 메모리 주소로 다시 돌아간다.

악성코드를 조금씩 나누어 동작시키는 것도 가능하다. (자료=마이크로소프트)

그런데 현재 발견되는 대부분의 악성코드는 함수가 실행을 마칠 때 읽어 들어야 하는 메모리 주소값을 바꿔치는 방법을 이용한다. 명령어가 저장된 메모리 주소값을 원래 프로그램 대신 악성코드가 저장된 곳으로 바꿔 엉뚱한 프로그램을 실행하게 하는 것이다.

보안업체 트렌드마이크로가 집계한 바에 따르면 지난해부터 현재까지 발견된 총 1천 개 이상의 보안 문제 중 63.2%가 메모리를 공격하는 방식으로 작동한다.

■ 인텔이 개발한 CET란?

인텔이 타이거레이크부터 탑재하기로 한 제어-흐름 강화 기술(CET)은 다음과 같이 작동한다.

인텔 CET 기술 개요도. (자료=인텔)

먼저 프로세서 안에는 스택에서 원래 돌아갈 때 참조해야 할 주소값이 차례대로 저장된다. 인텔은 이 저장장치에 '그림자 스택'(Shadow Stack)이라는 이름을 붙였다.

그리고 프로세서는 스택에 저장된 프로그램이 종료될 때 메모리에 저장된 주소값과 그림자 스택에 저장된 주소값을 서로 비교한다.

두 주소값이 같다면 문제가 되지 않지만 서로 다른 경우에는 문제가 생긴 것으로 판단하고 운영체제에 알린다. 프로세서의 오류값을 감지한 운영체제는 프로그램의 실행을 강제로 중단시켜 악성코드가 계속해서 실행되는 것을 막는다.

■ 인텔 "데스크톱 PC·서버 등에 확대 적용 예정"

CET를 활용하려면 프로세서 뿐만 아니라 이를 구동하는 운영체제의 지원이 필수적이다. CET를 이용하기 위해 인텔이 프로세서에 추가한 명령어를 운영체제 차원에서 활용해야 하기 때문이다.

관련기사

인텔은 타이거레이크를 시작으로 다른 프로세서에 CET를 확대할 예정이다. (사진=인텔)

인텔은 이미 지난 2016년 CET를 구현하기 위한 사양을 공개한 바 있다. 마이크로소프트는 이 기술에 '하드웨어 지원 스택 보호'라는 이름을 붙이고 윈도10 참가자 프로그램용으로 배포되는 버전에 적용했다. 서버 등에 주로 쓰이는 리눅스 역시 CET를 지원할 전망이다.

인텔코리아 관계자는 "CET는 타이거레이크 뿐만 아니라 데스크톱 PC·서버용 프로세서 등으로 확대 적용될 예정"이라고 설명했다.