윈도우 11 기본 BitLocker 무력화하는 제로데이 공격 등장
물리적 접근이 가능한 공격자가 단 몇 초 만에 기본 설정된 윈도우 11의 BitLocker 암호화를 우회하여 드라이브 전체 데이터에 접근할 수 있는 'YellowKey' 제로데이 익스플로잇이 공개되었습니다. 이 취약점은 커스텀 FsTx 폴더가 포함된 USB를 연결해 윈도우 복구 모드로 부팅하면, 별도의 복구 키 없이도 명령 프롬프트(CMD)가 실행되어 암호화된 데이터를 조작할 수 있게 만듭니다. 보안 전문가들은 단일 볼륨의 트랜잭션 NTFS 요소가 다른 볼륨의 데이터를 수정할 수 있다는 점에서 심각한 설계 결함으로 보고 있습니다.
온라인에 유통 중인 제로데이 익스플로이트(Zero-day exploit)를 통해, 윈도우 11 시스템에 물리적으로 접근할 수 있는 사람이 기본 BitLocker 보호를 우회하고 단 몇 초 만에 암호화된 드라이브에 대한 전체 접근 권한을 얻을 수 있는 것으로 밝혀졌습니다.
'옐로우키(YellowKey)'라는 이름의 이 익스플로잇은 Nightmare-Eclipse라는 가명을 사용하는 연구원에 의해 이번 주 초에 공개되었습니다. 이는 윈도우 11의 기본 BitLocker 배포를 확실하게 우회합니다. BitLocker는 Microsoft가 제공하는 전체 볼륨 암호화 보호 기능으로, 신뢰할 수 있는 플랫폼 모듈(TPM)이라는 보안 하드웨어에 저장된 암호 해독 키가 없으면 디스크 콘텐츠에 접근할 수 없도록 만듭니다. BitLocker는 정부와 계약을 맺은 조직을 포함한 많은 기업에서 필수적인 보안 요구 사항입니다.
한 디스크 볼륨이 다른 볼륨을 조작할 때 YellowKey 익스플로잇의 핵심은 특수하게 제작된 FsTx 폴더입니다. 이 폴더에 대한 온라인 문서는 찾기가 매우 어렵습니다. 뒤에서 설명하겠지만, fstx.dll 파일과 연결된 이 디렉토리는 Microsoft가 '트랜잭션 NTFS(Transactional NTFS)'라고 부르는 기능과 관련된 것으로 보입니다. 이 기능은 개발자가 단일 파일, 여러 파일 또는 여러 소스에 걸친 트랜잭션에서 파일 작업에 대해 '트랜잭션 원자성(transactional atomicity)'을 가질 수 있게 해줍니다.
우회 공격을 실행하는 단계는 매우 간단합니다.
- Nightmare-Eclipse의 익스플로잇 페이지에서 커스텀 FsTx 폴더를 NTFS 또는 FAT 포맷된 USB 드라이브에 복사합니다.
- USB 드라이브를 BitLocker로 보호된 장치에 연결합니다.
- 장치를 부팅하고 즉시 [Ctrl] 키를 길게 누릅니다.
- 윈도우 복구 모드(Windows recovery)로 진입합니다.
세 번째 단계를 수행하는 방법은 최소 두 가지가 있습니다. 한 가지 방법은 윈도우로 부팅한 후 [Shift] 키를 누른 상태에서 전원 아이콘을 클릭하고 다시 시작을 클릭하는 것입니다. 다른 방법은 장치의 전원을 켜고 윈도우가 부팅되자마자 다시 시작하는 것입니다.
어느 쪽이든 명령 프롬프트(CMD.EXE)가 나타납니다. 이 프롬프트는 전체 드라이브 콘텐츠에 대한 전체 접근 권한을 가지므로, 공격자가 파일을 복사, 수정 또는 삭제할 수 있습니다. 정상적인 윈도우 복구 흐름에서는 공격자가 BitLocker 복구 키를 입력해야 합니다. 하지만 어떻게든 YellowKey 익스플로잇은 이 안전 장치를 우회합니다.
Kevin Beaumont와 Will Dormann을 포함한 여러 보안 연구원들은 이 익스플로잇이 설명된 대로 작동함을 확인했습니다. 커스텀 FsTx 폴더의 어떤 요소가 우회를 유발하는지는 아직 불분명합니다. Dormann은 이것이 기본적으로 명령 로그 파일 시스템(command-log file system)을 사용하는 트랜잭션 NTFS와 관련이 있어 보인다고 말했습니다. Dormann은 또한 Windows의 fstx.dll을 살펴보면 FsTxFindSessions() 함수 내에서 \System Volume Information\FsTx를 명시적으로 찾는 코드를 볼 수 있다고 덧붙였습니다.
YellowKey 익스플로잇에 사용된 이 FsTx 디렉토리의 내용에는 RecoverySimulation.ini와 관련된 문자열이 나타나지 않습니다. 그러나 ??\C:\Windows\win.ini 및 ??\X:\Windows\System32\winpeshl.ini 파일과 경로를 보여줍니다. "여기서 X:\Windows\System32\winpeshl.ini는 WinRE [윈도우 복구 환경]가 시작될 때 수행할 작업을 제어하는 파일입니다."
Tharos Labs의 수석 수석 취약점 분석가인 Dormann은 계속해서 다음과 같이 말했습니다.
하지만 저에게 흥미로운 점은 이것입니다. 한 볼륨에 \System Volume Information\FsTx 디렉토리가 존재한다는 것이, 이것이 재생될 때 다른 볼륨(ANOTHER VOLUME)의 콘텐츠에 어떻게 영향을 미칠 수 있을까요? 🤔
정상적인 WinRE 세션에서는 X:\Windows\System32 디렉토리 안에 다음과 같은 내용을 담은 winpeshl.ini 파일이 있습니다:
[LaunchApp] AppPath=X:\sources\recovery\recenv.exe
그러나 YellowKey 익스플로잇을 사용하면 USB 드라이브의 트랜잭션 NTFS 비트들이 다른 드라이브(X:)에 있는 winpeshl.ini 파일을 삭제할 수 있는 것으로 보입니다. 그 결과 예상했던 윈도우 복구 환경 대신, BitLocker가 잠금 해제된 상태로 cmd.exe 프롬프트를 얻게 됩니다.
TPM 전용 BitLocker 우회가 확실히 흥미롭긴 하지만, 여기서 진짜 중요한 점(have the ability to modify the contents of another volume when it is replayed)은 한 볼륨의 \System Volume Information\FsTx 디렉토리가 재생될 때 다른 볼륨의 콘텐츠를 수정할 수 있는 능력이 있다는 것입니다. 저에게 이것은 그 자체로 취약점처럼 들립니다.
Microsoft 대변인은 답변을 거절했습니다.