V8 свел на нет мою constant-time библиотеку на JavaScript

The V8 JavaScript Runtime Undermined My Constant-Time JavaScript Library

V8 свел на нет мою constant-time библиотеку на JavaScript

Шесть лет назад Соаток предупреждал, что алгоритмическая constant-time защита не спасет от оптимизаций рантайма. Теперь это подтвердилось: исследователь Yayu Wang из University of British Columbia нашел side-channel в его библиотеке constant-time-js. Причина — механизм ToBoolean в V8, по-разному обрабатывающий -0 и -1, а также прямое обращение к объектам true и false, лежащим на разных cache line. Патч в версии 0.5.0 полностью убирает утечку.

Таким образом, одна и та же инструкция загрузки обращается к 0x...0cc для true и к 0x...0b0 для false. Адрес инструкции может быть идентичным, но ее операнд данных выдает условие через две разные cache line.

Ещё за этот день

2026-09-14