[11] libpas MTE Lockdown Mode initialization bypass
Severity: Medium | Component: libpas (bmalloc) MTE configuration | 1b1e4d0
Lockdown Mode를 활성화한 사용자 환경에서도 CaptivePortal WebContent process의 MTE hardening이 조용히 비활성화되는 문제입니다. 직접적인 exploitation으로 이어지는 결함은 아니지만, 신뢰할 수 없는 네트워크 트래픽을 처리하는 process에서 defense-in-depth mitigation이 약화된다는 점에서 Medium으로 평가합니다.
process에 적용된 sandbox 제한으로 인해 Lockdown Mode 상태를 확인하는 sysctl 호출이 항상 0을 반환하는 문제가 있었습니다. 이 fix에서는 CaptivePortal WebContent process를 대상으로 process 이름을 확인하는 fallback 로직이 추가되었습니다.
Source/bmalloc/libpas/src/libpas/pas_mte_config.c
uint64_t ldmState = 0;
size_t sysCtlLen = sizeof(ldmState);
- if (sysctlbyname("security.mac.lockdown_mode_state", &ldmState, &sysCtlLen, NULL, 0) >= 0 && ldmState == 1)
+ const char* lockdownModeProcName = "com.apple.WebKit.WebContent.CaptivePortal";
+ bool isLockdownModeWebContentProcess = !strncmp(getprogname(), lockdownModeProcName, strlen(lockdownModeProcName));
+ if ((sysctlbyname("security.mac.lockdown_mode_state", &ldmState, &sysCtlLen, NULL, 0) >= 0 && ldmState == 1) || isLockdownModeWebContentProcess)
config->is_lockdown_mode = true;
else
config->is_lockdown_mode = false;
Patch Details
getprogname()으로 얻은 process 이름이 "com.apple.WebKit.WebContent.CaptivePortal"과 일치하는 경우, sysctl 결과와 무관하게 is_lockdown_mode를 true로 설정하는 보조 조건이 추가되었습니다. 두 조건은 OR로 연결됩니다.
권한이 제한된 system call의 silent failure로 인해 security hardening 기능이 무조건적으로 비활성화되는 패턴.
Background
ARM MTE(Memory Tagging Extensions)는 메모리 할당에 무작위 태그를 부여하고 모든 접근 시 이를 검증하는 하드웨어 기능으로, use-after-free와 out-of-bounds 접근을 하드웨어 수준에서 탐지합니다. Lockdown Mode(LDM)는 고위험 사용자를 위해 추가적인 hardening을 활성화하는 iOS/macOS의 선택적 보안 모드입니다.
WebKit의 libpas allocator에서는 성능상의 이유로 WebContent process의 MTE tagging이 기본적으로 비활성화되어 있습니다. 다만 Lockdown Mode가 활성 상태이거나 process가 EnhancedSecurity 변형인 경우에는 "hardened" 상태로 간주하여 MTE가 다시 활성화됩니다. CaptivePortal WebContent process는 captive portal 네트워크 인증 흐름에서 표시되는 web content를 처리합니다. 이는 신뢰할 수 없는 네트워크 환경으로, exploitation 위험이 상대적으로 높습니다.
Analysis
security.mac.lockdown_mode_state를 조회하는 sysctlbyname 호출은 WebContent process에 적용된 sandbox 정책에 의해 차단되었습니다(commit 메시지에도 이 내용이 명시되어 있습니다). 이 호출은 항상 음수 값을 반환했으므로 >= 0 조건이 항상 실패했고, ldmState는 실제로 읽히지 않았습니다. 결과적으로 기기가 실제로 Lockdown Mode 상태에 있더라도 config->is_lockdown_mode는 항상 false로 설정되었습니다.
is_lockdown_mode는 이후 MTE tagging 활성화 여부를 결정하는 데 사용됩니다. 이 값이 false에 고정되면서 CaptivePortal WebContent process는 MTE hardening을 전혀 적용받지 못했고, Lockdown Mode 사용자에게 제공되어야 할 핵심 exploit mitigation이 무력화되었습니다.
Aaaaaa Aaaa Aaaaaaa Aa Aa Aaa Aaa Aaa Aaa Aaaaa Aa Aaa Aaaa Aaa Aaa a Aaaa Aaa Aaaaa Aaa Aaaa Aaa Aa Aaaaaa Aaa Aaa Aaa Aaaaa Aaa Aaaa Aa a Aaaa Aaa Aaaa Aaaaaaaaaaa Aaa Aaaa Aaaaa
a Aaaaaaaaaaaaaa Aaaaaaaa Aaaa Aaaa Aa Aaaaaaaaaaaaa Aaaaaaaaa Aaa Aaaaaaa Aaaa Aaaaaaaaaaaaa Aaaaaaaaaa Aaaaaaaaa Aaa Aaaaaa Aaaaaaaaaa Aaaaaaaaaaaaaa Aaaaaaaaa Aaa Aaa Aaa Aaa Aa Aaaaa Aaaa Aaa Aaaaaaaaaaaa Aaa Aaa Aaa Aaaa Aaaaaaaaaaaaa Aaaaaaaa Aaa a Aa Aaaaaaa Aaaaaa Aaaa Aaaa Aaaa Aaaaaa Aaaaaaa Aaaaaa Aaa Aaaaa
Aaaaa Aaa Aaaaaaa Aa Aa Aaa Aaa Aaaaaaaaaa Aaaaaaaaaaa Aaaa Aaa a Aa Aaaaaa Aaa Aa Aaaa Aaaa Aaaaaa Aaaaaa Aaaa Aaa Aaaaaaaa a Aa Aaa Aaaa Aaaaa
🔒Explores the downstream impact of this silent mitigation failure and what it means for exploit difficulty in the affected process
더 확인하려면 구독해 주세요
Audit directions
a Aaaaaaaaa Aaaa Aa Aaaaaaaa Aaaa Aaaaaa Aaaaa Aaaaaaaa Aa Aaaa Aaaa Aaaaa Aaaaaaaaaaaaaaaa Aaa Aa Aa Aaa Aa Aaaaaaaa Aaa Aaaa Aaaaaa a Aaaaaaaa Aa Aaa Aaa Aaaaaa Aaaaaaaa Aaa Aaaa Aa Aaa a Aaa Aaa Aa Aaaaa Aaa Aaaa Aaaa Aaaaaaaaaaaaaaaaaa a Aa Aa Aaaa Aa Aaaaaaaaaaaaaa Aaa Aaaaa Aa Aaa Aaa Aaa Aaaa Aa Aa a Aa Aaa Aaaa Aaa Aaaaaa
a Aaaaaaaaaaaa Aaaaaa Aaaaaaaaa Aa Aaaaaaaaaaaaaa Aaaaaa Aaaa Aaaaaaaaa Aaaaaaa Aaaaaaaa Aaa Aaaaaaaaaa Aaaaaaaaaa Aaa Aaa Aaa Aaa Aa Aaa Aaaa Aaaaaa Aaaaaaa Aaa Aaaaaa Aaaaaaa Aaa Aaaaaaaaaaa Aaaa Aaa Aa Aaa Aa Aa Aaa Aaa Aaaa Aaaa Aaaaaaaaa a Aaaa Aaaa Aaaaa Aaaaaa Aaaaaaaaaaaaaaaaaaaaaaaaa Aaaaaaaaaaaa a Aaaaaaaaaaaaaaaaa Aaaaaaa Aaaaaaaaaaaa Aaa Aaa Aaaaa Aaa Aaa Aaaaa
a Aaaaaaaaaaa Aa Aaaaaaa Aa Aaa Aaa Aaaaaa Aaaaaaa Aaaaaaa Aa a Aaaa Aaaaaaa Aaa Aaaaa Aaaaa Aaa Aaa Aaa Aaa Aaaaa a Aa Aaa Aaa a Aaaa Aaaaaaaa Aaa Aaaa Aaaaaa Aaaaaaaaaaaaaaaa Aa Aa Aaaaaaaa Aa Aaa Aa Aaaaa Aaa Aaaaaaaa Aaaaa Aaa a Aaa Aaaaaa
🔒Multiple audit patterns identified around silent security-feature initialization failures in sandboxed processes
더 확인하려면 구독해 주세요