크롬 브라우저의 특정 수학 함수 계산 결과가 운영체제(OS)마다 미세하게 달라 이를 통해 사용자의 OS를 식별할 수 있는 새로운 핑거프린팅(fingerprinting) 취약점이 드러났습니다. 일반적으로 캔버스(canvas), 웹GL(WebGL), 폰트(font) 등을 이용한 핑거프린팅은 알려져 있었지만, 부동 소수점(floating point) 연산의 마지막 비트(bit) 차이로 OS를 알아낼 수 있다는 점은 매우 흥미로운 발견입니다.
이러한 차이는 주로 `Math.tanh`와 같은 자바스크립트(JavaScript) 수학 함수, 일부 CSS 삼각 함수, 웹 오디오(Web Audio) 컴프레서(compressor) 등이 해당 OS의 기본 수학 라이브러리(libm)를 사용하기 때문에 발생합니다. 예를 들어, 리눅스(Linux)는 `glibc`, macOS는 `libsystem_m`, 윈도우(Windows)는 `UCRT`를 사용하며, 이 라이브러리들은 IEEE 754 표준에 따라 부동 소수점을 저장하지만, `sin`, `cos`, `tanh` 등의 함수가 '정확하게 반올림(correctly rounded)'될 것을 요구하지 않기 때문에 미세한 결과 차이가 발생합니다. 실제 `Math.tanh(0.8)`을 계산하면 세 OS에서 모두 다른 결과값이 나옵니다. 특히 크롬 148 버전부터 V8 엔진이 `Math.tanh` 계산에 자체 구현 대신 OS의 `std::tanh`를 사용하도록 변경되면서 이러한 정보 유출이 시작되었습니다.
이러한 핑거프린팅은 봇 탐지 시스템이나 사용자 추적에 악용될 수 있어 브라우저 프라이버시와 보안에 새로운 위협이 됩니다. 기존의 핑거프린팅 방어 기술로는 막기 어려운 미묘한 신호이기 때문에, 브라우저 개발사들은 OS별 수학 라이브러리 차이를 표준화하거나, 모든 OS에서 동일한 수학 연산 결과를 보장하는 방안을 모색해야 할 것입니다. 사용자 입장에서는 이러한 미세한 차이까지도 개인 정보 유출의 통로가 될 수 있음을 인지하고, 브라우저 업데이트 및 보안 설정에 더욱 주의를 기울일 필요가 있습니다.
