Push-notifikationer: Den skjulte bagdør i din browser
Den usynlige fare i dine notifikationer
Web push-notifikationer er blevet en fast del af mange moderne webapps. De bruges til alt fra samarbejdsværktøjer til vigtige advarsler. Men den samme teknologi, der skal holde brugerne informeret, kan også misbruges til skjulte angreb.
Et nyt sikkerhedsproblem kaldet Sleeping Agent udnytter et hul i, hvordan browsere kontrollerer Web Push API. Angrebet udnytter en timing-forskel mellem det, browseren tror, den har vist, og det, brugeren rent faktisk ser.
Sådan fungerer angrebet
Web Push API har en sikkerhedsregel: userVisibleOnly: true. Den skal sikre, at alle push-beskeder resulterer i en synlig notifikation. I teorien er det en god beskyttelse. I praksis er den ikke stærk nok.
En ondsindet Service Worker kan udnytte det ved at vise en notifikation og derefter lukke den igen med det samme. Notifikationen bliver registreret i browserens interne database, men forsvinder så hurtigt, at brugeren aldrig når at se den. Når browseren senere tjekker, om reglen er blevet overholdt, ser den kun på databasen – ikke på det, der faktisk er vist på skærmen. Det skaber en race condition, som tillader angrebet at gå ubemærket hen.
Hvorfor det er et problem
Sleeping Agent rammer flere områder på én gang:
- Skjult kommunikation: Angribere kan holde en åben kanal til enheden uden brugerens viden. Det sker allerede efter et enkelt besøg på en kompromitteret side.
- Tillidsbrud: Mange regelsæt bygger på, at notifikationer er synlige. Det er netheret af denne sårbarhed.
- Flere browsere berørt: Problemet rammer både Chrome, Edge og ældre versioner af Safari.
- Let at udføre: Angrebet kræver ingen avanceret malware. Det kan reproduceres på få minutter.
Den tekniske baggrund
Enheden sker, fordi browserens kontrol sker efter Service Workeren er færdig. Når en push-besked ankommer, viser Service Workeren kortvarigt en notifikation og udfører derefter notification.close(). Når browseren tjekker, ser den kun på databasen og passerer tjekket – trods at notifikationen aldrig var synlig til længere.
Sådan beskytter du dig selv
Som udvikler bør du være opmærksom på flere ting:
- Tjek dine Service Workers: Der er riskiko, at en kompromitteret script kan udnyte denne sårbarhed.
- Overvåg notifikationsadfærd: Brug monitoring eller analytics til at opdage uregelmæssige mønstre,特别 når
showNotification()ogclose()bliver sammen med hurtig succes. - Verificér kilden: Implementér kryptografisk kontrol, så du sikrer, at push-beskeder kun accepteres fra din legitime server.
Hvad betyder det for dig
Browser-leverandører er klar over problemet, og de arbejder allerede på fixes. Hvis du kører systemer i produktion, bør du:
- Overvåg din Service Worker-bevægelse for uregelmæssige notifikationer
- Implementér server-side verification af legitime push-sendere
- Hold dine browsere opdateret
- Vurder, om Web Push er passende i særligt sensitive sammenhænge
Web Push API er stadig et værdifuldt værktøj. 但 det kræver også at du tænker over både fordelene og sikkerhedsrisikoen.