Как уеб push известията се превръщат в скрити оръжия
Невидимата заплаха, която се промъква незабелязано
Web Push известията са станали стандартна част от съвременните уеб приложения. Те се използват за бързи съобщения, актуализации и важни предупреждения. Но същата тази технология може да се превърне в скрит канал за атаки, които остават невидими за потребителя.
Това се случва чрез уязвимост, наречена Sleeping Agent. Тя използва пропуск в начина, по който браузърите проверяват дали едно push съобщение е показано като известие.
Как работи атаката
Web Push API изисква параметърът userVisibleOnly: true. Това означава, че всяко push съобщение трябва да доведе до видимо известие. Идеята е ясна — браузърът трябва да се увери, че потребителят е бил информиран.
В действителност обаче проверката е лесна за заобикаляне.
Зловредният Service Worker получава push събитие и веднага извиква две функции една след друга:
showNotification()— показва известиетоnotification.close()— затваря го почти веднага
Известието се записва във вътрешната база данни на браузъра за кратко време, а след това изчезва от екрана. Но браузърът проверява именно тази база данни, а не дали известието е останало на екрана. Така че проверка минава, потребителът не забелязва нищо и атакуващият продължава да има активен канал за комуникация.
Защо това е проблем
Тази уязвимост не просто заобикаля едно изискване — тя отслабва цялата система за доверие на Web Push API.
- Скрита персистентност: Атакуващият може да установи дълготраен канал за комуникация, без потребителят да знаен