
CVE-2025-4275(Hydr0ph0bia)에 대한 분석 및 익스플로잇으로, 펌웨어 변수를 사용하여 이후 부팅 구성 요소에서 신뢰하는 공격자 제어 인증서를 도입하는 Secure Boot 신뢰 체인의 취약점입니다.
이 저장소는 Insyde H2O 기반 UEFI 호환 펌웨어에 영향을 미치는 Secure Boot 우회 취약점인 CVE-2025-4275와 관련된 연구 자료를 담고 있습니다. 이 취약점에 대한 기술적 분석, 문제에 연루된 바이너리, 그리고 연구자들이 실제 환경과 교육적 맥락 모두에서 이 취약점을 더 잘 이해하고 연구하며 실험할 수 있도록 돕기 위한 문서와 도구를 한데 모았습니다.
CVE-2025-4275는 Nikolaj Schlej에 의해 최초로 발견되어 책임 있는 공개 절차를 거쳤으며, CERT/CC를 통해 조율되었습니다. 공식 및 커뮤니티 참고 자료:
Hydroph0bia(Insyde H2O를 비꼬는 말장난)라고 불리는 CVE-2025-4275는 Insyde H2O 플랫폼을 기반으로 구축된 UEFI 호환 펌웨어에 영향을 미치는 Secure Boot 우회 취약점입니다. 이 취약점은 펌웨어 업데이트 하위 시스템의 설계 결함에서 비롯됩니다. 신뢰할 수 있는 드라이버가 휘발성 NVRAM 변수에 로드하도록 의도된 서명 인증서를, 공격자가 비휘발성 변수로 미리 채워 넣을 수 있으며, 이로 인해 펌웨어가 마치 Insyde가 직접 서명한 것처럼 임의의 외부 코드를 신뢰하게 됩니다.
이 취약점이 특히 큰 영향을 미치는 이유는 그 단순함과 광범위한 적용 범위가 결합되어 있기 때문입니다. 익스플로잇에는 EFI 시스템 파티션에 파일을 쓰고 NVRAM 변수를 생성할 수 있는 로컬 관리자 권한만 있으면 충분하며, 2025년 6월 10일 이전에 빌드된 Insyde H2O 펌웨어를 실행하는 모든 시스템에 영향을 미칩니다. 이 공격은 OEM에 구애받지 않으므로 Acer, Dell, Framework, Fujitsu, HP, Huawei, Lenovo 및 Insyde 기반 펌웨어를 출하하는 기타 모든 벤더에 광범위하게 적용됩니다.
UEFI는 NVRAM으로 알려진 비휘발성 변수 저장소에 대한 추상 인터페이스를 제공합니다. 이 인터페이스의 오랜 특이점 중 하나는 주어진 이름과 GUID를 가진 비휘발성 변수가 동일한 식별자를 가진 휘발성 변수와 공존하며 이를 가릴 수 있다는 점입니다. 코드가 (신뢰할 수 있는 드라이버에 의해 런타임에 생성된) 휘발성 변수를 기대하지만 동일한 이름의 비휘발성 변수가 이미 존재하는 경우, 비휘발성 버전이 대신 사용될 수 있습니다. 때때로 NVRAM 변수 섀도잉이라고 불리는 이 동작이 이 취약점의 근간입니다.
Insyde H2O의 펌웨어 업데이트 하위 시스템은 드라이버 간에 서명 인증서를 전달하기 위해 두 개의 NVRAM 변수에 의존합니다:
예상되는 흐름에서 두 변수는 모두 펌웨어 업데이트 과정에서 BdsDxe에 의해 휘발성으로 생성됩니다. 그런 다음 SecurityStubDxe가 이들을 사용하여 isflash.bin이 실행되기 전에 Insyde의 인증서로 서명되었는지 검증합니다. 핵심 결함은 SecurityStubDxe가 이 변수들의 내용을 신뢰하기 전에 해당 변수가 휘발성인지 비휘발성인지 검증하지 않는다는 점입니다.
CVE-2025-4275의 근본 원인은 SecurityStubDxe가 GetVariable 런타임 서비스를 직접 호출하는 대신 일반 라이브러리 함수를 사용하여 SecureFlashSetupMode와 SecureFlashCertData를 읽는다는 점입니다. 이는 신뢰할 수 있는 BdsDxe가 설정한 휘발성 변수와 공격자가 미리 채워 넣은 비휘발성 변수를 구분할 수 없음을 의미합니다(이 특정 기법에 대한 자세한 설명은 다음 저장소를 참조하십시오 "TheMalwareGuardian: Exploitation Technique NVRAM Variable Shadowing").
결과적으로 로컬 관리자 권한을 가진 공격자는 다음을 수행할 수 있습니다:
다음 부팅 시 SecurityStubDxe는 두 변수를 모두 찾아 합법적인 것으로 간주하고, 공격자의 인증서로 서명된 모든 UEFI 실행 파일을 신뢰하여 사실상 Secure Boot를 완전히 우회합니다. 펌웨어 수준의 상호작용, 하드웨어 접근, 또는 메모리 손상 프리미티브의 익스플로잇은 필요하지 않습니다. 공격 표면은 단순히 권한 있는 OS 세션에서 접근 가능한 UEFI NVRAM 쓰기 인터페이스입니다.
이 취약점은 Secure Boot, 펌웨어 비밀번호 및 기타 최신 보안 기능이 활성화된 Insyde H2O 기반 펌웨어를 실행하는 HUAWEI MateBook 14 2023에 대한 보안 검토 중에 발견되었습니다. 이러한 보호에도 불구하고 OS 수준의 관리자 권한만으로 완전한 익스플로잇이 달성되었습니다.
초기 익스플로잇 단계에는 다음과 같은 작은 Windows 도구(SFCD)가 필요합니다:
재부팅 후 SecurityStubDxe는 두 변수를 읽고 공격자의 인증서로 서명된 모든 것을 신뢰하기 시작합니다. 이 첫 단계의 실질적인 시연은 사용자 지정 인증서로 서명된 CrScreenshotDxe UEFI 드라이버를 로드하는 것으로, Secure Boot가 활성화된 상태에서 BIOS Setup 화면의 스크린샷을 성공적으로 캡처하여 펌웨어 환경에서의 임의 코드 실행을 증명합니다.
중요한 미묘한 차이: CVE-2025-3052에 존재하는 IhisiParamBuffer 변수는 Insyde 기반 플랫폼에서 종종 잠겨 있어 직접적인 익스플로잇을 더 어렵게 만듭니다. CVE-2025-4275는 그러한 변수가 쓰기 가능할 것을 요구하지 않으며 어떤 메모리 손상 프리미티브에도 의존하지 않습니다. 이 공격은 공격자가 NVRAM에 쓸 수 있는 모든 Insyde H2O 시스템에서 작동하며, 이는 패치되지 않은 펌웨어의 기본 동작입니다.
다음은 OS 수준 접근 권한을 가진 권한 있는 공격자를 가정하여, 초기 Secure Boot 우회 단계의 종단 간 공격을 설명합니다:
파트 1에서 달성한 Secure Boot 우회는 훨씬 더 큰 영향을 미치는 두 번째 단계, 즉 Insyde 펌웨어 업데이트 프로세스 자체를 하이재킹하여 DXE 볼륨을 완전히 탈취하는 길을 열어줍니다.
Insyde H2O의 펌웨어 업데이트 하위 시스템은 다음과 같이 작동합니다: OS 업데이터가 펌웨어 캡슐과 서명된 업데이터 애플리케이션(isflash.bin)을 EFI 시스템 파티션에 배치한 다음, SecureFlashInfo NVRAM 변수 내에 SecureFlashTrigger=1 플래그를 설정합니다. 다음 부팅 시 펌웨어는 트리거를 감지하고, PEI 중에 플래시 쓰기 보호를 비활성화하며, 결국 Insyde 인증서에 대해 검증한 후 isflash.bin에 대해 LoadImage를 호출합니다. 이는 CVE-2025-4275가 공격자로 하여금 교체할 수 있게 하는 바로 그 인증서 메커니즘입니다.
Secure Boot 우회에서 DXE 탈취로 권한 상승하기 위해서는 세 가지 추가 기술적 단계가 필요합니다:
세 가지 조건이 모두 충족되면 펌웨어는 업데이트 모드로 재부팅하고, 공격자의 사용자 지정 isflash.bin(공격자의 인증서로 서명되었으며, 이제 섀도잉된 SecureFlashCertData로 인해 신뢰됨)을 로드하며, SPI 플래시가 보호되지 않은 상태에서 이를 실행합니다. 이 위치에서 공격자는 DXE 볼륨에 임의의 내용을 쓸 수 있으며, OS 재설치와 대부분의 보안 제어를 견디는 방식으로 지속적 드라이버를 설치하거나 펌웨어 구성 요소를 수정할 수 있습니다.
Insyde는 2025년 6월 10일 패치 주기의 일부로 수정 사항을 발표했습니다. 이 수정 사항은 UEFITool로 생성된 보고서와 Diaphora를 통한 바이너리 디핑을 사용하여 두 개의 연속된 Dell BIOS 업데이트(하나는 패치 전, 하나는 패치 후)를 비교함으로써 분석되었습니다.
변경 사항은 세 개의 드라이버에 집중되었습니다:
이 수정은 공격자가 VariablePolicy 또는 LibSetSecureVariable을 우회할 수 없다는 가정 하에 효과적입니다. 그러나 VariablePolicy의 기본 EDK2 구현은 내부적으로 전역 플래그를 사용하며, 이는 파트 2에서 무력화된 InsydeVariableLock과 구조적으로 유사합니다. SPI 프로그래밍 하드웨어를 통한 물리적 NVRAM 편집 역시 이 수정을 완전히 우회할 수 있지만, 물리적 공격은 관례적으로 Secure Boot 위협 모델의 범위를 벗어납니다.
연구자가 권장한 개선책인 BdsDxe와 SecurityStubDxe 사이의 인증서 릴레이 메커니즘에서 NVRAM을 완전히 제거하는 방안은 Insyde가 시도했으나 회귀를 일으켜 향후 엔지니어링 주기로 연기되었습니다.
2025년 6월 10일 이전에 빌드된 Insyde H2O 기반 펌웨어를 출하하는 모든 벤더가 잠재적으로 영향을 받습니다. 공개 시점의 확인된 상태:
| 벤더 | 상태 |
|---|
| Dell | 수정됨 - 엠바고 종료 직후 BIOS 업데이트 출시 |
| Lenovo | 취약함 - 수정 발표됨, 2025-07-30부터 제공 |
| Framework | 취약함 - 공개 시점에 제공 예상 시기 미제공 |
| Acer | 공개 시점에 권고 또는 수정 발표 없음 |
| Fujitsu | 공개 시점에 권고 또는 수정 발표 없음 |
| HP | 공개 시점에 권고 또는 수정 발표 없음 |
| Huawei | 최초 테스트 장치 벤더 - 수정 상태 불명 |
비슷한 작업을 하고 계신가요? UEFI, 커널 보안, 익스플로잇 또는 다른 흥미로운 보안 주제를 연구하고 계신가요? 익스플로잇 개발, 기법 탐구에 도움이 필요하거나 단순히 아이디어를 교환하고 싶다면 주저하지 말고 연락해 주세요. 저는 항상 연구에 대한 논의, 도울 수 있는 부분에서의 지원, 그리고 흥미로운 프로젝트에서의 협업에 열려 있습니다. LinkedIn으로 편하게 연락해 주세요.