Verkkopush-ilmoitukset: hiljainen ja salakavala hyökkäysreitti
Näkymätön uhka, joka hiipii huomaamatta
Web Push -ilmoitukset ovat nykyään olennainen osa monia verkkosovelluksia. Ne tuovat reaaliaikaista tietoa suoraan selaimen kautta. Mutta kun ilmoituksia käytetään väärin, niistä voi tulla hiljainen ja jatkuva kanava hyökkääjille.
Sleeping Agent -niminen haavoittuvuus hyödyntää juuri tätä tilannetta. Se perustuu siihen, että selaimet tarkistavat Web Push API:n turvallisuusvaatimuksia tietyllä tavalla, joka jättää tilaa hyväksikäytölle.
Hyökkäyksen toiminta
Web Push API:ssa on vaatimus nimeltä userVisibleOnly: true. Sen tarkoitus on varmistaa, että jokainen push-viesti näkyy käyttäjälle ilmoituksena. Ajatus on hyvä, mutta toteutuksessa on heikkous.
Hyökkääjä voi kirjoittaa Service Workerin, joka vastaanottaa push-tapahtuman ja tekee heti peräkkäin kaksi asiaa: näyttää ilmoituksen ja sulkee sen saman tien. Ilmoitus ehtii kirjautua selaimen sisäiseen tietokantaan, mutta katoaa näytöltä ennen kuin käyttäjä ehtii nähdä sen.
Selain tarkistaa, onko ilmoitus näytetty, mutta se tekee tämän tietokannan sijaan eikä näytöllä näkyvän tilan perusteella. Tämän takia hyökkääjä voi pitää yhteyden yllä ilman että käyttäjä huomaa mitään.
Miksi tämä on vakavaa
Haavoittuvuus ohittaa turvallisuusvaatimuksen ja heikentää koko Web Push API:n luotettavuutta. Hyökkääjä voi luoda pitkäikäisen yhteyden pelkästän yhdellä sivuvierailulla. Se ei tarvitse asennusta tai lisäkoodia tietokoneeseen.
Myös monissa organisaatioissa luotetaan siihen, että push-ilmoitukset näkyvät aina käyttäjälle. Tämä luottamus katoaa, kun ilmoituksia voidaan pitää piilossa. Haavoittuvuus toimii useissa selaimissa,包包包包包包包包包包包包包包包包包包包包包