크로미움 148부터 `Math.tanh`로 OS 식별 가능해졌다

크로미움 148부터 Math.tanh() 함수가 OS 식별에 사용될 수 있다. V8이 자체 fdlibm 대신 호스트 libm의 std::tanh를 사용하면서, Linux(glibc), macOS(libsystem_m), Windows(UCRT) 간에 최하위 비트 차이가 발생한다. 예를 들어 Math.tanh(0.8)은 세 OS에서 각각 다른 값을 반환하며, 이를 통해 User-Agent 없이 OS를 구분할 수 있다. 크로미움 147 이하에서는 이 취약점이 존재하지 않는다.

AI 요약

Chrome 148부터 Math.tanh() 함수가 OS별로 다른 비트 값을 반환하여 브라우저 핑거프린팅에 활용될 수 있게 되었습니다. 이는 V8 엔진이 자체 fdlibm 포트 대신 OS의 기본 수학 라이브러리(libm)를 사용하도록 변경되었기 때문입니다. Linux(glibc), macOS(libsystem_m), Windows(UCRT)는 각각 다른 수학 라이브러리를 사용하며, 약 25%의 입력값에서 1 ULP(Unit in the Last Place) 차이로 다른 결과를 냅니다. Chrome 147 이하 버전에서는 이 취약점이 존재하지 않았습니다.

핵심 포인트

  • Chrome 148부터 V8이 std::tanh를 사용하면서 OS별 수학 라이브러리 차이 노출
  • Linux, macOS, Windows 세 OS가 Math.tanh(0.8)에서 각각 다른 비트 값 반환
  • IEEE 754는 sin, cos, tanh 등의 정확한 반올림을 요구하지 않아 각 OS가 다른 구현 사용
  • Chrome 147 이하에서는 V8이 자체 fdlibm 포트를 사용하여 동일한 값 반환

향후 전망

  • 브라우저 핑거프린팅 방어 기술이 수학 함수 레벨까지 확장될 필요성 대두
  • V8이나 다른 엔진이 OS 수학 라이브러리 의존성을 줄이는 방향으로 개선될 가능성
Share

이것도 읽어보세요

댓글

이 소식에 대한 의견을 자유롭게 남겨주세요.

댓글 (0)

불러오는 중...