2020.07.16

권한 상승이 공격자에게 중요한 취약점인 이유

Lucian Constantin | CSO
공격자는 권한 상승(Privilege Escalation) 결함을 사용해 시스템과 애플리케이션에 대한 액세스 권한을 획득한다. 이를 막는 방법은 패치 적용과 모니터링이다. 
 
ⓒ Getty Images Bank


권한 상승에 대한 정의

권한 상승 취약점은 사용자가 관리자가 의도한 정도보다 더 많은 권한, 시스템이나 애플리케이션에 대한 더 높은 액세스 권한을 획득할 수 있는 보안 문제이다. 완전한 익스플로잇(취약점 공격) 체인을 만드는 데 필요하지만, SS(Severity Score, 중증도나 중대성 점수)가 낮아 개발자나 방어자가 간과하는 경우가 많기 때문에 공격자에게 가치가 있는 취약점이 된다.

일반적으로 보안 경계를 침해하는 것을 권한 상승으로 간주한다. 운영 체제의 사용자 애플리케이션에서 커널 액세스 권한을 획득하는 것, 가상 머신을 벗어나 기반 하이퍼바이저에 대한 액세스 권한을 획득하는 것, 워크스테이션에서 도메인 관리자 액세스 권한을 획득하는 것, 잘못된 구성 취약점을 공격해 퍼블릭 클라우드에서 상승된 권한을 획득하는 것을 예로 들 수 있다.


권한 상승 취약점이 위험한 이유

보안 커뮤니티는 RCE(Remote code execution, 원격 코드 실행) 같이 원격 취약점 공격이 가능한 경우를 중심으로 임의의 코드 실행을 초래할 수 있는 취약점에 초점을 맞춘다. 이런 취약점의 SS 점수가 가장 높은 경향이 있다. 그러나 부분적으로는 역사적인 이유도 있다. 방어자는 전통적으로 공격자들이 시스템에 대한 액세스 권한을 획득하지 못하도록 방지하는 부분에 초점을 맞춰왔다.

앞으로도 계속 중요할 부분이지만, 지금의 위협 지형에서는 해커들이 RCE 취약점 공격에 국한되지 않고, 다른 수많은 방법으로 시스템에 액세스할 수 있다. 공격자들이 네트워크에 침입하기 위해 가장 많이 이용하는 방법 중 하나는 여전히 악성 파일을 첨부한 피싱 이메일이며, 취약하거나 훔친 크리덴셜(자격 증명)을 이용하는 방법도 많이 사용한다.
 
기술적인 수단으로는 통제가 어려운 사람의 행동으로 인해 최근 몇 년간 방어 측면의 초점이 위협 방지에서 위협 탐지 및 억제로 이동하고 있다. 방어는 여전히 중요하다. 그러나 공격자가 이런 저런 방법을 사용해 시스템에 대한 액세스 권한을 획득할 수 있는 부분을 대상으로 보안 계획을 수립해 적용하고 있다. 이런 이유로 기업 보안에서는 승인되지 않은 액세스를 방지하는 것만큼 승인되지 않은 액세스가 초래하는 영향을 제한하는 역량이 중요하다.

운영체제와 애플리케이션 개발자들은 특정 종류의 메모리 손상 취약점에 대한 공격을 방지하는 것, 이런 공격이 발생했을 때 피해를 제한하는 것에서 큰 발전을 일궈냈다. 지난 10년 간 최소 권한 원칙(least-privilege principles), 제로 트러스트 네트워크 아키텍처(zero-trust network architectures), 애플리케이션 샌드박싱(application sandboxing), 커널 메모리 영역 분리, 가상화 및 컨테이너화, 모놀리식(monolithic) 애플리케이션을 마이크로서비스(microservices)로 분리하는 기법, 기타 기법에 대한 이야기가 많았던 이유가 여기에 있다.

최근에는 기반 시스템의 완전한 침해로 이어질 수 있는 애플리케이션의 RCE 취약점을 찾기 힘들다. 최근의 공격에는 임의 코드 실행에 필요한 메모리 안전성 관련 버그, ASLR 같이 메모리 랜덤화 방어 체계에 대한 정보, 완전한 시스템 액세스를 위한 권한 상승 문제점 등 여러 취약점을 결합하는 익스플로잇 체인이 요구된다. 이런 이유 때문에 현대적인 애플리케이션과 운영체제 공격에 권한 상승 취약점이 아주 중요한 역할을 하며, 공격자들은 여기에 많은 돈을 지불할 의지를 갖고 있다.

취약점 매입 플랫폼인 제로디움(Zerodium)은 바이러스 백신 로컬 권한 상승, 윈도우 권한 상승, VM웨어 가상 머신 회피에 각각 1만 달러, 8만 달러, 20만 달러를 제공하고 있다. 

더 중요한 것은 프로세스가 샌드박스로 처리되는 브라우저 및 모바일 운영체제와 같이 업체에서 구매하는 많은 애플리케이션에 대한 공격 체인의 많은 부분에서 권한 상승과 결합된 RCE가 필요하다. 예를 들어, 크롬 RCE + LPE(Local Privilege Escalation) 체인은 최대 50만 달러이며, 왓츠앱(WhatsApp) REC + LPE 체인은 150만 달러다.


권한 상승 취약점은 얼마나 많을까?

운영체제의 권한 상승 취약점 공격 표면은 아주 크다. 시스템 권한으로 실행되면서 API를 통해 사용자 영역 애플리케이션에 기능성을 노출하는 운영체제 서비스, 드라이버, 기타 기술들이 많다. 이런 기능에 대한 액세스를 적절히 관리 및 제한하지 않을 경우, 공격자는 이를 악용해 관리자 권한 작업을 수행할 수 있다.

보안업체인 사이버아크(CyberArk)의 연구진은 최근 중앙에서 액티브 디렉터리(Active Directory) 환경의 윈도우 컴퓨터와 사용자의 설정을 관리하는 메커니즘인 윈도우 그룹 정책에서 권한 상승 취약점을 발견했다. 

이 취약점은 12년 전에 출시된 윈도우 서버 2008 이후의 모든 윈도우 버전에 영향을 줬으며, 정책 업데이트 루틴에서 액세스 확인이 부적절한 결과로 발생한 취약점이었다. 사이버아크는 1년 동안의 연구 및 조사 프로젝트를 진행하면서, 여러 공급업체의 여러 제품에서 60개가 넘는 권한 상승 취약점을 발견했다.

많은 권한 상승 취약점은 코드 버그가 아닌 논리나 디자인 취약점 범주로 분류된다. 코드 취약점은 개발자가 보안 프로그래밍 방식을 도입해 방지할 수 있지만, 논리 결함은 합법적인 기능에 담겨있는 보안의 영향력을 제대로 고려하지 않은 것이기 때문에 수정하는 것이 버그 해결보다 훨씬 더 어렵다. 이를 해결하려면 시프트-레프트(shift-left) 사고방식이 필요한데, 시프트-레프트는 보안 구현을 개발 초기 단계로 거슬러 올라가는 것을 의미한다. 

ENISA(European Union Agency for Cybersecurity)가 최근 발표한 ‘취약점 현황 보고서’에 따르면, 승인, 특권, 액세스 관리와 관련한 결함은 가장 흔한 취약점의 원인 가운데 6번째였으며, SS 점수로는 4번째였다. MITRE의 ATT&CK 프레임워크를 기반으로 한 공격자 기법에서 권한 상승은 지속적(persistence) 공격, 방어 체계 회피(defense evasion)에 이어 3번째로 많이 사용하는 기법이었다. 

마이크로소프트의 매월 보안 업데이트에는 서비스와 시스템 드라이버에서 발견된 권한 상승 취약점에 대한 패치가 포함되는 경우가 많지만, 하드웨어 구성요소 제조업체가 만든 서드파티 드라이버에도 유사한 문제점이 존재한다.

지난 해, 보안업체인 에클립시움(Eclypsium)의 연구진은 20여 하드웨어 공급업체가 만든 40개 윈도우 드라이버에서 취약점과 디자인 결함을 발견했다. 또한 최근에는 금융 분야에서 사용되는 장치 제조업체인 디볼드 닉스도프(Diebold Nixdorf)가 만든 ATM과 POS 장치에서 많이 이용되는 드라이버의 취약점을 공개했다. 그러면서 수명이 길고 업데이트가 힘든 이런 장치에 존재하는 취약점이 가져올 위험을 강조했다. 지난 몇 년간 리눅스 커널과 다른 리눅스 유틸리티에서도 상당히 중대한 권한 상승 취약점이 발견됐다. 이 문제가 윈도우 생태계에만 국한된 문제가 아니라는 이야기이다.

에클립시움의 수석 연구원인 제시 마이클은 “대부분은 구현상의 취약점이 아닌 아키텍처 취약점이다. 개발자는 아키텍처 자체나 디자인이 어떤 방식으로 잘못 사용될 수 있는지 이해하지 못해, 근본적으로 안전하지 못한 아키텍처를 구축하고 있다. 기술적으로 봤을 때, 결과물인 코드에는 취약점이 없고, 의도한 기능을 수행한다. 특정 애플리케이션이 아닌 모든 애플리케이션에서 이런 방식을 취한다”라고 지적했다.

권한 상승의 또 다른 큰 공격 표면은 DLL 하이재킹(Hijacking), DLL 프리로딩(Preloading)이다. 이는 자격있는 경로를 지정하지 않은 상태에서 DLL(Dynamic Link Libraries)를 로딩하려 시도하는 애플리케이션을 일컫는다. 이 경우, 윈도우는 특정한 순서로 다양하게 사전 정의된 위치에서 이런 DLL을 자동 검색한다. 공격자가 적법한 DLL에 앞서 올바른 이름으로 해당 위치에 악성 DLL을 위치시키면, 애플리케이션은 적법한 DLL 대신 악성 DLL을 로딩한다. 이런 애플리케이션이나 서비스가 상승된 권한으로 실행이 되면, 악성코드가 권한을 승계한다.

많은 경우, ‘애플리케이션 기능성을 확장하는 경우에 DLL을 검색해 로딩’ 같은 조건 아래 DLL이 로딩된다. 애플리케이션 플러그인과 외부 모듈에서 이런 조건 아래 DLL이 로딩되는 사례가 많다. 기본적으로 검색한 DLL이 존재하지 않을 경우, 공격자는 자신이 액세스할 수 있는 검색 경로에 악성 DLL을 위치시킬 수 있다. 마이크로소프트는 개발자에게 이런 문제점 중 일부를 방지할 수 있는 가이드라인을 제공하고 있지만, 여전히 이런 DLL 하이재킹 공격이 많이 발생하고 있다.

사이버아크 레드 팀 서비스 책임자인 셰이 나하리는 “매일 수많은 공격을 확인하고 있다. 마이크로소프트가 솔루션을 제공하고 있지만, 라이브러리를 로딩할 때마다 위치를 지정하기란 아주 어려운 일이다. 제대로 이렇게 하는 경우에도 자신의 통제 범위를 벗어나는 문제들이 있다”라고 말했다. 

이는 기본적으로 윈도우 프로그램이 작동하는 방식이다. 이런 이유로 DLL 하이재킹이 많다. 현재 가장 많이 발생하는 권한 상승 공격이라고 말할 수 있다.


권한 상승의 종류

권한 상승 문제는 임의 코드 실행처럼 공격자에게 가용한 액세스 권한의 종류에 따라 로컬, 또는 원격 문제가 될 수 있다.

공격자가 권한이 낮은 사용자로부터 애플리케이션에 대한 관리자 액세스 권한을 획득하는 애플리케이션 레벨에서, 공격자가 제약이 있는 사용자 계정에서 커널이나 시스템 수준의 액세스 권한을 획득하는 운영체제 레벨에서, 또는 공격자가 윈도우 액티브 디렉터리 네트워크의 도메인 관리자 권한을 획득하는 도메인 레벨에서 이런 문제가 발생할 수 있다. 심지어 로컬 네트워크부터 클라우드까지 네트워크 경계 전반에 걸쳐 이런 문제가 발생할 수 있다.

통상적으로 운영체제 레벨 권한 상승에 초점이 맞춰지는 경우가 많다. 그러나 공격자가 네트워크 내부에서 이동을 해서 도메인 액세스 권한을 획득할 수 있는 액세스 제어 문제도 자주 발생하는 익스플로잇 공격이다. 

필요한 것보다 더 높은 권한으로 애플리케이션이나 가상화 서버를 실행할 수 있게끔 하는 클라우드 인프라의 구성 오류도 자주 공격에 사용된다. 나하리는 “도메인 수준에서 가장 많이 발생하고, 쉽게 도메인 관리자 권한을 획득할 수 있는 권한 상승 취약점이 존재하는 부분은 서비스 계정이다”라고 말했다.

액티브 디렉토리 네트워크에서 사용자는 액세스 권한이 없어도 도메인의 모든 리소스에 대한 서비스 티켓(service tickets)을 요청할 수 있다. 서비스 티켓은 사용자 또는 서비스 계정의 비밀번호와 함께 암호화되므로 기술적으로는 무단 사용자가 직접 사용할 수 없다. 그러나 계정이 차단될 위험없이 무차별 대입(brute-force) 기술로 오프라인에서 해킹할 수 있다. 

나하리는 “대기업에서는 이런 서비스 계정이 아주 많다. 그리고 모든 사용자가 이런 계정에 대해 서비스 티켓을 요청하고, 오프라인에서 크랙을 시도할 수 있다. 최소 1~2개는 크랙이 가능하다. 짧은 시간에 도메인 권한을 획득할 수 있게 된다는 의미이다. 새로운 형태의 공격은 아니지만, 거의 모든 조직에서 발생하는 공격이다. 또한 아주 효율적인 공격이다”라고 설명했다.

클라우드 레벨에서 권한 상승의 가장 일반적인 원인은 IAM(Identity and Access Management)이 사용 범위를 지나치게 넓게 허용한다는 것이다. 클라우드 공급업체에 관계없이 클라우드에 프로비저닝된 박스의 사용자는 해당 박스를 프로비저닝한 IAM의 자격 증명이 포함된 메타데이터 URL을 요청할 수 있다. 

나하리에 따르면, 기본적으로 이렇게 디자인되어 있다. 서버 프로비저닝에 이용된 IAM 역할 10개 중 8개는 아주 강력하며, 조직의 전체 클라우드 인프라에 대한 액세스 권한을 제공할 수도 있다. 이 문제는 IAM 역할을 적합하게 사용해야 한다는 클라우드 공급업체의 경고에도 불구하고 관리자가 가장 쉬운 방법을 선택한 클라우드 서비스의 자동화가 원인인 경우가 많다.

공격자가 로컬 머신 내부에서 요청 작업을 수행할 수 있는 단순한 웹 애플리케이션 취약점이 전체 클라우드 인프라에 침해를 초래할 수 있다. 이는 IAM 역할을 부적절하게 사용한 결과다.

또한, 권한 상승 문제를 수직, 수평 문제로 분류할 수도 있다. 수직 권한 상승이란 공격자가 이미 액세스 권한을 획득한 계정에 부여된 권한보다 더 많은 권한을 획득하는 것을 가리킨다. 관리자 계정 등 상승된 권한을 가진 계정에 대한 액세스 권한을 획득하는 것을 의미한다. 수평 권한 상승이란 동일한 권한을 가진 다른 사용자의 리소스에 대한 액세스 권한을 획득하는 것을 가리킨다.


권한 상승 공격을 방어하는 방법

운영체제 레벨 권한 상승 취약점의 경우, 가능한 빨리 운영체제는 물론 여기에서 사용되는 모든 서드파티 애플리케이션에 대한 보안 패치를 설치하는 것이 아주 중요하다.

애플리케이션 화이트리스팅 기술을 사용, 시스템에서 실행될 프로그램을 제한해 머신의 공격 표면을 줄일 수도 있다. 불필요한 서비스를 꺼야 한다. 또한, 이용하지 않는 하드웨어 구성요소와 드라이버를 비활성화 시키는 것도 중요하다.

나하리는 상승된 권한을 가진 액세스 모니터링에 초점을 맞춰야 한다고 강조했다. 방법이나 방식과 상관없이, 네트워크에서 최소 1개 머신에서 무단으로 코드가 실행되고 있다고 가정하는 보안 모델을 활용해야 한다. 나하리는 “사용자가 장치에서 무언가를 실행할 때마다 이를 계속 감시하기란 아주 어렵다. 그러나 도메인에서 상승된 권한을 가진 액세스를 모니터링하는 것은 이보다 쉽다. 개인적으로 기업들이 탐지와 방지 노력을 줄일 수 있는 좋은 기회라고 생각한다”라고 말했다.
 
사이버아크는 DLL 하이재킹을 탐지하고, 액티브 디렉토리 환경의 섀도우 관리자 권한을 찾고, 비밀 및 애플리케이션 ID를 관리하고, 쿠버네티스 클러스터에서 위험한 권한을 스캔하는 등의 기능을 제공하는 다양한 오픈소스 도구들을 공급하고 있다. 클라우드에서 IAM 역할 등 안전하지 못한 구성을 찾아주는 무료 도구, 상용 제품들도 있다.

기업은 ‘최소 권한’ 원칙에 따라 네트워크와 클라우드 인프라를 설계한 후, 정기적으로 외부 보안 업체를 채용해 권한 상승 취약점에 초점을 맞춘 침입 테스트를 실시해야 한다. 대부분의 자동화 공격은 여러 취약점을 결합한 익스플로잇 체인을 이용하기 때문에, 이 체인의 연결고리 하나를 없애면 공격을 막을 수 있다. editor@itworld.co.kr 


2020.07.16

권한 상승이 공격자에게 중요한 취약점인 이유

Lucian Constantin | CSO
공격자는 권한 상승(Privilege Escalation) 결함을 사용해 시스템과 애플리케이션에 대한 액세스 권한을 획득한다. 이를 막는 방법은 패치 적용과 모니터링이다. 
 
ⓒ Getty Images Bank


권한 상승에 대한 정의

권한 상승 취약점은 사용자가 관리자가 의도한 정도보다 더 많은 권한, 시스템이나 애플리케이션에 대한 더 높은 액세스 권한을 획득할 수 있는 보안 문제이다. 완전한 익스플로잇(취약점 공격) 체인을 만드는 데 필요하지만, SS(Severity Score, 중증도나 중대성 점수)가 낮아 개발자나 방어자가 간과하는 경우가 많기 때문에 공격자에게 가치가 있는 취약점이 된다.

일반적으로 보안 경계를 침해하는 것을 권한 상승으로 간주한다. 운영 체제의 사용자 애플리케이션에서 커널 액세스 권한을 획득하는 것, 가상 머신을 벗어나 기반 하이퍼바이저에 대한 액세스 권한을 획득하는 것, 워크스테이션에서 도메인 관리자 액세스 권한을 획득하는 것, 잘못된 구성 취약점을 공격해 퍼블릭 클라우드에서 상승된 권한을 획득하는 것을 예로 들 수 있다.


권한 상승 취약점이 위험한 이유

보안 커뮤니티는 RCE(Remote code execution, 원격 코드 실행) 같이 원격 취약점 공격이 가능한 경우를 중심으로 임의의 코드 실행을 초래할 수 있는 취약점에 초점을 맞춘다. 이런 취약점의 SS 점수가 가장 높은 경향이 있다. 그러나 부분적으로는 역사적인 이유도 있다. 방어자는 전통적으로 공격자들이 시스템에 대한 액세스 권한을 획득하지 못하도록 방지하는 부분에 초점을 맞춰왔다.

앞으로도 계속 중요할 부분이지만, 지금의 위협 지형에서는 해커들이 RCE 취약점 공격에 국한되지 않고, 다른 수많은 방법으로 시스템에 액세스할 수 있다. 공격자들이 네트워크에 침입하기 위해 가장 많이 이용하는 방법 중 하나는 여전히 악성 파일을 첨부한 피싱 이메일이며, 취약하거나 훔친 크리덴셜(자격 증명)을 이용하는 방법도 많이 사용한다.
 
기술적인 수단으로는 통제가 어려운 사람의 행동으로 인해 최근 몇 년간 방어 측면의 초점이 위협 방지에서 위협 탐지 및 억제로 이동하고 있다. 방어는 여전히 중요하다. 그러나 공격자가 이런 저런 방법을 사용해 시스템에 대한 액세스 권한을 획득할 수 있는 부분을 대상으로 보안 계획을 수립해 적용하고 있다. 이런 이유로 기업 보안에서는 승인되지 않은 액세스를 방지하는 것만큼 승인되지 않은 액세스가 초래하는 영향을 제한하는 역량이 중요하다.

운영체제와 애플리케이션 개발자들은 특정 종류의 메모리 손상 취약점에 대한 공격을 방지하는 것, 이런 공격이 발생했을 때 피해를 제한하는 것에서 큰 발전을 일궈냈다. 지난 10년 간 최소 권한 원칙(least-privilege principles), 제로 트러스트 네트워크 아키텍처(zero-trust network architectures), 애플리케이션 샌드박싱(application sandboxing), 커널 메모리 영역 분리, 가상화 및 컨테이너화, 모놀리식(monolithic) 애플리케이션을 마이크로서비스(microservices)로 분리하는 기법, 기타 기법에 대한 이야기가 많았던 이유가 여기에 있다.

최근에는 기반 시스템의 완전한 침해로 이어질 수 있는 애플리케이션의 RCE 취약점을 찾기 힘들다. 최근의 공격에는 임의 코드 실행에 필요한 메모리 안전성 관련 버그, ASLR 같이 메모리 랜덤화 방어 체계에 대한 정보, 완전한 시스템 액세스를 위한 권한 상승 문제점 등 여러 취약점을 결합하는 익스플로잇 체인이 요구된다. 이런 이유 때문에 현대적인 애플리케이션과 운영체제 공격에 권한 상승 취약점이 아주 중요한 역할을 하며, 공격자들은 여기에 많은 돈을 지불할 의지를 갖고 있다.

취약점 매입 플랫폼인 제로디움(Zerodium)은 바이러스 백신 로컬 권한 상승, 윈도우 권한 상승, VM웨어 가상 머신 회피에 각각 1만 달러, 8만 달러, 20만 달러를 제공하고 있다. 

더 중요한 것은 프로세스가 샌드박스로 처리되는 브라우저 및 모바일 운영체제와 같이 업체에서 구매하는 많은 애플리케이션에 대한 공격 체인의 많은 부분에서 권한 상승과 결합된 RCE가 필요하다. 예를 들어, 크롬 RCE + LPE(Local Privilege Escalation) 체인은 최대 50만 달러이며, 왓츠앱(WhatsApp) REC + LPE 체인은 150만 달러다.


권한 상승 취약점은 얼마나 많을까?

운영체제의 권한 상승 취약점 공격 표면은 아주 크다. 시스템 권한으로 실행되면서 API를 통해 사용자 영역 애플리케이션에 기능성을 노출하는 운영체제 서비스, 드라이버, 기타 기술들이 많다. 이런 기능에 대한 액세스를 적절히 관리 및 제한하지 않을 경우, 공격자는 이를 악용해 관리자 권한 작업을 수행할 수 있다.

보안업체인 사이버아크(CyberArk)의 연구진은 최근 중앙에서 액티브 디렉터리(Active Directory) 환경의 윈도우 컴퓨터와 사용자의 설정을 관리하는 메커니즘인 윈도우 그룹 정책에서 권한 상승 취약점을 발견했다. 

이 취약점은 12년 전에 출시된 윈도우 서버 2008 이후의 모든 윈도우 버전에 영향을 줬으며, 정책 업데이트 루틴에서 액세스 확인이 부적절한 결과로 발생한 취약점이었다. 사이버아크는 1년 동안의 연구 및 조사 프로젝트를 진행하면서, 여러 공급업체의 여러 제품에서 60개가 넘는 권한 상승 취약점을 발견했다.

많은 권한 상승 취약점은 코드 버그가 아닌 논리나 디자인 취약점 범주로 분류된다. 코드 취약점은 개발자가 보안 프로그래밍 방식을 도입해 방지할 수 있지만, 논리 결함은 합법적인 기능에 담겨있는 보안의 영향력을 제대로 고려하지 않은 것이기 때문에 수정하는 것이 버그 해결보다 훨씬 더 어렵다. 이를 해결하려면 시프트-레프트(shift-left) 사고방식이 필요한데, 시프트-레프트는 보안 구현을 개발 초기 단계로 거슬러 올라가는 것을 의미한다. 

ENISA(European Union Agency for Cybersecurity)가 최근 발표한 ‘취약점 현황 보고서’에 따르면, 승인, 특권, 액세스 관리와 관련한 결함은 가장 흔한 취약점의 원인 가운데 6번째였으며, SS 점수로는 4번째였다. MITRE의 ATT&CK 프레임워크를 기반으로 한 공격자 기법에서 권한 상승은 지속적(persistence) 공격, 방어 체계 회피(defense evasion)에 이어 3번째로 많이 사용하는 기법이었다. 

마이크로소프트의 매월 보안 업데이트에는 서비스와 시스템 드라이버에서 발견된 권한 상승 취약점에 대한 패치가 포함되는 경우가 많지만, 하드웨어 구성요소 제조업체가 만든 서드파티 드라이버에도 유사한 문제점이 존재한다.

지난 해, 보안업체인 에클립시움(Eclypsium)의 연구진은 20여 하드웨어 공급업체가 만든 40개 윈도우 드라이버에서 취약점과 디자인 결함을 발견했다. 또한 최근에는 금융 분야에서 사용되는 장치 제조업체인 디볼드 닉스도프(Diebold Nixdorf)가 만든 ATM과 POS 장치에서 많이 이용되는 드라이버의 취약점을 공개했다. 그러면서 수명이 길고 업데이트가 힘든 이런 장치에 존재하는 취약점이 가져올 위험을 강조했다. 지난 몇 년간 리눅스 커널과 다른 리눅스 유틸리티에서도 상당히 중대한 권한 상승 취약점이 발견됐다. 이 문제가 윈도우 생태계에만 국한된 문제가 아니라는 이야기이다.

에클립시움의 수석 연구원인 제시 마이클은 “대부분은 구현상의 취약점이 아닌 아키텍처 취약점이다. 개발자는 아키텍처 자체나 디자인이 어떤 방식으로 잘못 사용될 수 있는지 이해하지 못해, 근본적으로 안전하지 못한 아키텍처를 구축하고 있다. 기술적으로 봤을 때, 결과물인 코드에는 취약점이 없고, 의도한 기능을 수행한다. 특정 애플리케이션이 아닌 모든 애플리케이션에서 이런 방식을 취한다”라고 지적했다.

권한 상승의 또 다른 큰 공격 표면은 DLL 하이재킹(Hijacking), DLL 프리로딩(Preloading)이다. 이는 자격있는 경로를 지정하지 않은 상태에서 DLL(Dynamic Link Libraries)를 로딩하려 시도하는 애플리케이션을 일컫는다. 이 경우, 윈도우는 특정한 순서로 다양하게 사전 정의된 위치에서 이런 DLL을 자동 검색한다. 공격자가 적법한 DLL에 앞서 올바른 이름으로 해당 위치에 악성 DLL을 위치시키면, 애플리케이션은 적법한 DLL 대신 악성 DLL을 로딩한다. 이런 애플리케이션이나 서비스가 상승된 권한으로 실행이 되면, 악성코드가 권한을 승계한다.

많은 경우, ‘애플리케이션 기능성을 확장하는 경우에 DLL을 검색해 로딩’ 같은 조건 아래 DLL이 로딩된다. 애플리케이션 플러그인과 외부 모듈에서 이런 조건 아래 DLL이 로딩되는 사례가 많다. 기본적으로 검색한 DLL이 존재하지 않을 경우, 공격자는 자신이 액세스할 수 있는 검색 경로에 악성 DLL을 위치시킬 수 있다. 마이크로소프트는 개발자에게 이런 문제점 중 일부를 방지할 수 있는 가이드라인을 제공하고 있지만, 여전히 이런 DLL 하이재킹 공격이 많이 발생하고 있다.

사이버아크 레드 팀 서비스 책임자인 셰이 나하리는 “매일 수많은 공격을 확인하고 있다. 마이크로소프트가 솔루션을 제공하고 있지만, 라이브러리를 로딩할 때마다 위치를 지정하기란 아주 어려운 일이다. 제대로 이렇게 하는 경우에도 자신의 통제 범위를 벗어나는 문제들이 있다”라고 말했다. 

이는 기본적으로 윈도우 프로그램이 작동하는 방식이다. 이런 이유로 DLL 하이재킹이 많다. 현재 가장 많이 발생하는 권한 상승 공격이라고 말할 수 있다.


권한 상승의 종류

권한 상승 문제는 임의 코드 실행처럼 공격자에게 가용한 액세스 권한의 종류에 따라 로컬, 또는 원격 문제가 될 수 있다.

공격자가 권한이 낮은 사용자로부터 애플리케이션에 대한 관리자 액세스 권한을 획득하는 애플리케이션 레벨에서, 공격자가 제약이 있는 사용자 계정에서 커널이나 시스템 수준의 액세스 권한을 획득하는 운영체제 레벨에서, 또는 공격자가 윈도우 액티브 디렉터리 네트워크의 도메인 관리자 권한을 획득하는 도메인 레벨에서 이런 문제가 발생할 수 있다. 심지어 로컬 네트워크부터 클라우드까지 네트워크 경계 전반에 걸쳐 이런 문제가 발생할 수 있다.

통상적으로 운영체제 레벨 권한 상승에 초점이 맞춰지는 경우가 많다. 그러나 공격자가 네트워크 내부에서 이동을 해서 도메인 액세스 권한을 획득할 수 있는 액세스 제어 문제도 자주 발생하는 익스플로잇 공격이다. 

필요한 것보다 더 높은 권한으로 애플리케이션이나 가상화 서버를 실행할 수 있게끔 하는 클라우드 인프라의 구성 오류도 자주 공격에 사용된다. 나하리는 “도메인 수준에서 가장 많이 발생하고, 쉽게 도메인 관리자 권한을 획득할 수 있는 권한 상승 취약점이 존재하는 부분은 서비스 계정이다”라고 말했다.

액티브 디렉토리 네트워크에서 사용자는 액세스 권한이 없어도 도메인의 모든 리소스에 대한 서비스 티켓(service tickets)을 요청할 수 있다. 서비스 티켓은 사용자 또는 서비스 계정의 비밀번호와 함께 암호화되므로 기술적으로는 무단 사용자가 직접 사용할 수 없다. 그러나 계정이 차단될 위험없이 무차별 대입(brute-force) 기술로 오프라인에서 해킹할 수 있다. 

나하리는 “대기업에서는 이런 서비스 계정이 아주 많다. 그리고 모든 사용자가 이런 계정에 대해 서비스 티켓을 요청하고, 오프라인에서 크랙을 시도할 수 있다. 최소 1~2개는 크랙이 가능하다. 짧은 시간에 도메인 권한을 획득할 수 있게 된다는 의미이다. 새로운 형태의 공격은 아니지만, 거의 모든 조직에서 발생하는 공격이다. 또한 아주 효율적인 공격이다”라고 설명했다.

클라우드 레벨에서 권한 상승의 가장 일반적인 원인은 IAM(Identity and Access Management)이 사용 범위를 지나치게 넓게 허용한다는 것이다. 클라우드 공급업체에 관계없이 클라우드에 프로비저닝된 박스의 사용자는 해당 박스를 프로비저닝한 IAM의 자격 증명이 포함된 메타데이터 URL을 요청할 수 있다. 

나하리에 따르면, 기본적으로 이렇게 디자인되어 있다. 서버 프로비저닝에 이용된 IAM 역할 10개 중 8개는 아주 강력하며, 조직의 전체 클라우드 인프라에 대한 액세스 권한을 제공할 수도 있다. 이 문제는 IAM 역할을 적합하게 사용해야 한다는 클라우드 공급업체의 경고에도 불구하고 관리자가 가장 쉬운 방법을 선택한 클라우드 서비스의 자동화가 원인인 경우가 많다.

공격자가 로컬 머신 내부에서 요청 작업을 수행할 수 있는 단순한 웹 애플리케이션 취약점이 전체 클라우드 인프라에 침해를 초래할 수 있다. 이는 IAM 역할을 부적절하게 사용한 결과다.

또한, 권한 상승 문제를 수직, 수평 문제로 분류할 수도 있다. 수직 권한 상승이란 공격자가 이미 액세스 권한을 획득한 계정에 부여된 권한보다 더 많은 권한을 획득하는 것을 가리킨다. 관리자 계정 등 상승된 권한을 가진 계정에 대한 액세스 권한을 획득하는 것을 의미한다. 수평 권한 상승이란 동일한 권한을 가진 다른 사용자의 리소스에 대한 액세스 권한을 획득하는 것을 가리킨다.


권한 상승 공격을 방어하는 방법

운영체제 레벨 권한 상승 취약점의 경우, 가능한 빨리 운영체제는 물론 여기에서 사용되는 모든 서드파티 애플리케이션에 대한 보안 패치를 설치하는 것이 아주 중요하다.

애플리케이션 화이트리스팅 기술을 사용, 시스템에서 실행될 프로그램을 제한해 머신의 공격 표면을 줄일 수도 있다. 불필요한 서비스를 꺼야 한다. 또한, 이용하지 않는 하드웨어 구성요소와 드라이버를 비활성화 시키는 것도 중요하다.

나하리는 상승된 권한을 가진 액세스 모니터링에 초점을 맞춰야 한다고 강조했다. 방법이나 방식과 상관없이, 네트워크에서 최소 1개 머신에서 무단으로 코드가 실행되고 있다고 가정하는 보안 모델을 활용해야 한다. 나하리는 “사용자가 장치에서 무언가를 실행할 때마다 이를 계속 감시하기란 아주 어렵다. 그러나 도메인에서 상승된 권한을 가진 액세스를 모니터링하는 것은 이보다 쉽다. 개인적으로 기업들이 탐지와 방지 노력을 줄일 수 있는 좋은 기회라고 생각한다”라고 말했다.
 
사이버아크는 DLL 하이재킹을 탐지하고, 액티브 디렉토리 환경의 섀도우 관리자 권한을 찾고, 비밀 및 애플리케이션 ID를 관리하고, 쿠버네티스 클러스터에서 위험한 권한을 스캔하는 등의 기능을 제공하는 다양한 오픈소스 도구들을 공급하고 있다. 클라우드에서 IAM 역할 등 안전하지 못한 구성을 찾아주는 무료 도구, 상용 제품들도 있다.

기업은 ‘최소 권한’ 원칙에 따라 네트워크와 클라우드 인프라를 설계한 후, 정기적으로 외부 보안 업체를 채용해 권한 상승 취약점에 초점을 맞춘 침입 테스트를 실시해야 한다. 대부분의 자동화 공격은 여러 취약점을 결합한 익스플로잇 체인을 이용하기 때문에, 이 체인의 연결고리 하나를 없애면 공격을 막을 수 있다. editor@itworld.co.kr 


X