← All issues

[28] ModelProcess ASSERT promoted to MESSAGE_CHECK for duplicate identifier

Severity: Low | Component: WebKit ModelProcess | 69ff7c4

ModelProcessModelPlayerManagerProxy::createModelPlayer에서 renderer-supplied identifier에 대한 debug 전용 ASSERT를 release 빌드의 MESSAGE_CHECK로 격상한 diff로, Low로 평가되었습니다. deleteModelPlayer/unloadModelPlayer에도 대칭적인 check가 추가되었습니다.

Source/WebKit/ModelProcess/ModelProcessModelPlayerManagerProxy.cpp

+#define MESSAGE_CHECK(assertion) MESSAGE_CHECK_BASE(assertion, m_modelConnectionToWebProcess->connection())
...
- ASSERT(!m_proxies.contains(identifier));
+ MESSAGE_CHECK(!m_proxies.contains(identifier));

IPC로 전달된 identifier 검증을 debug 전용 ASSERT에만 의존하여, 실제 배포 바이너리에서는 경계 검사가 존재하지 않는 패턴.

HashMap::add는 key가 없을 때만 삽입하는 insert-if-absent 방식으로, ASSERT가 컴파일에서 제거된 상태에서 identifier가 충돌하면 삽입이 조용히 무시되고 기존 entry가 그대로 남습니다. crash 없이 state confusion이 유발됩니다.

ModelProcess는 비교적 신규 컴포넌트(ENABLE(MODEL_PROCESS))로, IPC surface에 대한 점검이 WebContent↔UIProcess 수준으로 축적되지 않은 상태입니다.

이 vulnerability는 WebContent(비신뢰)와 ModelProcess(model rendering을 담당하는 privileged auxiliary process) 사이의 IPC trust 경계를 약화시킵니다.