역사는 반복되고 보안 취약점은 돌고 돈다

플랫폼별 보안 취약점 사례와 대응 방안

2018-10-22     이승윤 기자

최근 모바일 스마트 플랫폼과 함께 사물 인터넷 환경이 도래하면서 과거 서버와 클라이언트 PC의 네트워크 접속 환경에 많은 변화를 불러 일으켰다. 그 결과로 소프트웨어 이용 범위가 생활 전반으로 확대됐고 주요 침해사고 유발 경로인 소프트웨어 보안 취약점도 나날이 증가하고 있다. 특히 이전에 나타났던 보안 취약점 다시 유행처럼 나타나고 있으며, 이를 활용한 공격 사례가 발생하고 있는 상황이다.

글 아이넷캅 | 유동훈 기술이사

플랫폼 변화에 따라 보안 취약점도 광범위해지고 다양해졌으나 실제 공격자의 입장에서 보면 플랫폼이 달라졌음에도 큰 변화라고 받아들이지는 않을 것 같다. 역사는 반복된다고 했던가? 또 유행은 돌고 돈다고 하지 않았던가? 필자의 사견으로는 보안 취약점 유형도 이와 마찬가지로 유행을 따르고 있다고 생각한다. 그래서 과거부터 현재까지 이슈가 되었던 보안 취약점들에 대해 알아보고 이러한 공격 유형이 정말 유행처럼 반복되고 있는지 확인해보자.

이 글에서는 보안 취약점의 정의와 종류에 대해 다루고 과거 서버 시절부터 시작해 클라이언트 PC 시절을 거쳐 최근 모바일과 사물 인터넷 환경 등의 플랫폼 변화에 따른 보안 취약점 유형과 실제 발생했던 대표적인 공격 사례에 대해서 소개하려고 한다. 나아가 보안 취약점의 발굴 방법과 현황, 보안 취약점 대응 기술에 대해 다룰 예정이다.

여러 의미로 나타나고 있는 보안 취약점 정의

한국정보통신기술협회(TTA) 사전에 따르면 보안 취약점은 위협에 의해 손실이 발생하게 되는 자산의 약점으로 기능 명세, 설계 또는 구현 단계의 오류나 시동, 설치 또는 운용상의 문제점으로 인해 정보 시스템이 지니게 되는 취약성이라고 정의하고 있다. 마이크로소프트 보안연구소(Microsoft Security Response Center, MSRC)의 비공식적인 정의에 따르면 하드웨어, 소프트웨어의 결함이나 체계 설계상의 허점으로 인해 공격자에게 허용된 권한 이상의 동작이나허용된 범위 이상의 정보 열람을 가능하게 하는 약점으로 정의하기도 한다.

이와 같이 보안 취약점은 사전에 명시된 용어의 의미와 보안 커뮤니티에서 사용되는 의미 외에도 굉장히 다양한 의미를 내포하고 있는 함축적인 용어라고 볼 수 있다. 기술 관점에서는 보안 취약점은 시스템 내의 소프트웨어 결함으로 인해 야기되는 보안 결함으로, 시스템이라고 하면 네트워크 교환기부터 항공기 추적 제어 시스템, 인터넷 서버와 웹, 데이터베이스 서버까지 종류가 다양하다. 현재 보안 취약점 정의는 다양하게 나타나고 있지만, 넓은 의미로 소프트웨어 취약점으로 해석하는 것이 가장 적합하다고 판단된다.

서버, 애플리케이션 등 다양한 보안 취약점 종류

과거 보안 취약점은 대부분 유닉스(UNIX) 계열 운영체제의 서버 시스템 취약점부터 유래가 되었다고 볼 수 있고 당시 보안 취약점도현재 개념과 크게 다르지 않았다. 크게 관리적 취약점과 기술적 취약점으로 분류할 수 있었는데, 먼저 관리적 취약점은 대부분 시스템 관리 설정상의 문제로 인해 발생하는 취약점이다. 당시 워크스테이션 서버 계열 운영체제에 영향을 주었던 시스템 관리 문제로 인한 취약점은 90년대 이전부터 중반 이전까지 주로 다뤄졌는데, 약한 패스워드로 인한 계정 크랙(Crack) 도용 취약점, 잘못된 파일과 디렉토리 허가 권한으로 인해 발생하는 취약점, 관리 미흡과 잘못된 설정으로 인한 취약점 등 단순한 관리 문제로 인해 발생하는 결함이 주를 이뤘다.

반면 기술적 취약점은 초기에 파일 링크 결함과 환경 변수 결함, 다중 명령 실행 결함 등 단순한 기술 결함이 주로 다뤄졌으나 90년대 중반 이후부터 애플리케이션 내에서 발생하는 결함의 공격 수준이 고도화돼 현재 다뤄지고 있는 대부분의 소프트웨어 설계 결함의 기초 개념과 공격 기술이 이때 등장하게 되었다.

대표적으로 애플리케이션에서 발생하는 경쟁 조건 오류 문제, 경계영역 오류 문제, 입력 유효성 검증 오류 문제 등으로 경쟁 조건 오류 문제가 가장 먼저 등장하였고 이후 버퍼 오버플로우 결함과 메모리를 변조하는 취약점들이 나타났다. 과거부터 현재까지 소프트웨어 설계 결함을 정리한 자료는 [표 1]과 같다.

플랫폼 변화에 따른 보안 취약점 유형별 공격 사례

보안 취약점 공격 유형은 소프트웨어 생태계나 유행에 굉장히 민감한 편인데 네트워크 접속 환경과 플랫폼 환경, 사용자 환경의 변화는 여러모로 영향을 주고 있다. 과거 주요 공격 대상이 되었던 시스템은 유닉스와 같은 서버 시스템부터 시작되었으며 리눅스로 오면서 다양한 서버 사이드 취약점 공격 방법들이 정립되었고 이후 PC 개념이 확립되면서 개인 PC를 대상으로 삼는 클라이언트 사이드 취약점 공격 유형으로 변화하게 되었다.

공격 유형이 마이크로소프트 윈도우 PC 소프트웨어를 대상으로 집중되면서 서버 사이드 취약점 공격이 감소하는 양상이었으나 최근 모바일 스마트 플랫폼 보급과 사물 인터넷의 등장으로 과거 일부 서버에만 영향을 주었던 취약점 공격 유형들이 다시 증가하고 있다. 이러한 유행은 새롭게 등장하는 공격 위협이 어떤 플랫폼에 영향을 주는지 확인해보면 금방 알 수 있는데 당시 운용 시스템에 영향을 미친 악성코드나 웜 공격 사례 역시 유행을 알 수 있는 척도 중 하나이다. 보다 정확한 내용은 매년 발표되는 CVE 통계를 보면 쉽게 파악할 수 있다.

서버 사이드 취약점 유형과 공격 사례

과거에는 외부 공격자가 원격에 있는 서버를 대상으로 시도할 수 있는 소프트웨어 취약점을 서버 사이드 원격 취약점으로 분류하였다. 이러한 서버 사이드 원격 취약점은 파일 전송 프로토콜(FTP), 웹(HTTP, HTTPS), 메일(SMTP, IMAP, POP), 기타(SMB, RPC, BIND) 서비스를 대상으로 공격하는 취약점으로 네트워크 보안의 강화로 인해 공격이 다소 감소하는 추세였으나 최근에 들어서 사물 인터넷 기기에서 과거와 유사한 취약점이 등장하고 있다. 서버 사이드 취약점은 다양한 악용 사례가 있으나 대표적으로 [표 2]와 같다.

이와 함께 웹 서버를 대상으로 하는 웹 취약점 공격 기술의 발전은 서버 사이드 취약점의 유행을 다시 한 번 발전시키는 계기가 되었다. 공격자는 웹 서비스 내에서 동작하는 다양한 웹 애플리케이션의 취약점을 악용해 서버 내로 침입하는 경로 또한 서버 사이드 원격 취약점 유형으로 정의할 수 있다. 당시 공격 기술은 클라이언트 웹 브라우저의 사용률이 급속하게 증가했던 시기에 함께 유행했으며, 공격자들이 선호하는 침입 경로 중 하나이다.

이렇게 서버 내로 침입한 공격자는 로컬 내의 접근 권한이 명확하게 구분된 운영체제 환경에서 다시 한 번 서버 내부를 공격해 관리자 권한 획득을 시도하는데, 이때 시도되는 취약점을 서버 사이드 로컬 취약점으로 분류할 수 있다. 서버 사이드 로컬 취약점은 주로 권한이 주어진 프로그램에 존재하는 결함을 공격하거나 운영체제 커널을 대상으로 공격하는 다양한 권한 상승 취약점을 포함한다.

클라이언트 사이드 취약점 유형과 사례

초기 클라이언트 사이드 취약점 공격 유형은 서버 사이드 공격 유형과 매우 유사한 형태를 지니고 있었다. 예로 2003년에 윈도 클라이언트 시스템을 감염시켰던 ‘RPC DCOM’ 취약점을 악용하는 블래스터 웜은 2001년 윈도 서버를 감염시켰던 코드레드 웜과 동작 방식이 매우 유사하기 때문이다.

최근까지 발견되고 있는 대부분의 클라이언트 사이드 취약점 공격 유형은 사용자의 상호작용을 필요로 하는 드라이브-바이 다운로드나 드롭퍼 형태를 지닌다. 그 이유는 취약점을 공격하는 대상 소프트웨어 유형이 변경되었기 때문으로 볼 수 있는데, 과거의 경우 클라이언트 사이드 취약점 공격은 주로 기본 실행되는 데몬 서비스나 시작 서비스에 존재했던 결함을 악용했다.

최근 클라이언트 사이드 취약점은 웹 브라우저나 파일 뷰어(문서와 이미지) 등 사용자가 주로 사용하는 어플리케이션의 결함을 악용해 동작하기 때문이다. 이는 네트워크 보안 강화로 인해 서버 사이드 취약점 공격으로 침입할 수 있는 기회가 줄어들면서 영향을 받은 것도 있지만, 그만큼 침입자 관점에서 공격이 쉬우면서 권한 획득에 용이한 클라이언트 소프트웨어를 대상으로 삼은 것이라 볼 수 있다.

[표3]과 같이 서버 사이드 공격 유형과 유사했던 초기 클라이언트 사이드 취약점 유형의 공격 사례는 2004년 이전까지 등장했는데 스카이라인(Skylined)의 공격 기술 등장 이후부터는 사용자 상호작용을 필요로 하는 클라이언트 사이드 취약점 공격 유형이 유행하게 됐다.

모바일과 사물 인터넷 사이드 취약점 유형과 사례

최근에는 서버와 클라이언트 사이드로 구분 지을 수 있는 네트워크 접속 유형이 아닌 다양한 접속 경로를 가지고 있는 모바일 기기와 사물 인터넷 환경에서 발생하는 취약점 유형이 대표적이다. 가령 모바일 기기와 일부 스마트 플랫폼 기기의 경우 웹 브라우저나 문서 열람등의 사용자 상호 작용을 필요로 하는 클라이언트 사이드 취약점 유형과 원격에서 자동으로 감염이 이루어질 수 있는 서버 사이드 취약점 유형을 모두 포함하고 있다. 공격자가 원격으로 기기 내부 침입 이후 악의적인 행위 실행과 악성 앱 설치를 위해 기기의 관리자 권한을 얻는 루팅 또는 탈옥 행위를 수행하므로 과거 서버 사이드 로컬 취약점 공격 유형과 매우 유사하다고 볼 수 있다.

또한, 일부 사물 인터넷 기기의 경우 잘못된 계정 인증 체계나 보안에 취약한 관리 인터페이스 설계로 인해 사용자의 상호작용 없이도 과거 서버 사이드 취약점 유형과 유사한 방식으로 공격이 가능하다. 특히 외부 접속이 허용된 관리 웹 인터페이스에 존재하는 서버 사이드 웹 취약점 유형은 발굴 난이도가 낮으면서 침입 성공 가능성이 높기 때문에 큰 위협이 되고 있다.

실제 취약점 악용 사례로는 모바일 기기의 경우 이미 웹 브라우저나 동영상 파일 포맷을 통한 공격 가능성이 증명된 상태인데 10년간 발굴된 취약점 2000가지 중 [표 4]와 같이 세 가지 사례가 대표적이다. 최근까지 다양한 위협에도 불구하고 모바일 기기 대상 웜공격이 등장한 사례는 전무하나 사물 인터넷 환경의 경우 몇 개의 기기를 대상으로 악성코드를 감염시키는 미라이 봇넷 사례가 존재한다.