Shatter attack er en softwareteknologi , der bruges af hackere til at omgå sikkerhedsbegrænsninger mellem processer i samme session i Microsoft Windows -operativsystemet . Det udnytter en fejl i meddelelsesoverførselsarkitekturen og tillader én applikation at injicere vilkårlig kode i enhver anden applikation eller tjeneste, der kører i samme session. Som følge heraf kan der forekomme uautoriseret eskalering af rettigheder .
En ny type angreb har været genstand for heftige diskussioner blandt sikkerhedsprofessionelle siden offentliggørelsen i august 2002 af en artikel af Chris Page [1] , en uafhængig databeskyttelseskonsulent. Dette dokument introducerede først udtrykket "shatter attack" for at beskrive den proces, hvorved en applikation kan udføre vilkårlig kode i en anden applikation. Dette er muligt, fordi Windows tillader lavere privilegerede applikationer at sende beskeder til højere privilegerede applikationer. Meddelelsen kan som parameter indeholde adressen på en tilbagekaldsfunktion fra applikationens adresseområde. Hvis en angriber formår at injicere sine data i hukommelsen i en anden applikation (for eksempel ved at indsætte shellcode i et redigeringsvindue eller bruge funktionerne VirtualAllocEx og WriteProcessMemory), så kan han sende ham en WM_TIMER-meddelelse og angive adressen på en tilbagekaldsfunktion der henviser til disse data.
Få uger efter at artiklen blev publiceret, var Microsoft enig i, at problemet eksisterer, men præciserede samtidig [2] , at det er en fejl at kalde dette en Windows-fejl, da problemet ligger i selve den meget privilegerede tjeneste.
I december 2002 udgav Microsoft en patch til Windows NT 4.0 , Windows 2000 og Windows XP for at forhindre "splintringsangrebet" [3] . Men dette var en delvis løsning på problemet, da rettelsen var til de tjenester, der blev leveret med Windows. Selve arkitekturen ændrede sig dog ikke, og truslen fortsatte med at eksistere for andre applikationer og tjenester.
I Windows Vista blev problemet løst omfattende, hvilket gjorde to væsentlige ændringer. For det første er session 0 udelukkende dedikeret til systemprocesser, og brugeren logger ikke længere på denne session [4] . For det andet sendes de fleste meddelelser ikke længere fra processer med lave privilegier til processer med høje privilegier ( User Interface Privilege Isolation , UIPI) [5] . For eksempel bruger Internet Explorer 7 denne innovation til at begrænse interaktionen af gengivelseskomponenter med resten af systemet.