보안 취약점 · 2 min read · Sep 29, 2025

구글 연구원이 발견한 Windows 8.1 권한 상승 취약점

구글 연구원이 Windows 8.1, 32/64 비트 버전에서 권한 상승 버그를 발견했습니다.

구글 연구원 Forshaw가 Windows 8.1에서 권한 상승 버그를 발견했습니다. ahcache.sys/NtApphelpCacheControl의 버그는 Windows 8이 Windows 8.1로 업데이트된 후 발생했으며, Forshaw는 2014년 9월에 이를 발견했습니다. 그는 9월 30일 구글 보안 연구 메일링 리스트에 이 버그에 대해 알렸고, 90일 공개 기한이 지난 후 어제 결함과 개념 증명이 공개되었습니다.

구글 연구원 팀은 결함이 발견된 날에 마이크로소프트에 이 버그에 대해 연락했지만, 이 문제에 대한 조치가 취해졌다는 징후는 없습니다. Forshaw는 메일링 리스트에서 PoC를 8.1에서만 테스트했으며 Windows 7이 취약한지 여부는 알지 못한다고 언급했습니다.

이 취약점은 ahcache.sys/AhcVerifyAdminContext 함수에서 확인됩니다. 개념 증명에는 두 개의 프로그램 파일과 이를 실행하기 위한 지침 세트가 포함되어 있으며, 그 결과 Windows 계산기가 관리자 권한으로 실행됩니다. Forshaw는 이 버그가 UAC 자체에 있는 것이 아니라, UAC가 버그를 보여주기 위해 일부 사용된다고 말합니다.

마이크로소프트는 이 취약점으로 인해 큰 문제에 직면해 있으며, 매달 두 번째 화요일에 주요 패치를 릴리스합니다. 현재 마이크로소프트는 두 가지 선택이 있습니다:

  • 두 번째 패치 화요일에 맞춰 수정합니다.
  • 비정기 패치를 발행합니다(일반적으로 0day의 나쁜 신호).

다음 패치 화요일은 2015년 1월 13일이며, 그 이전에 패치를 릴리스하면 이는 제로 데이 취약점으로 간주될 수 있습니다.

전체 스레드는 아래에 재현됩니다:

플랫폼: Windows 8.1 업데이트 32/64 비트 (다른 OS는 테스트되지 않음) Windows 8.1 업데이트에서 시스템 호출 NtApphelpCacheControl(코드는 실제로 ahcache.sys에 있음)은 새로운 프로세스가 생성될 때 애플리케이션 호환성 데이터를 빠르게 재사용할 수 있도록 캐시할 수 있게 합니다. 일반 사용자는 캐시를 조회할 수 있지만, 새로운 캐시 항목을 추가할 수는 없습니다. 이 작업은 관리자에게만 제한됩니다. 이는 AhcVerifyAdminContext 함수에서 확인됩니다. 이 함수에는 호출자의 가장 위임 토큰을 올바르게 확인하지 않아 사용자가 관리자인지 여부를 결정하는 취약점이 있습니다. 호출자의 가장 위임 토큰을 PsReferenceImpersonationToken을 사용하여 읽고, 토큰의 사용자 SID와 LocalSystem의 SID를 비교합니다. 토큰의 가장 위임 수준을 확인하지 않기 때문에 로컬 시스템 프로세스에서 스레드의 식별 토큰을 가져와 이 검사를 우회할 수 있습니다. 이를 위해 PoC는 BITS 서비스와 COM을 악용하여 가장 위임 토큰을 가져오지만, 아마도 다른 방법도 있을 것입니다. 취약점을 악용할 방법을 찾는 것이 문제입니다. PoC에서는 UAC 자동 상승 실행 파일(예: ComputerDefaults.exe)에 대한 캐시 항목을 만들고, regsvr32에 대한 앱 호환성 항목을 가리키도록 캐시를 설정하여 regsvr32.exe를 다시 로드하도록 강제합니다. 그러나 어떤 실행 파일도 사용할 수 있으며, 요령은 악용할 적절한 기존 앱 호환성 구성을 찾는 것입니다. Windows 7이 취약한지는 불확실합니다. 업데이트에 대한 코드 경로에는 TCB 권한 확인이 있습니다(플래그에 따라 우회 가능할 수 있음). Windows 7에서 이를 확인하기 위한 노력은 없었습니다. 주의: 이는 UAC의 버그가 아니며, 단지 시연 목적으로 UAC 자동 상승을 사용하고 있습니다. PoC는 Windows 8.1 업데이트에서 32비트 및 64비트 버전 모두에서 테스트되었습니다. 32비트에서 실행하는 것이 좋습니다. 확인하려면 다음 단계를 수행하십시오: 1) AppCompatCache.exe와 Testdll.dll을 디스크에 놓습니다. 2) UAC가 활성화되어 있고, 현재 사용자가 분할 토큰 관리자이며, UAC 설정이 기본값(특정 실행 파일에 대한 프롬프트 없음)인지 확인합니다. 3) 명령 프롬프트에서 “AppCompatCache.exe c:\windows\system32\ComputerDefaults.exe testdll.dll” 명령으로 AppCompatCache를 실행합니다. 4) 성공하면 계산기가 관리자 권한으로 실행되는 것이 나타납니다. 처음에 작동하지 않으면(ComputerDefaults 프로그램이 나타나면) 3에서 공격을 다시 실행하십시오. 첫 실행 시 캐싱/타이밍 문제로 인해 가끔 문제가 발생하는 것 같습니다. 이 버그는 90일 공개 기한이 적용됩니다. 90일이 경과하고 광범위하게 사용 가능한 패치가 없으면 버그 보고서는 자동으로 공개됩니다.

다른 사용자는 Windows 10이 이 취약점에 취약하지 않다고 주장했으며, 또 다른 사용자는 마이크로소프트의 승인 없이 이러한 버그를 공개하는 구글 정책에 의문을 제기했습니다. 스레드와 PoC는 여기에서 접근할 수 있습니다.

Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.