Chrome 148以降、Math.tanhでOSが特定可能に

Original : Since Chromium 148, Math.tanh is now fingerprintable to link underlying OS

Pourquoi c'est important

ブラウザフィンガープリント技術の精度向上により、ボット検出・プライバシー保護の両面に影響を与える。

Chrome 148からV8がMath.tanhの計算をOSのネイティブ数学ライブラリ(libm)に委譲した結果、Linux・macOS・Windowsで演算結果のビットパターンが異なり、OSを一意に識別できるフィンガープリント信号として機能することが判明した。

Scrapfly Engineeringの調査によると、Chrome 148以降、JavaScript関数`Math.tanh`の演算結果がOSごとに異なるビットパターンを示す。原因はV8エンジンのコミット(c1486295ae5)で、それまで内部のfdlibmポートで計算していたtanhを`std::tanh`に切り替え、ホストOSのlibmを使用するようになったためだ。Linux(glibc)、macOS(Apple libsystem_m)、Windows(UCRT)はそれぞれ異なる実装を持ち、全入力の約25%で1ULP(最小精度単位)前後の差異が生じる。例えば`Math.tanh(0.8)`はLinuxが`0.6640367702678491`、macOSが`0.664036770267849`、Windowsが`0.6640367702678489`と全て異なる値を返す。これにより、User-Agentが主張するOSと実際の演算結果が矛盾すれば、アンチボットシステムがブラウザの偽装を検出できる。Chrome 147以前はfdlibmを使用していたため全OS共通の結果を返し、この情報漏洩は存在しなかった。CSS三角関数やWeb Audio APIのコンプレッサーにも同様の問題があるという。

Source

scrapfly.dev — Lire l'original →