구글 크롬 148 버전부터 자바스크립트(JavaScript)의 Math.tanh 함수가 브라우저 내장 라이브러리 대신 운영체제(OS)의 표준 수학 라이브러리(std::tanh)를 호출하게 되면서, 웹 환경에서 사용자의 OS를 식별할 수 있는 새로운 경로가 열렸습니다. 이제 Math.tanh(0.8)과 같은 특정 입력값에 대해 리눅스(Linux), macOS, 윈도우(Windows)는 각각 미세하게 다른 부동소수점 결과값을 반환하며, 웹사이트는 이 차이를 이용해 사용자의 실제 OS를 정확히 파악할 수 있게 됩니다.
이러한 변화는 IEEE 754 표준이 부동소수점 연산의 저장 방식은 정의하지만, 초월함수(transcendental functions)의 반올림 정확도까지 강제하지 않기 때문에 발생합니다. 각 OS의 수학 라이브러리(libm)는 성능과 정확도 사이에서 절충점을 찾아 구현되며, 이 과정에서 서로 다른 계수, 조회 테이블, 범위 축소 상수를 사용합니다. 예를 들어, 리눅스는 glibc, macOS는 Apple libsystem_m, 윈도우는 UCRT의 ucrtbase.dll을 사용하는데, 이들 라이브러리는 Math.tanh(0.8)에 대해 각각 0.6640367702678491, 0.664036770267849, 0.6640367702678489와 같은 미세하게 다른 값을 반환합니다. 이 외에도 CSS 삼각함수 전체와 웹 오디오(Web Audio) 일부 연산도 OS별 라이브러리를 거쳐 OS 지문을 노출할 수 있습니다.
이러한 OS 지문 노출은 웹 스크래핑(web scraping)이나 봇 탐지 분야에 큰 영향을 미칠 것으로 예상됩니다. 기존에는 사용자 에이전트 문자열을 조작하여 OS를 위장하는 것이 가능했지만, 이제는 Math.tanh와 같은 함수 호출 결과가 사용자 에이전트 정보와 일치하지 않으면 위장이 쉽게 드러날 수 있습니다. 웹 스크래퍼나 봇 개발자들은 이러한 OS 지문을 우회하기 위해 대상 OS의 수학 라이브러리 동작을 비트 단위로 정확히 재현해야 하는 복잡한 문제에 직면하게 되었습니다. 단순히 결과값에 노이즈를 추가하는 방식으로는 실제 OS의 값과 일치하지 않아 오히려 탐지될 가능성이 높으며, 심지어 CPU 아키텍처(ARM, x86)에 따른 융합 곱셈-덧셈(FMA) 동작 차이까지 고려해야 하는 등 기술적 난이도가 크게 상승했습니다. 이는 웹 보안을 강화하고 악의적인 봇 활동을 더욱 효과적으로 차단하는 데 기여할 수 있습니다.