셰이더 사전 컴파일에 대한 논의가 커뮤니티에서 서서히 무르익어갈 무렵, 드미트리의 팀은 전혀 예상치 못한 곳에서 공격을 받았다. 그것은 경쟁사의 도발도, 커뮤니티의 비판도 아니었다. 학계에서 날아온, 조용하지만 서슬 퍼런 한 편의 논문이었다.
논문은 한 명문 대학의 컴퓨터 보안 연구실에서 발표되었고, 그 제목은 충격적이었다.
“GPU를 이용한 부채널 공격(Side-Channel Attack)에 대한 연구: WebGPU는 당신의 비밀번호를 훔칠 수 있는가?”
논문은 순식간에 기술 미디어와 보안 커뮤니티로 퍼져나갔다. 드미트리는 침착하게 논문을 다운로드하여 팀원들과 함께 정독하기 시작했다.
논문의 내용은 다음과 같았다.
연구팀은 교묘하게 설계된 컴퓨트 셰이더를 만들었다. 이 셰이더는 직접적으로 다른 웹사이트의 메모리에 접근하지는 않는다. 대신, 시스템의 공유 자원인 ‘GPU 캐시 메모리’의 미세한 동작 시간 차이를 측정한다.
그들은 두 개의 브라우저 탭을 열었다.
한쪽 탭(공격자 탭)에서는 그들의 악성 셰이더가 계속해서 실행되며, 특정 캐시 라인을 반복적으로 사용하고 그 접근 시간을 측정한다.
다른 한쪽 탭(피해자 탭)에서는 사용자가 평범하게 비밀번호를 입력한다.
사용자가 키보드를 누를 때마다, 운영체제는 그 문자를 화면에 렌더링하기 위해 GPU를 사용한다. 이 과정에서 사용자의 키 입력에 따라 GPU 캐시의 사용 패턴이 미세하게 달라진다.
공격자 탭의 셰이더는 바로 이 순간을 포착한다. 다른 프로세스(키 입력 렌더링)가 자신이 사용하던 캐시 라인을 건드리면, 다음 접근 시간이 아주 미세하게 느려진다.
연구팀은 이 나노초 단위의 시간 차이, 즉 ‘그림자’와 같은 흔적을 수백만 번 측정하고 통계적으로 분석하여, 사용자가 어떤 키를 눌렀는지를 높은 확률로 유추해내는 데 성공했다.
논문의 결론은 섬뜩했다.
“WebGPU가 제공하는 강력한 컴퓨팅 능력과 정밀한 타이머는, 이론적으로만 가능했던 GPU 기반 부채널 공격을 웹이라는 현실 세계에서 실현 가능한 위협으로 만들었다. 이는 웹 플랫폼의 근본적인 보안 모델에 대한 심각한 도전이다.”
연구실에는 무거운 침묵이 흘렀다.
이것은 Dawn의 버그가 아니었다. 이것은 현대 GPU 아키텍처 자체의 태생적인 취약점이었다. 그리고 WebGPU는 의도치 않게, 그 취약점을 공격할 수 있는 날카로운 창을 웹 개발자들에게 쥐여준 셈이 되었다.
벤이 좌절 섞인 목소리로 말했다.
“이걸 어떻게 막습니까? GPU 캐시의 동작을 우리가 어떻게 제어하죠? 이건 우리 영역 밖의 문제입니다.”
그의 말대로였다. 이것은 Dawn 팀 혼자서 해결할 수 있는 문제가 아니었다. GPU 하드웨어, 운영체제, 그리고 브라우저가 모두 함께 대응해야 하는 거대한 숙제였다.
드미트리는 즉시 크롬의 최상위 보안 아키텍처 팀에 이 문제를 보고했다.
보고를 받은 보안 총책임자의 표정은 심각했다.
“이건 P0 등급을 넘어선, 플랫폼 레벨의 위협이군. 당장 모든 브라우저 벤더와 하드웨어 제조사가 참여하는 비공개 긴급 회의를 소집해야겠어.”
며칠 후, 극도의 보안 속에서 긴급 회의가 열렸다. 구글, 애플, 모질라, 마이크로소프트의 최고 보안 전문가들과, 엔비디아, AMD, 인텔, 퀄컴의 하드웨어 아키텍트들이 한자리에 모였다.
해결책에 대한 논의는 격렬했다.
하드웨어 제조사들은 ‘드라이버 레벨에서 각 프로세스가 사용하는 캐시 영역을 더 엄격하게 분리하는 방안을 연구하겠다’고 약속했다. 하지만 이것은 수년이 걸릴 수도 있는 장기적인 해결책이었다.
당장의 위협을 막기 위한 단기적인 대응이 필요했다.
애플의 엔지니어가 제안했다.
“가장 확실한 방법은, WebGPU가 제공하는 고정밀 타이머의 정확도를 인위적으로 낮추는 겁니다. 공격자가 미세한 시간 차이를 측정할 수 없도록, 타이머가 반환하는 값에 약간의 무작위 노이즈를 섞거나, 해상도를 밀리초 단위로 떨어뜨리는 거죠.”
이것은 ‘양자화(Quantization)’라고 불리는 기법이었다. 하지만 이 방법에는 명백한 단점이 있었다.
드미트리가 반박했다.
“그렇게 하면, 합법적인 목적으로 정밀한 측정이 필요한 성능 분석이나 과학 계산 애플리케이션들이 모두 망가질 겁니다. 우리는 구더기 무서워서 장 못 담그는 우를 범해서는 안 됩니다.”
긴 논의 끝에, 커뮤니티는 여러 겹의 방어벽을 쌓는 다층적인 접근법에 합의했다.
첫째, 타이머의 정밀도는 유지하되, ‘교차 출처(Cross-Origin)’ 환경, 즉 iframe과 같이 다른 웹사이트의 콘텐츠가 함께 렌더링되는 상황에서는 타이머의 작동을 제한하거나 정밀도를 낮춘다.
둘째, 브라우저는 백그라운드 탭에서 실행되는 WebGPU 컴퓨트 셰이더의 연산량을 엄격하게 제한하여, 지속적인 캐시 모니터링을 어렵게 만든다.
셋째, Dawn과 같은 구현체는 의심스러운 캐시 접근 패턴을 감지하는 휴리스틱 로직을 추가하여, 공격으로 의심되는 셰이더의 실행을 중단시키는 방안을 연구한다.
학계에서 날아온 한 편의 논문은, WebGPU 생태계 전체를 뒤흔드는 거대한 경고음이 되었다.
드미트리는 이 사건을 통해 뼈저리게 깨달았다.
자신들이 여는 새로운 시대의 문이 밝은 가능성뿐만 아니라, 예상치 못한 어두운 그림자까지 함께 불러들이고 있다는 사실을. 그리고 플랫폼을 만드는 자의 책임은, 그 그림자의 위협으로부터 사용자들을 보호하기 위해 끊임없이 경계하고, 보이지 않는 곳에서 방벽을 쌓아 올리는 것이라는 것을.
그의 일은 이제 더 이상 새로운 기능을 만드는 것이 아니었다. 그가 만든 세상의 균형을 지키는, 고독한 파수꾼의 역할이 그의 어깨에 더해지고 있었다.