Sovande agenter i din webbläsare – så kan pushnotiser bli dolda attackvägar
Den osynliga risken som smyger sig in
Web push-notiser har blivit en självklar del av många moderna webbappar. Från samarbetsverktyg till varningssystem – de håller användarna uppdaterade i realtid. Men vad händer när samma mekanism som ska skydda och informera istället blir ett dolt angreppsverktyg?
Det handlar om en säkerhetslucka kallad Sleeping Agent. Den utnyttjar en svaghet i hur webbläsare kontrollerar att push-meddelanden verkligen visas för användaren.
Hur attacken fungerar
Web Push API har ett inbyggt skydd: userVisibleOnly: true. Tanken är att varje push ska leda till en synlig notis. I praktiken fungerar inte kontrollen som tänkt.
En angripare kan utnyttja detta genom att låta en skadlig Service Worker göra två saker direkt efter varandra:
- Visa en notis med
showNotification() - Stänga den omedelbart med
notification.close()
Notisen hinner registreras i webbläsarens databas, men försvinner innan användaren hinner se den. När webbläsaren sedan kontrollerar om notisen visades, tittar den på databasen istället för vad som faktiskt visas på skärmen. Resultatet är att attacken går under radarn.
Varför det här är allvarligt
Den här typen av attack har flera allvarliga konsekvenser:
- Den skapar en dold kanal för attackeraren, utan att användaren märker något.
- Den bryter mot säkerhetsmodellen som många compliance-regler bygger på.
- Den fungerar i flera stora webbläsare, inklusive Chrome, Edge och äldre versioner av Safari.
- Den är enkel att utföra – det krävs inga avancerade verktyg.
Den tekniska förklaringen
Kontrollen sker efter att Service Worker har kört klart sina kommandon. När webbläsaren frågar "visades notisen?" ser den bara att en post finns i databasen – även om den redan tagits bort från skärmen. Det är en timingfråga som gör att attacken fungerar.
Vad du som utvecklare bör tänka på
Om du använder push-notiser i dina appar bör du ställa några viktiga frågor:
- Har du kontrollerat dina Service Workers för oönskat notisbeteende?
- Kan du spåra när notiser visas och stängs?
- Verifierar du att push-meddelandena verkligen kommer från din egen server?
Genom att implementera övervakning och kryptografisk validering kan du minska risken för att en angripare tar över din push-kanal.
Vad betyder det här för framtiden?
Den här säkerhetsluckan visar hur lätt det kan vara att bryta en specifikationens intentioner när kontrollen inte sker på rätt nivå. Browser-vendorerna är medvetna om problemet och har fixar på gång. Som utvecklare bör du hålla koll på din Service Worker, implementera serverbaserad kontroll och alltid uppdatera webbläsare och system.
Web Push är fortfarande ett kraftfullt verktyg. Men att använda det kräver att du förstår både nyttan och riskerna.