메뉴
HN
Hacker News 25일 전

MSI Center에서 SYSTEM 권한 탈취가 가능한 취약점 발견

IMP
8/10
핵심 요약

MSI 노트북과 사제 PC에 기본 설치된 'MSI Center' 소프트웨어에서 일반 사용자 계정으로도 시스템 최고 권한(SYSTEM)을 탈취할 수 있는 심각한 취약점이 발견되었습니다. 악의적인 사용자가 이 취약점을 악용하면 윈도우 디펜더를 비활성화하거나 시스템 설정을 마음대로 조작할 수 있어, 사전 설치된 소프트웨어(OEM)의 보안 취약성이 매우 위험함을 다시 한번 입증합니다.

번역된 본문

MSI Center - 수 초 내에 SYSTEM 권한을 얻는 방법

AMD와 ASUS의 OEM 소프트웨어에서 심각한 취약점을 찾은 후, 저는 더 많은 게임 제품에서 문제를 찾아 시야를 넓히고 싶었습니다. 저는 결국 MSI Center를 선택했습니다. 이 소프트웨어는 그들의 모든 노트북과 조립 PC에 기본 설치되어 있는 것으로 보였기 때문에, 취약점을 찾을 경우 광범위한 영향을 미칠 가능성이 높았기 때문입니다.

다운로드 및 추출 이 과정의 첫 번째 단계는 항상 오프라인 설치 프로그램을 다운로드하는 것입니다. 이러한 회사들 중 상당수는 지원하지 않는 하드웨어에서 설치 프로그램이 실행되는 것을 차단하거나, 자사의 일부 소프트웨어만 설치할 수 있도록 허용합니다. 오프라인 설치 프로그램의 복사본을 구했으면, 이를 Detect-It-Easy에 통과시키고 기도해야 합니다. 운이 좋다면 MSI Center를 패키징하는 데 사용된 소프트웨어가 무엇인지 알려줄 것입니다. 우리의 경우 운이 좋았고, 이 프로그램이 'Inno Setup'이라는 것을 사용하여 패키징되어 있다는 것을 알 수 있었습니다. 이러한 상황에 특화된 'innoextract'라는 도구가 있습니다. 설치 프로그램과 그 안에 포함된 .appxbundle(그냥 .zip 파일임)의 압축을 푼 후, 실행 파일들을 디컴파일할 차례였습니다.

디컴파일(Decompilation) 총 170개의 실행 파일(DLL 포함)이 있었으며, 그중 대부분은 C#으로 작성되어 있었습니다. 이들을 위해 저는 ilspycmd를 사용하여 모두 디컴파일하는 배쉬 스크립트를 만들었습니다.

find . ( -name ".exe" -o -name ".dll" ) -exec file {} + | grep Mono | wc -l find . ( -name ".exe" -o -name ".dll" ) -exec file {} + | grep -v Mono | wc -l

C++로 작성된 나머지 파일들의 경우, 가장 흥미로운 상위 10개 파일 정도를 선택하여 IDA에 던져 넣은 다음, 완전히 디컴파일된 내용을 .c 파일로 내보냈습니다. 이 모든 작업을 마친 후, 저는 각 파일을 일일이 살펴보기에는 파일이 너무 많다는 결론에 도달했습니다. 대신 일반적인 취약점을 검색하고 뭔가를 찾을 수 있기를 바라야만 했습니다. 제가 검색한 단어 중 하나는 'CreateNamedPipe'였습니다. (명명된 파이프(named pipe)는 컴퓨터의 다른 프로세스가 서로 통신할 수 있게 해주는 방법입니다.)

취약점 MSI의 'Notebook Foundation' 서비스는 부팅 시 인증된 모든 사용자가 상호 작용할 수 있는 명명된 파이프를 생성합니다.

CreateNativePipeSecurity("D:(A;OICI;GRGW;;;AU)(A;OICI;GA;;;BA)"); CreateNamedPipe("\.\pipe\MSI_SERVICE_2", PIPE_ACCESS_DUPLEX);

이 파이프는 다음과 같이 트리거할 수 있는 명령들을 제공합니다:

  • Handshake(핸드셰이크): 다음 명령들을 호출하거나 상호 작용하려면 애플리케이션을 "등록"해야 합니다. 임의의 클라이언트 이름만 제공하면 되며, 이 이름은 다른 명령을 호출할 때 인수로 사용됩니다.
  • Registry(레지스트리): LocalSystem(최고 권한)으로 모든 레지스트리 키를 읽고, 쓰고, 삭제할 수 있습니다.
  • WMI(Windows Management Instrumentation): 시스템 하드웨어를 모니터링하고 시스템 설정(예: Windows Defender 설정 및 제외 항목)을 변경할 수 있습니다.
  • PC REXE: LocalSystem으로 모든 인수를 사용하여 모든 실행 파일을 실행합니다.
  • KEXE: 시스템의 모든 실행 파일을 강제 종료합니다 (이것 역시 LocalSystem으로 실행됩니다).

짐작할 수 있듯이, 이러한 기능들은 모든 인증된 사용자(로컬 관리자 권한이 없는 사용자 포함)에게 노출되기에는 믿을 수 없을 정도로 위험한 도구들입니다. 이들은 맬웨어에 의해 악용되어 Windows Defender를 비활성화하거나 시스템 수준의 권한을 얻는 데 사용될 수 있습니다.

개념 증명(PoC, Proof of Concept) 과거에 MSI는 주로 '보안 대비 은폐(security by obscurity, 소스 코드나 알고리즘을 숨기는 방식)'에 의존하여 악용을 방지했습니다. 그들은 파이프와 통신하기 위한 사용자 정의 프로토콜을 만들었고, 모든 메시지가 3DES(오늘날 기준으로는 오래되고 안전하지 않은 암호)를 사용하여 암호화되도록 요구했습니다.

  1. MSI_SERVICE_2 명명된 파이프에 대한 연결을 엽니다.
  2. 임의의 문자열(예: ABCD123)을 사용하여 애플리케이션을 등록합니다.
  3. 3DES를 사용하여 PC:REXE 명령을 암호화하고 클라이언트 이름을 키로 사용합니다.
  4. Notebook Foundation 서비스는 제대로 작동하는 이름을 찾을 때까지 등록된 모든 클라이언트 이름을 시도하며 복호화를 무차별 대입(brute-force)하려고 시도합니다.
  5. 복호화가 성공하면, 해당 명령을 실행합니다.
원문 보기
원문 보기 (영어)
MSI Center - How to gain SYSTEM privileges in seconds After finding severe vulnerabilities in both AMD’s and ASUS’s OEM software, I wanted to expand my horizons by finding issues in more gaming products. I ended up settling on MSI Center, because it seems to come preinstalled on all of their laptops and pre-built desktops, meaning any vulnerability I found would likely have widespread implications. Downloading and Extraction The first step in this process is to always download the offline installer. A lot of these companies either block the installer from running on unsupported hardware or only allow for the installation of a small selection of their software. Once you have a copy of the offline installer, you need to run it through Detect-It-Easy and pray. If you get lucky, it might just tell you what software is being used to package MSI Center. In our case, we got lucky, and it told us that MSI Center is packaged using something called Inno Setup. There is a tool made specifically for this situation called innoextract . After extracting the installer and the .appxbundle contained within (it’s just a .zip file), it was time to decompile the executables. Decompilation There were a total of 170 executables (including DLLs), with the majority of them being written using C#. For them, I made a bash script to decompile all of them using ilspycmd . find . ( -name "*.exe" -o -name "*.dll" ) -exec file {} + | grep Mono | wc -l find . ( -name "*.exe" -o -name "*.dll" ) -exec file {} + | grep -v Mono | wc -l For the remainder that were written in C++, I chose the top ~10 most interesting files and threw them into IDA and then exported their complete decompilation as a .c file. After doing all that, I had come to the conclusion that there were simply way too many files to be able to look at each one individually. Instead, I had to just search for common weaknesses and hope I would find something. One of the things I grepped for was CreateNamedPipe . (A named pipe is a way for different processes on your computer to communicate with each other.) The vulnerability MSI’s ‘Notebook Foundation’ service spawns a named pipe on boot that any authenticated user can interact with. CreateNativePipeSecurity("D:(A;OICI;GRGW;;;AU)(A;OICI;GA;;;BA)"); CreateNamedPipe("\\\\.\\pipe\\MSI_SERVICE_2", PIPE_ACCESS_DUPLEX); It provides the following commands that can be triggered: Handshake To call / interact with the following commands, you need to “register” your application. You are only required to provide an arbitrary client name which is then provided as an argument when you call the other commands. Registry This lets you read, write and delete any registry key as LocalSystem (highest privileges). WMI (Windows Management Instrumentation) This lets you monitor system hardware, and change system settings (e.g., Windows Defender settings and exclusions). PC REXE - Run any executable with any arguments as LocalSystem . KEXE - Kill any executable on the system (again, run as LocalSystem ). As you might have guessed, these are incredibly dangerous tools to be exposing to any authorised user (including ones without local admin). They could be abused by malware to disable Windows Defender or gain system-level privileges. The PoC (Proof of Concept) Historically, MSI has primarily relied on security by obscurity to protect against exploitation. They created a custom protocol for communicating with the pipe and required all messages to be encrypted using 3DES (an outdated and insecure cipher by today’s standards). Open a connection to the MSI_SERVICE_2 named pipe. Register an application using a random string (e.g., ABCD123). Encrypt your PC:REXE command using 3DES and use the client name as the key. The Notebook Foundation service attempts to brute-force the decryption by trying all the registered client names until one works. If the decryption is successful, it runs the payload as LocalSystem . For the Proof of Concept I created, I only made it launch cmd.exe to show it can be used to escalate privileges. However, malware would likely run an arbitrary PowerShell command or script. Your browser does not support the video lmao I recently discovered that this exploit can also be triggered remotely via SMB on a LAN, resulting in Remote Code Execution (RCE). However, because the named pipe only responds to authenticated users, successful exploitation requires valid login credentials for the target machine. Reporting When I sent a report of this vulnerability to MSI via their PSIRT email, I received a concerning response: Remote Server returned '554 5.2.2 mailbox full; STOREDRV.Deliver.Exception: QuotaExceededException.MapiExceptionShutoffQuotaExceeded;' What this basically meant was that the mailbox for receiving vulnerability reports was full and was refusing to accept any additional emails. Not only had it refused to accept my vulnerability report, but it had likely been this way for an unknown period of time and had dropped other people’s vulnerability reports too, not just mine. Because of this concerning development, I started reaching out to my contacts to find an MSI employee who could help remedy the situation. In the end, Steve Burke, who runs Gamers Nexus, helped me get in touch with an employee from MSI. However, it turned out that all that effort was in vain as my report had actually managed to reach MSI after all, despite their mail servers giving the exact opposite impression. After this minor hiccup, the experience with MSI was actually quite pleasant. They prepared a patch for the vulnerability within two days of me reporting it and told me which MSI Center release it was to be bundled with, and when they planned to release the new version. Unfortunately, MSI did not have the ability to issue a CVE for this, so they suggested I request one via MITRE or a third-party CNA. As of writing, it has been about a month, and my submission is still in review by VulDB. They state that due to a large amount of new submissions, the wait time is ~4 weeks, so hopefully the review will conclude shortly. Donations So far, for the vulnerabilities I have reported to Google, ASUS, AMD, TP-Link, Netgear, MSI (and more), they have paid out a total of $0 in bug bounties. If you found this article interesting or useful, you can buy me a coffee via my Ko-fi: https://ko-fi.com/mrbruhh Timeline (DD/MM/YYYY) 09/05/2026 - Vulnerability Discovered 10/05/2026 - Vulnerability Reported 12/05/2026 - MSI responds and says they have created a patch 01/06/2026 - MSI Center 2.0.70.0 is released 03/06/2026 - CVE-2026-XXXX is requested via VulDB 01/07/2026 - Embargo ends