[21] [WebKit] Add webcontent_sandbox_entitlements to Mac Catalyst variant
diff에서 webcontent_sandbox_entitlements가 maccatalyst_process_webcontent_shared_entitlements에 추가된 사실을 근거로 Low로 평가됩니다. 패치 이전에는 Catalyst에서 실행되는 모든 WebContent process가 권한이 없는 sandbox state flag를 변경하려 시도했습니다. 이 과정에서 kernel 또는 sandboxd에 의해 강제 종료되었고, embedded content가 로드되지 않는 현상으로 이어졌습니다.
공유 helper가 Mac Catalyst 경로에 연결되었습니다. Runtime 코드 변경은 없습니다.
Source/WebKit/Scripts/process-entitlements.sh
Mac Catalyst sandbox 강화 regression: entitlement 누락으로 인해 모든 WebContent process가 sandbox 초기화 중 강제 종료되었습니다.
Patch Details
Catalyst entitlement 경로가 빌드 시점에 기존 webcontent_sandbox_entitlements helper를 호출하도록 수정되었습니다.
Background
BlockIOKitInWebContentSandbox, BlockUserInstalledFonts, EnableExperimentalSandbox 같은 sandbox state flag를 변경하려면 com.apple.private.security.mutable-state-flags 또는 enable-state-flags entitlement가 필요합니다. 해당 entitlement가 없으면 kernel 또는 sandboxd가 해당 작업을 거부하고, 호출 프로세스를 강제 종료합니다.
Analysis
이러한 권한을 부여하는 공유 helper는 Mac 및 iOS WebContent variant에는 연결되어 있었지만, Catalyst variant에는 포함되지 않았습니다. 결과적으로 Catalyst에서 실행되는 모든 WebContent process(macOS의 News.app 등)가 권한 없이 state flag 변경을 시도했습니다. sandbox 초기화 중 crash가 발생했습니다.
이 문제는 sandbox 강화 regression이자 denial of service에 해당합니다. 수정은 빌드 시점에만 적용됩니다.
Catalyst WebContent의 가용성이 저하되고, runtime mutator가 적용해야 했던 sandbox 강화 조치도 함께 제거됩니다.
Audit directions
- Entitlement parity across variants. 모든
*_process_*_entitlementshelper를 대상으로, 공통 강화 helper의 누락 여부를 점검합니다. - Runtime state-flag mutators entitlement가 거부될 경우 fail-soft 동작이 구현되어 있는지 확인합니다.