
CVE-2026-74970 · Firefox WebRender의 Fission 사이트 격리 우회
심각도 보통(Moderate). CWE 862 및 CWE 284. Firefox 154 및 ESR 153.1에서 수정됨. Bugzilla 2056558.
Fission에서 각 콘텐츠 프로세스는 PipelineId 네임스페이스를 소유합니다. 이는 wr::PipelineId의 상위 32비트입니다. WebRenderBridgeParent::AddPipelineIdForCompositable는 GPU 프로세스에서 실행됩니다. 이 함수는 루트 파이프라인 가드와 자체 집합의 구성원 여부를 확인했습니다. 그러나 PipelineId 네임스페이스가 전송 프로세스에 속하는지는 전혀 확인하지 않았습니다. 같은 파일의 이미지·폰트·블롭 키 경로는 이미 이 검사를 시행하고 있습니다. 손상된 콘텐츠 프로세스는 다른 프로세스 네임스페이스에 PipelineId를 등록하고 공유 관리자에서 해당 출처의 비동기 이미지 파이프라인을 덮어쓸 수 있습니다.
리소스 키 경로가 시행하는 MatchesNamespace 검사가 PipelineId 경로와 RemovePipelineIdForCompositable에는 누락되어 있습니다. AddAsyncImagePipeline은 고유성을 MOZ_ASSERT로만 보호합니다. 이는 릴리스 빌드에서는 no-op입니다. 따라서 공유 AsyncImagePipelineManager는 중복을 거부하지 않고 희생자 파이프라인을 조용히 덮어씁니다.

위협 모델은 손상된 콘텐츠 프로세스입니다. PoC는 XRE_IsContentProcess로 보호되는 콘텐츠 측 패치입니다. 이 패치는 PipelineId 네임스페이스를 위조합니다. WebGL 캔버스와 교차 출처 OOP(out-of-process) iframe이 있는 테스트 페이지가 함께 제공됩니다.
apply poc.patch to mozilla-central and build
MOZ_POC_FORGE_WR_NAMESPACE=999999 ./mach run --temp-profile poc.html
릴리스 빌드에서 관찰되었습니다.
[POC-2056558] ACCEPTED cross-namespace PipelineId: sender-namespace=4 pipeline-namespace=999999 (should have been rejected)
교차 출처 렌더링 혼동 및 교차 탭 서비스 거부(DoS). 이는 Fission 사이트 격리의 인가 우회입니다. 메모리 손상이 아닙니다. 다운스트림 소비자는 null 검사와 참조 카운팅으로 보호되므로 코드 실행으로 이어지지 않습니다.
리소스 키 경로가 사용하는 것과 동일한 네임스페이스 소유권 검사를 시행합니다.
if (!MatchesNamespace(aPipelineId)) {
return IPC_FAIL(this, "PipelineId namespace does not belong to the sending process");
}
Abdulaziz Alasaiqah · https://azoz.my/writeups.html