Paranoid Service Worker
Комментарий Программного комитета:
Всеволод продемонстрирует, пожалуй, самое неординарное использование Service Worker в сочетании с некоторыми современными и старыми API браузера в целях качественного повышения безопасности при работе с данными на стороне клиента. Всеволод погрузится так глубоко, что поможет обойти проблему браузерных расширений. Перед докладом стоит собраться и сконцентрироваться, ибо будет жарко.
Эта история начинается не так давно.
Шел 2018-й год. Интернет полнился историями о взломах: ломали аккаунты Фейсбука, дверные ручки Гугла и плагины в браузерах, китайские телефоны продавались сразу с бесплатным подключением к ботнетам, расположение секретных баз вычисляли через фитнес-трекеры (strava), через HTTPS на части серверов еще можно было прочитать содержимое оперативной памяти (heartbleed), а через деление — прочитать память в других процессах (meltdown и spectre), при желании — даже из «защищенной зоны» в памяти процессора (foreshadow). Интернет полнился слухами, которые оказались не слухами, что в процессорах есть еще один маленький компьютер, на котором можно запустить DOOM (предположительно). Ну и вишенкой на торте было то, что технически возможно вывести из строя сервера, отправляя по сети единицы и нули так, что электроны начинали выпрыгивать из оперативной памяти (nethammer/throwhammer).
И в воздухе висел вопрос: можно ли вообще хранить хоть какие-то данные в браузерах без страха, что их украдут?
Понемногу приходило понимание, что вроде бы можно. Но доверять нельзя никому, ни себе, ни другим. Нужно, чтобы клиент проверял сервер, а сервер — клиент, чтобы ничего не происходило просто так, а песочница внутри себя держала еще одну песочницу, но поперек. Понемногу это превращалось в самую настоящую паранойю, но закончилось рядом уникальных находок, о которых и будет этот доклад.