Dyrker du usikker XML, kan hackere penetrere dig

SQL-injektion løber med al glamouren, når det gælder hacking af webapplikationer, men usikker XML kan også give hackeren adgang til lokale filer på servere, som burde stå sikkert bag firewallen.

Webapplikationer har brug for data, og de data befinder sig ofte på indersiden af firewallen. Det gør webapplikationerne særdeles spændende for hackere, som kan udnytte huller i webapplikationen til at få adgang til netværket og i sidste ende overtage kontrollen.

Den bedst kendte teknik til at angribe webapplikationer er SQL-injektion, men med AJAX-baserede webapplikationer er også XML-koden en mulig vej ind for hackerne.

Det demonstrerede Sascha Herzog fra sikkerhedsfirmaet Compass, da han i sidste uge besøgte København i forbindelse med en sikkerhedskonference afholdt af softwaredistributøren Liga.

»AJAX gør det muligt at kommunikere og sende forespørgsler til webservices, som kører mange niveauer inde bag firewallen,« forklarede Sascha Herzog.

X'et i AJAX står netop for XML, og ligesom med SQL-injektion kan XML-forespørgsler misbruges, hvis udvikleren ikke har hærdet applikationen, så den ikke godtager forespørgsler, som applikationen ikke burde foretage.

Det kan udnyttes til et såkaldt XML External Entity-angreb. Det går ud på at opsnappe forespørgsler og svar mellem webapplikationen og de webservices, som applikationen kommunikerer med.

I mange tilfælde er det tilladt at ændre Doc Type-definitionen, så man kan sende en forespørgsel, der kan hente en fil fra den server, som webservicen kører på.

Hvis webservicen kører som root og dermed har administratorrettigheder, så kan adgangen til lokale filer udnyttes til at få webservicens til at udlevere både password-filen og den tilhørende shadow-password-fil.

»Du kan ikke forestille dig, hvor tit webservices kører med root-rettigheder. Vi har haft masser af sager,« fortalte Sascha Herzog.

Compass Security udfører blandt andet såkaldte penetrationstest på webapplikationer for at identificere sikkerhedshuller, som kan udnyttes af hackere.

Når en hacker har fået fat i password-filerne er det muligt ved hjælp af standardværktøjer at forsøge at knække kodeordene. Hvis der er brugt adgangskoder, som findes i de ordlister, der findes på nettet, så er det trivielt at knække kodeordene i løbet af meget kort tid.

Har man først kodeord og brugernavne for brugerne på den maskine, hvorpå webservicen kører, så kan man forsøge at komme længere ind på virksomhedens netværk ved at lede efter Terminal Services eller andre tjenester på netværket.

»Vi havde en sag for to uger siden, hvor vi på denne måde kunne logge ind på lokalnetværket via VPN,« fortalte Sascha Herzog.

Når først hackeren er nået så langt, så bliver det muligt at anvende teknikker som 'pass the hash', hvor man kan udnytte den måde, hvorpå Windows-maskiner udveksler en hashværdi som autorisation, når først en bruger er logget ind på én maskine. Disse værdier kan så at sige kopieres, så en hacker kan udnytte adgangen fra én maskine til at få adgang til en anden uden at skulle knække et kodeord.

I praksis er det heldigvis vanskeligt at udnytte en usikker fortolkning af XML til at nå helt ind til de følsomme dele af netværket. Men ligesom med SQL-injektion er det vigtigt at sikre sin kode for at lukke for utilsigtet adgang.

»Der er mange måder at hærde sin XML-parser på. Du er for eksempel nødt til at forbyde brugeren adgang til at sætte sine egne XML-entities,« forklarede Sascha Herzog.

Han anbefaler, at webudviklere følger de råd og retningslinjer for best practice til hærdning af XML, som er frigivet af både Oasis og W3.org:

XML-Signature Syntax and Processing

XML Encryption Syntax and Processing

XML Key Management Specification (XKMS)

OASIS Security Services (SAML)

OASIS eXtensible Access Control Markup Language (XACML)

XXE (Xml eXternal Entity) Attack

Tips og korrekturforslag til denne historie sendes til tip@version2.dk
Kommentarer (6)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
Ove Larsen

Rart - at der også her - kan være plads til - at smile lidt - så selvhøjtideligheden ikke bliver alt for tyk - men selvfølgelig skal det gøres elegant - som denne

Stort morgensmil

  • 1
  • 0
Jacob Christian Munch-Andersen

Jeg vil lige påpege at på trods af navnet AJAX så er det altså ikke tvungent at bruge XML til kommunikation mellem applikation og server, man kan kreere sit dataformat præcis som man ønsker, hvilket jeg normalt vil anbefale.

Helt åbenlyst er der noget båndbredde at spare ved at gå udenom XML, men man slipper så også for at bruge et stykke kode som man ikke forstår, hvilket vel nok er essensen af den problemstilling som her præsenteres. Man bruger en parser som "kan for meget", og pludselig er der et sikkerhedshul gennem en feature som man sådan set slet ikke bruger.

For nu ikke at folk misforstår må jeg hellere lige præcisere at uafhængige dataformater ikke er den hellige gral, det er ikke svært at skrive sine egne injection huller og lignende snavs, og hvis ikke man har styr på det man laver så er det ganske sandsynligt at der kommer sikkerhedshuller ud af det uanset hvilke teknikker man bruger.

  • 0
  • 0
Log ind eller Opret konto for at kommentere
IT Company Rank
maximize minimize