클라우드 컴퓨팅이 필요하신가요? 지금 시작해보세요

권한 에스컬레이션을 위한 SteelSeries의 하위 애플리케이션 메커니즘 악용

Tomer Peled

에 의해 작성

Tomer Peled

July 19, 2023

Tomer Peled

에 의해 작성

Tomer Peled

토머 펠레드는 Akamai의 보안 연구원으로, 취약점 리서치부터 OS 내부까지 다양한 분야의 리서치를 담당하고 있습니다. 여가 시간에는 요리와 크라브마가(무술), PC 게임을 즐긴다고 합니다.

Akamai 보안 연구자인 토머 펠레드(Tomer Peled)는 최근 SteelSeries의 애플리케이션에서 두 가지 취약점을 발견했습니다. 이 블로그 게시물에서는 악용 PoC뿐만 아니라 이러한 취약점 대한 기술적 세부 정보도 제공합니다.

Executive Summary

  • Akamai 보안 연구자인 토머 펠레드(Tomer Peled)는 최근 SteelSeries의 애플리케이션에서 두 가지 취약점을 발견했습니다.

  • SteelSeries는 컴퓨터 주변장치를 제조하는 하드웨어 회사로, 전 세계에 9백만 이상의 고객을 보유하고 있습니다.

  • 이 취약점에는 CVE 번호 CVE-2023-31461 및 CVE-2023-31462가 할당되었습니다. SteelSeries는 2023년 5월에 신속히 이 취약점을 패치했습니다.

  • 공격자는 취약점을 통해 처음에 얻은 것보다 높은 권한으로 코드를 실행하고, 관리자 권한으로 실행할 수도 있습니다. 이 취약점을 악용하려면 공격자가 수신 대기 중인 IPC 서버에 두 개의 로컬 패킷을 보내야 합니다. 그러면 서버가 상승된 권한으로 공격자의 페이로드를 실행합니다.

  • 이 취약점의 근본 원인은 서비스 IPC 수신기의 안전하지 않은 권한 처리 및 경로 통과에 대한 보호 기능 결여에 있습니다.

  • Akamai SIG(Security Intelligence Group)는 SteelSeries 지원 및 엔지니어링 팀에 취약점을 성실히 공개하고 할당된 CVE를 MITRE에 제출했습니다.

  • SIG는 우리가 모니터링하는 여러 데이터 센터에서 취약한 서비스를 발견했으며 고객에게 해당 리스크와 이를 완화하는 방법을 알렸습니다.

  • Akamai는 PoC(개념 증명) 악용 및 취약한 서비스가 있는 머신을 탐지하기 위한 osquery 를 제공합니다.

서론

SteelSeries는 키보드, 마우스, 헤드폰 등과 같은 컴퓨터 주변 기기를 전문 생산하는 하드웨어 회사입니다. 또한 이러한 디바이스를 사용자 지정할 수 있도록 웹 사이트에서 다운로드할 수 있는 SteelSeries GG 애플리케이션을 제공합니다.

SteelSeries GG 메인 모듈과 여러 하위 애플리케이션으로 구성된 이 애플리케이션은 SteelSeries가 사용자 경험을 향상시키는 데 기여합니다.

리서치 결과, 자체 하위 애플리케이션을 등록하고 이를 통해 실행할 코드를 지정할 수 있는 두 가지 방법을 발견했습니다. 이 방법을 사용하면 더 높은 권한으로 코드를 실행할 수 있습니다. 이 블로그 게시물에서는 PoC 악용뿐만 아니라 취약점에 대한 기술 세부 정보도 제공합니다.

기술 세부 정보

SteelSeries GG는 기본적으로 중간 무결성 수준에서, 일반적으로 관리자 컨텍스트에서 실행됩니다. 따라서 특정 상황에서는 높은 무결성 수준의 컨텍스트에서 실행될 수 있습니다. 이러한 세부 사항은 SteelSeries GG가 수신 프로세스라는 사실(그림 1)과 결합되어 취약점 리서치의 좋은 대상이 됩니다.

SteelSeries GG 애플리케이션 그림 1: Process Hacker와 netstat가 수신 중인 SteelSeries GG 애플리케이션을 보여줍니다.

하위 애플리케이션 메커니즘 및 프로세스 간 통신 API

하위 애플리케이션 메커니즘은 SteelSeries의 옵션 기능을 관리하고 사용자 경험을 개선하는 데 사용됩니다. 이러한 하위 애플리케이션의 한 예로 SteelSeries에서 정의한 ‘게임용 고급 오디오 소프트웨어 툴 모음’인 Sonar를 들 수 있습니다. 이 툴 모음을 사용하면 누구나 인게임 사운드, 팀 채팅 및 마이크를 개별적으로 조정할 수 있습니다. 하위 애플리케이션은 백그라운드에서 실행되며 IPC(프로세스 간 통신) API를 통해 애플리케이션의 기본 모듈과 통신합니다.

SteelSeries GG IPC API는 설정 변경, 관리 작업, 사용자 프로필 편집 등 사용자가 요청할 수 있는 여러 가지 종류의 작업을 노출합니다. 더 흥미로운 점은 다음과 같습니다. API는 생성 및 삭제에서 활성화 및 비활성화에 이르기까지 하위 애플리케이션을 관리하는 인터페이스를 제공합니다.

API 라우팅 기능(즉, 각 API 요청을 처리하는 방법)은 gorilla/mux 오픈 소스 라이브러리를 사용해 구축됩니다. 이러한 사실을 바탕으로 공격표면을 더 쉽게 탐색할 수 있습니다. 라우팅 기능 자체는 매우 크지만, 기본적으로는 사용 가능한 각 API 옵션의 if 문을 모아 놓은 것이 불과합니다(그림 2).

사용 가능한 각 API 옵션의 IF 문 모음 그림 2: SteelSeries GG에서 HTTP 라우팅 구축

이러한 API 호출은 수신 서버("SteelSeriesGG.exe")와 연결을 시작하기만 하면 별도의 인증 없이 누구나 사용할 수 있습니다.

그래서 가장 많은 영향을 받을 수 있는 하위 애플리케이션 이벤트 핸들러에 초점을 맞추기로 했습니다. IDA에서 분해된 코드를 재구성한 후 하위 애플리케이션의 라우팅 핸들러에 그림 3과 같은 프로토타입이 있음을 발견했습니다.

gorilla/mux 코드의 프로토타입 그림 3: gorilla/mux 코드의 핸들러 함수 프로토타입

하위 애플리케이션 메커니즘 악용

우리가 할 수 있는 API 호출 중 하나는 새 하위 애플리케이션을 만드는 것입니다. 이 프로세스는 여러 매개 변수를 포함하는 JSON 페이로드를 사용하여 /subApps 라우팅으로 POST 요청을 전송하여 수행됩니다. 이 중 "name", "executableName" , "isEnabled" 및 "shouldAutoStart" 등 네 가지 매개 변수가 중요합니다.

이러한 필드를 사용해 권한 없는 사용자가 새로운 하위 애플리케이션을 만들고, 권한 없는 위치의 실행 파일을 지정해 애플리케이션을 시작할 때마다 실행하도록 예약할 수 있습니다.

SteelSeries GG는 다음과 같이 하위 애플리케이션 실행 파일의 전체 경로를 빌드합니다.

  <StellSeriesGG install location>\Apps\<name>\<executableName>.exe

‘name’ 및 ‘executableName’ 필드가 이러한 방식으로 연결되므로 경로 통과 공격을 시도해 볼 수 있겠다고 생각했습니다. 나타난 바와 같이 SteelSeries GG는 경로 통과에 저항하지 않으며 그림 4와 같이 "../../../../"로 경로 앞에 오는 것을 허용합니다.

경로 통과에 저항하지 않는 SteelSeries GG 그림 4: 새 하위 애플리케이션을 만드는 동안 경로 통과가 허용됨

하위 애플리케이션이 생성되면 해당 정보는 SteelSeries GG의 데이터베이스에 저장됩니다. 이 데이터베이스를 통해 하위 애플리케이션을 제어할 수 있는 또 다른 방법이 있을까요? 실제로 데이터베이스는 안전하지 않은 위치에 있습니다. 즉, 하위 애플리케이션 API에 접속하지 않아도 하위 애플리케이션을 데이터베이스에 직접 추가할 수 있습니다. 그러나 이 설계 결함을 악용하려면 공격자가 취약점을 찾아야 합니다. 이 취약점 자체는 악용될 수 없으므로 즉각적인 리스크가 발생하지 않습니다.

제어되는 위치에 하위 애플리케이션을 만드는 것은 권한 상승을 달성했다는 의미라고 생각할 수 있지만(해당 경로에서 바이너리를 실행한 후), 인증서 검증이라는 또 다른 제한이 있음을 발견했습니다. SteelSeries는 하위 애플리케이션 실행 파일이 서명되고 승인되었는지 제대로 확인합니다. 자체 페이로드를 실행하려면 검증 프로세스를 우회해야 합니다.

검증 함수는 WinVerifyTrust 함수를 호출한 다음 WinAPI 함수 체인을 호출하여 인증서의 특정 필드를 애플리케이션의 하드 코딩된 문자열과 비교합니다. 

이 검증은 우회하기가 다소 까다롭지만 다음 두 가지 방법을 쓰면 가능합니다. 

  • DLL 하이재킹

  • TOCTOU(확인 시간 대 사용 시간)

DLL 하이재킹 공격 기법

DLL 하이재킹 기법을 사용하면 SteelSeries가 여러 기존 바이너리를 신뢰한다는 사실에 의존할 수 있습니다. 그 중 하나는 라이브러리 SSEDEVICE.dll을 로드하는 SteelSeriesEngine.exe입니다. 원본 SSEDEVICE DLL 대신 라이브러리가 로드되도록 동일한 이름으로 자체 라이브러리를 컴파일합니다. 자체 DLL이 내보낸 함수는 정품 DLL의 함수를 호출합니다. 

그러나 DLL을 로드할 때 호출되는 함수는 악성 논리를 구축합니다(그림 5). 이 기법은 itm4n의 DLL 프록시에 관한 블로그 게시물에 자세히 설명되어 있습니다.

DLL 로드 시 호출되는 함수 그림 5: SSEDEVICE의 DLL 하이재킹

그림 6의 애니메이션은 상승된 권한으로 공격자 페이로드를 실행하기 위해 초기 패킷을 보내는 프로세스(이 경우 cmd 인스턴스 열기)를 보여줍니다.

그림 6의 애니메이션은 상승된 권한으로 공격자 페이로드를 실행하기 위해 초기 패킷을 보내는 프로세스(이 경우 cmd 인스턴스 열기)를 보여줍니다. 그림 6: 상승된 권한으로 공격자 페이로드를 실행하기 위해 초기 패킷을 보내는 프로세스

TOCTOU 공격 기법

여기서는 인증서 확인과 실제 바이너리 실행 사이의 시간 간격을 이용합니다(그림 7). 즉, James Forshaw의 BaitAndSwitch 툴을 사용하여 합법적인 파일을 악성 파일로 빠르게 전환함으로써 경쟁 조건을 달성하려고 합니다. 인증서 확인 후에는 즉시 이 항목을 대체할 것입니다. 이렇게 하면 합법적인 파일이 검증되나 실제 실행되는 것은 검증되지 않은 악성 파일입니다.

설계 차원에서 경쟁 조건의 성공 가능성은 보장되지 않습니다. 이러한 악용을 안정화하기 위해 교체 기회를 확대하는 데 더 많은 시간을 할애할 수 있습니다.

인증서 검증과 실제 바이너리 실행 사이의 시간 간격 그림 7: TOCTOU 공격 기법 일러스트레이션

인증서 확인은 WinVerifyTrust 호출과 인증서의 여러 필드 및 애플리케이션의 하드 코딩된 문자열 간의 확인이라는 두 가지 테스트에 의존합니다. 우리는 실행 파일에 이러한 정확한 값을 가진 증명서를 이식할 수 있습니다. 이 향상된 기능을 통해 공격자는 두 테스트 간에 전환이 발생하더라도 악성 바이너리가 두 번째 테스트의 모든 기준을 충족하므로 경쟁 조건을 달성할 수 있습니다.

그림 8의 애니메이션은 BaitAndSwitch를 사용한 검증 프로세스의 시작을 기다리는 것부터 공격자 바이너리(이 경우 cmd.exe)의 실행에 이르는 프로세스를 보여줍니다.

그림 8의 애니메이션은 BaitAndSwitch를 사용한 검증 프로세스의 시작을 기다리는 것부터 공격자 바이너리(이 경우 cmd.exe)의 실행에 이르는 프로세스를 보여줍니다. 그림 8: BaitAndSwitch를 사용한 검증 프로세스의 시작을 기다리는 것부터 공격자 바이너리의 실행에 이르는 프로세스

탐지 및 방어

Akamai는 네트워크에서 취약한 자산을 쉽게 탐지할 수 있도록 SteelSeries GG 및 현재 설치된 버전의 인스턴스를 찾을 수 있는 osquery를 제공하고 있습니다.

'%SteelSeries%'와 같은 이름의 프로그램에서 이름, 버전을 선택

Akamai Guardicore Segmentation 고객은 이 쿼리를 인사이트와 함께 활용해 패치가 필요한 애플리케이션을 찾을 수 있습니다.

SteelSeries는 새 패치를 적용할 때마다 해당 애플리케이션을 업데이트합니다. 이렇게 하면 디바이스가 이 취약점의 영향을 받을 가능성이 낮아지겠지만, 보안팀 직원은 SteelSeries 버전을 39보다 높은 버전으로 업그레이드하는 것이 좋습니다.

결론

SteelSeries는 전 세계 9백만 이상의 고객으로 이뤄진 대규모 사용자 기반을 보유한 대기업입니다. 제품의 취약점은 고객에게 본질적인 영향을 줄 수 있습니다. 이러한 취약점의 악용이 용이하다는 점과 머신에 미치는 영향, 즉 관리자 컨텍스트에서 바이너리가 실행될 가능성을 고려하면 더욱 복잡한 결과로 이어집니다.

영향 범위는 사용자에게 속한 머신에 국한되지 않으며 기업에도 영향을 미칠 수 있습니다. 취약한 디바이스에 연결되거나 취약한 애플리케이션을 실행하는 직원의 노트북은 나중에 엔터프라이즈 네트워크에 연결하여 기업에 리스크를 ‘가져올’ 수 있습니다. 이러한 이유로 기업은 BYOD(Bring Your Own Device) 정책을 구축하고 직원들에게 이러한 디바이스 사용의 리스크에 대해 교육하는 방안을 고려해야 합니다.

Akamai는 고객의 네트워크를 검색하여 취약한 애플리케이션의 인스턴스를 검색하고 관련 고객에게 알렸습니다.

Akamai는 고객과 커뮤니티를 보호하기 위한 지속적인 노력의 일환으로 패치와 기타 시스템을 지속적으로 분석해 취약점을 찾을 것입니다. Akamai의 최신 보안 리서치를 확인하려면 Twitter에서 Akamai를 팔로우하세요.

공개 타임라인

  • 2023년 4월 27일 - CVE 요청이 MITRE에 제출됨

  • 2023년 5월 1일 - SteelSeries 고객 지원팀에 이메일 전송

  • 2023년 5월 2일 - MITRE에서 CVE 할당

  • 2023년 5월 3일 – 2023년 6월 4일 - SteelSeries 엔지니어링 팀과의 대화

  • 2023년 5월 31일 - 수정 사항 게시됨

  • 2023년 7월 17일 - SteelSeries의 블로그 초안 검토

  • 2023년 7월 18일 - 블로그 게시물 게시



Tomer Peled

에 의해 작성

Tomer Peled

July 19, 2023

Tomer Peled

에 의해 작성

Tomer Peled

토머 펠레드는 Akamai의 보안 연구원으로, 취약점 리서치부터 OS 내부까지 다양한 분야의 리서치를 담당하고 있습니다. 여가 시간에는 요리와 크라브마가(무술), PC 게임을 즐긴다고 합니다.