[12] [LDM] Ensure temporary pages use the correct Font Parser
Severity: Medium | Component: WebCore editing sanitization / SVGImage | 9fe9df5
paste/drag-drop 정제(sanitization) 또는 SVG 이미지 렌더링을 위해 생성된 임시 페이지에서 Lockdown Mode font-parsing이 우회됩니다. GPU process의 MESSAGE_CHECK를 통해 WebContent process 종료 형태로 드러나며, 영향 범위가 LDM 사용자로 한정되어 Medium으로 평가됩니다.
Source/WebCore/editing/markup.cpp
+ DownloadableBinaryFontTrustedTypes fontTrustedTypes = DownloadableBinaryFontTrustedTypes::Any;
if (destinationDocument) {
if (RefPtr destinationPage = destinationDocument->page()) {
fontGenericFamilies = destinationPage->settings().fontGenericFamilies();
+ fontTrustedTypes = destinationPage->settings().downloadableBinaryFontTrustedTypes();
}
}
+ page->settings().setDownloadableBinaryFontTrustedTypes(fontTrustedTypes);
Source/WebCore/svg/graphics/SVGImage.cpp
m_page->settings().fontGenericFamilies() = parentSettings->fontGenericFamilies();
+ m_page->settings().setDownloadableBinaryFontTrustedTypes(parentSettings->downloadableBinaryFontTrustedTypes());
Patch Details
createPageForSanitizingWebContent와 SVGImage::dataChanged 양측 모두에서, 부모/대상 페이지의 downloadableBinaryFontTrustedTypes 설정이 임시 내부 Page로 전달되도록 변경되었습니다. LayoutTest는 LDM process 내에서 OpenType blob을 포함한 SVG @font-face를 로드하는 케이스를 검증하며, API test는 LDM 대상 web view에 webarchive를 붙여넣을 때 process 종료가 발생하지 않는지를 확인합니다.
부모 페이지에서 파생/보조 페이지로 보안 정책 설정이 전달되지 않아, 보조 페이지가 process 모드 제한(Lockdown Mode font parsing)을 우회할 수 있는 패턴.
Background
Lockdown Mode는 Apple이 제공하는 opt-in 기능으로, exploit primitive로 이어질 수 있는 것으로 알려진 기능들을 비활성화하거나 강화합니다. SafeFontParser는 LDM에서 적용되는 제한적 font parser로, OpenType/TrueType 구조의 일부 subset만 허용하고 위험한 테이블은 거부합니다. DownloadableBinaryFontTrustedTypes는 Settings enum으로, Any는 표준 parser를 선택하고 LDM 강제 값은 SafeFontParser를 선택합니다. createPageForSanitizingWebContent는 붙여넣기/드래그-드롭/web-archive 마크업 파싱을 위해 임시 Page를 생성합니다. SVGImage는 자체 m_page를 소유하며, 이 페이지의 document가 SVG를 이미지로 파싱하고 격리된 환경에서 렌더링하는 역할을 담당합니다. MESSAGE_CHECK는 검증 실패 시 요청을 보낸 WebContent process를 종료하는 IPC 검증 매크로입니다.
Analysis
이들 임시 페이지는 부모 설정의 일부(dark appearance, font generic families, layer-based SVG engine)만을 복사했고, downloadableBinaryFontTrustedTypes는 전달하지 않았습니다. 그 결과 기본값인 Any가 적용되어, LDM이 활성화된 사용자 페이지에서도 표준 시스템 parser가 선택되는 상황이 발생했습니다.
Aaaa Aaa Aaaaa Aaa Aaaaaa Aaaaaa Aaaaaaaa Aaaaaaaaaaaaa Aaa Aaaaa Aa Aaaaa Aaaaa Aaaaaaaaaa Aaaaaaaa Aa Aaaaaaa Aaaaaa Aaa Aaa Aaaaaa Aaa Aaa Aaaaaaaa Aaaaaaa Aaa Aaaaaaaa Aaa Aaaaa Aaa a Aa Aaaaaaaaaaaaaaa Aaaaaa Aaa Aaaa Aa Aaa Aaaaaa Aaaaa Aaaaaaaaaaaaaaa Aaa Aaaa Aaaaaaaaaa Aaaaaaaa Aaaaaa Aaa Aaaaa Aaaaaaaa Aaa Aaaaa Aa Aaaaa Aa Aaa Aaa Aaaaaaaaaa Aa Aa Aaaa Aaaaaa Aaa Aaaa Aaaa Aaaaa
a Aaaaaaaaaaaaaa Aaaaaaaaaa Aaaaaaa Aaa Aaaaaaaa Aaaa Aaaaaaaaaaaa Aa Aaa Aaaaaaa Aa Aaaaaaaaaaaaa Aaa Aaaaaaaaaa Aaa Aaa Aaaa Aaa Aa Aaaaaaaaaaaaaaaa a Aaa Aaaa Aaaaaaa
🔒Examines how a Lockdown Mode hardening can be silently bypassed on auxiliary code paths, and why a cross-process IPC check — not the WebContent-side font code — is what surfaced the bug.
더 확인하려면 구독해 주세요
Audit directions
a Aaaa Aaaaaaaaaaa Aaa Aaaaa Aaaa Aa Aaaaaaa Aaaa Aaaaa Aa Aaaaaaaaaaaaaaaaaaaaaaaaaaa Aaaaa Aaa Aaaa Aa Aaa Aa Aaaaaa Aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa Aaaaaaaaaaaaaaaaaaaaaaaa Aaaaa Aaa Aa Aaa Aaaa Aaaaa Aaaa Aaaa
a Aaaaaaaaaaaaaaaa Aa Aaaa Aa Aaa Aaaaaaa Aaaaaaaaaaaaaaa Aaa Aa Aa Aaa Aaaaaaaa Aaa Aa Aaa Aaaaaaaaaaaaaaa Aaaaaa Aaaaaa Aaaaaaaaaaaaaa Aaaaa Aaaaaaaaaa a Aaaa Aa Aaa Aaaa Aaaa
a Aaaaaaaaaa Aaaaa Aa Aa Aaaa Aaa Aaa Aaa Aaa Aaaaaaaa Aaaaaaaaaaaaaaaaaaaaaaaa Aaaa Aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa Aaaa Aa Aa Aaa Aaaa Aaaa
a Aaaaaaaaaaaaaaaaaaaaaaaa Aa Aa Aaa Aaa Aa Aaaaaaaaaa Aaaa Aaaaaa Aaa Aaaa Aaa Aaa Aaaa Aaaaa
🔒Multiple reusable audit patterns for setting-propagation gaps across derived `Page` constructions and cross-process IPC policy mismatches, with concrete starting points.
더 확인하려면 구독해 주세요