Deathray - 링크 하나로 Mac 화면을 멈추게 하는 WebGPU 문제

1 week ago 17

웹페이지의 WebGPU 코드가 브라우저 탭뿐 아니라 Mac의 데스크톱 화면까지 멈추게 하는 문제로, 링크를 여는 것만으로 발생하며 재시작이 필요함 macOS Tahoe를 실행하는 M 시리즈 MacBook에서 Chrome, Firefox, Safari 모두 재현됐으며, 다른 Mac의 영향 여부는 확인되지 않음 GPU에서 끝나지 않는 작업이 화면 표시를 담당하는 WindowServer까지 막는 방식으로, SSH 접속은 가능하지만 화면은 사용할 수 없고 이후 감시 장치가 재시작을 유발함 Apple은 제보를 재현하고 수정 의사를 밝혔다가, 한 달 뒤 보안상 영향이 없다고 판단해 다른 팀의 개선 검토 대상으로 넘김 원격 코드 실행이나 데이터 유출에 해당하는 문제는 아니지만, 링크를 열어도 컴퓨터 전체가 영향을 받지는 않을 것이라는 기대와 Apple의 보안 문제 분류 사이에 간극을 드러냄 주의: 원문의 데모 버튼은 Mac 화면을 실제로 멈추게 할 수 있으며, 재시작 후 같은 탭이 복원되면 문제가 다시 발생할 수 있음 재현 범위와 사용자에게 나타나는 증상 Deathray는 웹사이트가 제출한 WebGPU 셰이더로 Mac의 그래픽 처리를 멈추게 함 피해자는 링크를 클릭하는 것만으로 영향을 받을 수 있으며, 데스크톱 UI는 재시작할 때까지 사용할 수 없게 됨 실제 테스트 범위는 Tahoe를 실행하는 M 시리즈 MacBook이며, Chrome·Firefox·Safari에서 재현됨 다른 Mac도 영향을 받는지는 확인되지 않음 테스트한 다른 운영체제에서는 Mac과 같은 장애가 재현되지 않음 탭이 멈추고 시스템이 느려질 수 있지만, 탭을 닫으면 정상으로 돌아옴 환경에 따라 결과가 달라질 수 있으므로 데모를 실행하려면 컴퓨터가 멈출 가능성을 감수해야 함 WebGPU 셰이더가 WindowServer를 막는 과정 WebGPU는 웹사이트가 기기의 GPU에서 실행할 셰이더를 제출할 수 있는 브라우저 내장 API임 WebGL을 대체하려는 기술이며, 대부분의 운영체제에서 주요 브라우저가 지원함 Deathray 전체는 작은 파일 하나에 들어가며, 대부분은 실행을 위한 보조 코드이고 핵심은 셰이더임 전체 소스 코드를 확인할 수 있음 컴퓨트 셰이더는 증가식이 없는 for(var i = 0u; i < 1;) 루프에서 data[i+1] = data[i]를 끝없이 실행함 같은 벡터를 버퍼 안에서 반복 복사하며 무한히 바쁜 대기 상태를 유지함 버텍스 셰이...

Read Entire Article