En kikk på et par sikkerhetshull

Et par nye sikkerhetvarsler og tilhørende oppdateringer ble lagt ut idag. Begge to ble meldt til oss og har ikke vært offisielt kjent før. Tenkte å ta en kikk på dem.

MS08-001

Ms08-001 gjelder to sårbarheter som begge finnes på Windows 2000 SP4 og oppover, server og client, x86 og x64. Alvorligheten er satt til kritisk. Den første sårbarheten gjelder et hull i i IP Stacken, nærmere bestemt  kjernens håndtering av IGMPv3 and MLDv2 pakker. Sårbarheten åpner for at en angriper kanskje kan eksekvere egen kode, noe som igjen åpner for mange muligheter for angriperen. Sannsynligheten for at resultatet blir en STOP melding i stede er derimot stor. Kan også utbedres ved bruk av firewall og filtrering.

Den andre sårbarheten gjelder hvordan kjernen håndterer fragmenterte ICMP router advertisement queries.  ICMP RDP, Router Discovery Protocol, må være skrudd på for at systemet skal være sårbart. Default er denne av, men kan skrus på gjennom en DHCP setting  for XP og 2003 også. Angrepet kan derimot bare brukes til å få maskinen til å stoppe og automatisk restarte. Altså DOS angrep det er snakk om. Kan også utbedres ved å disable RDP.

Begge sårbarhetene er meldt direkte til oss og det eksisterer pr nå ikke kode "in the wild" som utnytter disse. De er også vanskelige å utnytte rent praktisk, les mer under for detaljer.

ICMP RDP

ICMP RDP er bruk av icmp meldinger til å finne standard gateway når dette ikke er satt opp eksplisitt lokalt eller i dhcp options. Dette består egentlig av to meldinger. En som klienten broadcaster og routerens svar tilbake. (Router solicitation og router advertisement) TCP/IP stacken i Windows håndterer ikke dette svaret tilbake, router advertisement,  korrekt dersom meldingen er fragmentert. (I all enkelhet for uinvidde, når en melding er for stor til å sende i en pakke tillater IP at den deles opp over flere pakker. Den må da settes sammen igjen av endelig mottager)

Fragmenterte router advertisements kan få systemet til å lese på feil steder i minnet og dermed føre til et system kræsj. Dette vil skje sporadisk, avhengig av inneholdet i minne på det tidspunktet meldingen mottas.

IGMP og MLD

Disse to protokollene, IGMP og MLD,  brukes for å styre multicasting over henholdsvis IPv4 og IPv6 nett. Maskiner kan f.eks fortelle om sine planer om å hente fange opp eller sende multicast og routerne kan dermed fange opp dette og videresende data korrekt.  SSM eller Source-specific multicast, er et nytt tillegg til disse standardene, som lar klientene definere fra hvilke hosts de ønsker å motta multicast data. Slike SSM meldinger håndteres ikke korrekt i TCP/IP stacken og dette åpner for "remote code execution" i System kontekst. Angrepet kan utføres over nett og av anonyme brukere, ikke noe krav til å være pålogget.

Sårbarheten er derimot vanskelig å utnytte av flere årsaker:

  • På grunn av måten SSM meldinger prosesseres på vil et slikt angrep fort kunne medføre at CPU bruk når 100% og at IP stacken dermed begynner å droppe pakker og det vil dermed være vanskelig å få gjennom den korrekte "ondsinnende" koden. Dette kan kontrolleres ved å sende pakker i "riktig" fart, noe som er vanskelig. For rask sending vil gjøre at pakkene droppes også.
  • En timer settes i gang når den første meldingen mottas og denne har en random verdi mellom 0 og MaxResponseTime. Når timeren går ut tømmes bufferet. Angriperen vet ikke når timeren går av og han må han sendt alle sine data innen den gjør det, ettersom den sårbare koden er relatert til det som skjer etter dette. Dette kan selvsagt omgås ved å bare prøve nok ganger.
  • Det er ekstremt vanskelig å vite nøyaktig hva man har fått inn i bufferet når timeren trigger.
  • Den "ondsinnede" koden man sender til bufferet må være kamuflert som unike ip adresser. Kun unike adresser vil bli lagret i minne.
  • Sårbarheten medfører også en såkalt "pool corruption", noe som er langt vanskeligere å utnytte enn en (heap) buffer overrun. Dette gjør angrepet ustabilt og vil ofte medføre en Bugcheck, BSOD.

MS08-002

MS08-002 gjelder en sårbarhet som finnes på Windows 2000 SP4, XP og 2003, x86 og x64. Windows Vista har ikke denne sårbarheten. Alvorligheten er satt til Important. Heller ikke her eksisterer det i skrivende stund kjent kode "in the wild" som utnytter hullet. Sårbarheten gjelder LSASS sin håndtering av local procedure call, lpc, og åpner for at en angriper kan eksekvere egen kode og dermed gjøre det meste. Heldigvis krever sårbarheten at angriperen er pålogget med en gyldig konto. Hullet kan ikke utnyttes over nett eller av anonyme brukersesjoner.

Technorati Profile