Kaspersky
Question

main.js: video autoplay clone & wfd-invisible; дополнительный поток аудио/видео.

  • 5 March 2021
  • 0 replies
  • 17 views

Добрый день.

Просматривая сайт Instagram выявил неприятный баг:  https://take.ms/kpc5i

При запущенном видео нажатие любой клавиши на клавиатуре создает дополнительный поток аудио/видео. В скринкасте выше это видно во вкладке Media и в целом слышно по звуку многократного эха.

Сперва решил, что это баги самого сайта Instagram, но затем точно такой же баг выявил на другом сайте. Подумав, что вряд ли разработчики этих сайтов связаны, принялся за поиск источника проблемы.

Проверка в других браузерах - баг воспроизводится.

Проверка в инкогнито - баг воспроизводится.

Проверка без антивируса - баг НЕ воспроизводится.

https://take.ms/uk5OM - после изучения логов стало ясно, что в скрипте main.js (от Kaspersky Security Cloud), который инжектится на страницу, вешается обработчик keydown, который по каким-то причинам клонирует DOM-элемент видео. Это объясняет эхо.

https://take.ms/U3Hel - изучаю внимательнее код и вижу непосредственно вызов клонирования содержимого страницы, а также логику фильтрации… которая не работает =\

node.parentNode.getAttribute("wfd-invisible") === true

Эта проверка всегда будет false, так как getAttribute возвращает строку или null (ссылка на MDN). Также стоит упомянуть вызовы setAttribute, где вторым параметром вместо строки передается булево значение.

Исправленный вариант проверки выглядит так:

node.parentNode.getAttribute("wfd-invisible") === "true"

Неработающая логика фильтрации тоже баг, но не это вызывает множественное эхо.

Основная проблема заключается в том, что скрипт клонирует страницу целиком, включая video и audio с атрибутом autoplay, которые сразу же начинают воспроизведение.


0 replies

Be the first to reply!

Reply