[8] [WebKit] Validate firstPartyForCookies on StartDownload/ConvertMainResourceLoadToDownload IPC
이 패치가 High로 평가된 이유는, 손상된 WebContent process에서 전달되는 임의의 firstPartyForCookies URL을 검증 없이 수락하던 NetworkProcess의 download 시작 IPC에 origin 검증이 추가되었기 때문입니다. 패치 이전에는 NetworkProcess가 공격 대상 사이트의 SameSite 쿠키를 공격자가 조작한 download 요청에 그대로 첨부했습니다.
NetworkConnectionToWebProcess::startDownload와 convertMainResourceLoadToDownload는 전달된 firstPartyForCookies가 호출한 WebContent process가 정당하게 처리할 수 있는 origin인지 검증하도록 변경되었습니다.
Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp
Download 경로에서의 IPC origin 스푸핑: 손상된 renderer가 firstPartyForCookies를 위조하면, NetworkProcess가 피해자 origin의 쿠키를 공격자가 지정한 요청에 첨부합니다.
Patch Details
download IPC를 수신하는 두 handler 모두에 MESSAGE_CHECK가 추가되었습니다. 전달된 first-party URL이 해당 WebContent process가 실제로 로드한 origin인지 검증합니다. 나머지 요청 필드는 기존과 동일하게 전달됩니다.
Background
firstPartyForCookies는 네트워크 계층이 쿠키 귀속과 SameSite 계산에 활용하는 URL입니다. 손상된 renderer를 가정하는 threat model에서는, NetworkProcess로 유입되는 모든 필드를 해당 연결이 실제로 로드한 origin 목록과 대조해 재검증해야 합니다.
Analysis
손상된 renderer는 firstPartyForCookies()가 공격 대상 사이트를 가리키는 ResourceRequest를 조작해 Messages::NetworkConnectionToWebProcess::StartDownload를 통해 전송했습니다. NetworkProcess는 이 URL을 HTTP 요청 조립에 활용했고, NetworkStorageSession은 해당 origin의 쿠키(SameSite=Strict 포함)를 요청에 첨부했습니다. 결과적으로 이 download는 피해자 origin에 대한 정상적인 top-level navigation에서 비롯된 것처럼 전송되었고, 사용자의 인증 세션을 그대로 이용했습니다.
이 primitive는 privileged downloader를 통한 CSRF에 해당합니다. 피해자 origin에서 쿠키 인증이 필요한 GET 요청은 sandbox 내의 renderer에서도 도달 가능합니다. 한편 download 경로는 응답 결과를 피해자 origin 컨텍스트로 디스크에 저장할 수 있다는 점에서 특히 강력합니다.
이 취약점은 download의 쿠키 귀속 측면에서 WebContent → NetworkProcess 신뢰 경계를 약화시켰습니다.
Audit directions
firstPartyForCookies,requestingOrigin,topOrigin을 처리하는 모든 NetworkProcess IPC handler. 해당 연결의 known origin 목록에 대해MESSAGE_CHECK없이 이들 필드를 다루는 경우를 점검해야 합니다.DownloadManager호출 지점과 변환 경로.ConvertMainResourceLoadToDownload역시 동일한 취약점이 존재했습니다.WebPolicyClient의 PolicyAction::Download 등 인접한 변환 경로도 함께 점검해야 합니다.- 자격 증명이 첨부된 cross-process 로드. PCM, beacon, prefetch는 모두 WebContent에서 도달 가능한 경로입니다. 이들이 origin 귀속을 올바르게 재검증하는지 살펴볼 필요가 있습니다.