WebGPU 셰이더 하나로 Mac을 멈추는 Deathray, Apple은 보안 문제 아니라고 판단

The Deathray: A simple way for an untrusted site to freeze a Mac

신뢰할 수 없는 사이트의 WebGPU 셰이더가 Mac의 GPU를 무한 루프로 점유해 WindowServer를 마비시키고, 결국 커널 패닉으로 재시작하게 만드는 Deathray가 공개됐다. Chrome, Firefox, Safari 모두에서 재현되지만 다른 OS에서는 발생하지 않는다. 제보자는 7월에 Apple에 알렸으나, Apple은 보안 영향이 없다며 수정 우선순위를 낮췄다.

결국 무한 루프를 탐지하는 것은 승산 없는 게임이다. 정지 문제를 피할 수는 없기 때문이다.
  1. socalgal2

    이건 WebGL이 출시된 2011년부터 있어온 문제입니다. 명세에도 문서화되어 있고요. 이건 스스로 교정되는 문제예요. 어떤 사이트에 갔더니 컴퓨터가 얼어붙었다, 그러면 다시는 그 사이트에 안 가게 되죠.

    데이터가 도난당하는 것도 아니고 프라이버시가 침해되는 것도 아닙니다. 그냥 범인이 관객을 잃을 뿐이에요.

    WebGL을 끄면 = Figma도, Canva도, Google Maps도 못 씁니다. 스스로 교정되는 사이트 몇 개쯤은 감수할 만하죠. 증거로, 이게 가능해진 지 15년이 지났는데 세상이 멸망하지도 않았고 인터넷 전체가 컴퓨터를 얼려붙이지도 않잖아요.

    게다가 이건 따지고 보면 MacOS 버그입니다. Windows와 Linux에는 명령이 너무 오래 걸리면 GPU를 강제로 재시작하는 GPU 모니터가 있었어요. Windows는 WebGL 출시 전부터, Linux는 몇 년 후부터요. Mac은 아직도 과도한 GPU 사용에서 복구되지 않습니다.

  2. washadjeffmad

    90년대, 웹이 비상업적이고 재미있었던 시절에 저는 'Don't Click Me' 링크를 하나 만들었어요. 그 링크는 ('정말 정말 확실합니까?' 대화상자를 연속으로 띄운 뒤) 제가 찾을 수 있는 모든 역사적인 브라우저 버그를 악용한 '브라우저 테스트' 페이지를 로드했죠. 무한 팝업, 빠져나올 수 없는 대화상자, ActiveX 괴상한 동작, 온갖 멈춤과 크래시, 그야말로 총집합이었습니다.

    컴퓨터가 크래시 나지 않으면, 결국 'Internet Explorer를 안 써서 축하합니다!'라고 적힌 팝업 하나를 띄웠어요. 그 증오 메일들을 아직도 갖고 있었으면 좋겠네요.

  3. gucci-on-fleek

    어라, 이게 제 Linux Firefox를 완전히 크래시 냈는데, 이런 일은 처음 겪어봤어요. 적어도 데스크톱의 다른 프로그램들은 전혀 영향받지 않은 것 같네요.

  4. nottorp

    기껏해야 서비스 거부 공격이죠. 다만 그 사이트에 다시 안 가면 쉽게 피할 수 있다는 점이 다르지만요.

    웃긴 건, 문제를 설명하는 그 페이지 자체가 firefox/mac에서 회전하는 방사능 위험 표시가 나오는 동안 미친 듯이 버벅거린다는 거예요.

  5. xoa

    물론 용도가 있긴 하겠죠, 특히 누군가 정말로 웹 브라우저 안에서만 게임을 하거나 복잡한 연산 작업을 하고 싶어 할 때는요. 그래도 브라우저 벤더들이 점점 더 많은 하드웨어 공격 표면을 서둘러 노출하려는 모습, 특히 Google이 무슨 수를 써서라도 '운영체제 위의 운영체제'가 되려고 작정한 듯한 태도에는 꽤 조심스러워지고 지쳐버렸다는 걸 인정합니다. 이번 경우를 보고 예전에 Firefox에서 dom.webgpu.enabled와 pdfjs.enableWebGPU를 false로 설정해둔 게 떠올랐어요. WebGL을 비활성화한 것과 마찬가지로요. 뭔가 엄청 멋진 걸 보게 되면 그때만 켜면 되겠지 싶었는데, 지금까지 그럴 일이 없었네요. 살짝 관련된 얘기로, 오랜만에 사용 가능한 설정들을 다시 훑어보니 dom.webgpu.blocked-domains가 있고 항목은 "easyeda.com,*.easyeda.com" 하나뿐이던데, 이게 뭔지 궁금하네요?

  6. tetrahedon

    WebGPU에는 이런 게 더 숨어 있습니다. 일부는 iOS에서도 작동하고요. Apple에 보고했지만 보안 관련성이 없다며 닫혔습니다.

  7. StilesCrisis

    Metal은 C++14를 기반으로 하므로 셰이더 안에 Duff's Device를 작성할 수 있습니다. 여러 Mac에서 시도해봤는데 컴파일러에 온갖 치명적 오류를 일으키지만, 실제 커널 패닉은 한 번도 없었어요. (KodeLife에서 재현하는 건 꽤 간단합니다)

  8. monster_truck

    그 유니코드 문자열이 iOS 7을 박살내서 SSID로 설정하면 기기가 루프에 빠졌던 거 기억나세요? 좋은 시절이었죠.

이 날의 다른 글

2026-09-10