Sådan beskytter du dit website mod injections

SQL- og HTML-injections bliver i stort omfang brugt til at kompromittere hjemmesider og de bagvedliggende CMS-systemer. Version2 fortæller dig om faldgruberne og giver dig nogle fif til, hvordan du beskytter dit site.

Der går sjældent en dag uden sikkerhedskonsulenterne kan fortælle om nye bølger af SQL- og HTML-injection-baserede hackerangreb.

Fænomenet, hvor systemer til indholdsstyring (CMS'er), forumer, gæstebøger bliver narret til at acceptere ondsindede HTML-parametre og SQL-forespørgsler via eksempelvis formularfelter på hjemmesider, er en af de helt store trusler mod også danske hjemmesider.

Injections er typisk mulige på grund af manglende input-validering på dynamiske websider.

Peter Kruse fra it-sikkerhedsvirksomheden CSIS fortæller, at et af de store problemer i forhold til webapplikationer er, at web-administratorerne ikke nødvendigvis får noget at vide om, hvornår der frigives opdateringer til webapplikationer, hvilket man gør, når der kommer sikkerhedsopdateringer til eksempelvis OS'er som Windows og Linux.

»I bund og grund skyldes det ofte manglende vedligeholdelse af softwaren. Og hvis man ikke holder øje med, hvilket software der ligger på webserveren, så risikerer man, at det ikke bliver opdateret i længere tid, og derved efterlades sårbart overfor angreb. Og så har man et problem,« siger Peter Kruse, men erkender samtidigt, at det rent driftsmæssigt kan være en udfordring konstant at holde sine web-applikationer up-to-date.

Han opfordrer til, at de ansvarlige for softwaren på webserveren jævnligt undersøger, hvorvidt der er kommet sikkerhedsmæssige opdateringer til CMS'et og andre applikationer, som typisk kan være modtagelige overfor denne type angreb.

Men den fremgangsmåde er stort set kun ladesiggørlig, hvis der er tale om et forholdsvist udbredt standard CMS - denne type CMS'er er dog også de vigtigste at koncentrere sig om, da de typisk er de mest udbredte, og derfor også mest interessante set med hacker-øjne.

Stil krav

Anderledes vanskeligt kan det være at vedligeholde skræddersyede web-applikationer eller knapt så udbredte systemer.

»Når man har fået leveret en skræddersyet løsning, så er de fleste virksomheder tilbøjelige til at glemme alt om, at den skal vedligeholdes, fordi webapplikationen jo virker. Og leverandøren har ikke nogen forpligtigelser fra det øjeblik, hvor de har afleveret den skræddersyede løsning. Man kan ikke forvente, at de hele tiden holder øje med, at koden nu også bliver opdateret,« siger Peter Kruse.

I forbindelse med skræddersyede web-applikationer opfordrer han derfor til, at virksomheden som minimum stiller krav til leverandøren om udførlig kodedokumentation, så virksomheden eller en tredjepart selv har en mulighed for at vedligeholde koden.

Generelt peger Peter Kruse på, at det er vigtigt med minimumskrav i forhold til sikkerheden, når virksomheden eksempelvis beder en leverandør om at skanne hjemmesiden for eventuelle huller.

»Det er vigtigt, at når man beder om at få lavet sårbarhedsskanninger, at man sikrer, at leverandøren lever op til nogle krav,« siger Peter Kruse og nævner, at eksempelvis sites, der accepterer betalingskort skal leve op til PCI-standarden (Payment Card Industry), som er en række gængse krav i forhold til sikkerheden, så almindelige menneskers kreditkort-numre ikke lander i hænderne på forbrydere.

Ingen forskel på OS og CS

Peter Kruse mener ikke, det er muligt at sige noget generelt om, hvorvidt open source-CMS'er er mere eller mindre sikre end ikke open source-CMS'er.

»Generelt er webapplikationer meget åbne, hvad enten de er lavet i ASP eller PHP. Så jeg mener ikke, man kan sige, at noget generelt er mere sikkert end andet. Det er diskussionen igen, som vi kender den mellem Windows og open source-styresystemer, der er både sikkerhedsmæssige fordele og ulemper ved det ene og det andet,« siger Peter Kruse.

Han fortæller, at Microsoft har lavet en beskrivelse af, hvordan man beskytter sin MS-baserede hjemmesider og servere mod SQL-injections. Linket til rådene fra Microsoft findes herunder.

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
Anonym

En kedelig omgang sludder Peter Kruse fortalte.

De fleste som bare har lidt forstand på sikkerhed, ved at når man kører web-applikationer, så er det en god idé at være up2date. Det er der overhovedet ikke noget nyt i, heller ikke det som han fortalte.

Tværtimod fortalte han ikke, at hvis man kører php så kan man også vælge at køre i safe_mode, og man kan også vælge at redigere sin php.ini fil og derved mindske nogle former for angreb.

Derudover kan selve serveren også være modtagelig overfor angreb, f.ex. cPanel's default installation, gør at hvis man kører med dens domain name system, ja så ligger ens dns-informationer til rådighed for andre. (som så kan bruges til enumeration)

Der er mange ting man skal tage forhold til, hvis man har ansvaret for en hel server, og hvis det kun er web-applikationen, ja så skal man ihvertfald holde sig up2date.

  • 0
  • 0
Peter Makholm

For os i branchen er det godt nok en sluder for en sladder, men det er et reelt problem at folk installerer et eller andet CMS-lignende og så glemmer alt om at holde det opdateret.

Så det er et område der bør være øget opmærksomhed om, med jeg håber lidt at en artikel på version2.dk er lidt at prædike for koret.

At sørge for at serveren er sat korrekt op er et helt andet eventyr end Peter Kruse er ude på. Dermed ikek sagt at det er uinteressant, men det er ikke nødvendigvis relevant for artiklens sigte: At øge opmærksomheden for at webapplikationer ikke må være opsæt-og-glem ting.

Men det er der forhåbentlig ikke mange af Version2's læsere der er så meget klar over at de rent faktisk også efterlever det.

  • 0
  • 0
Morten Fangel

Jens: Safe Mode i PHP er, for at sige det mildt, overvurderet og giver en falsk sikkerhed. Dette er også grunden til at den er fjernet i PHP 6.

Det man dog bør gøre, er at drage nytte af de nye PDO funktioner og prepared statements (PS). Ved at benytte PS og parameter-binding kan man sikre sig langt bedre mod SQL-injections, altså at ens SQL streng bliver ændret.

Næste skridt er at sikre at alt data der udskrives fra ens database ikke bliver fortolket, men vist som netop det: tekst. Det varierer hvilken funktion der skal benyttes her, alt efter contexten hvor i ens data skal udskrives.

Sendes i de en plain-text email skal der ikke gøres helt så meget (dog skal headere lige escapes m.h.t. \n og \r), mens hvis det vises som en del af en HTML side skal der gøres væsenligt mere (htmlentities er god allround, men ofte ønsker man at tillade en smule markup hvorved det bliver langt mere kompliceret.

-f

  • 0
  • 0
Stig Johansen

He - den var nu meget god.

Jeg ved godt det er MS svar på Flash/Flex, og at den kommer fordi jeg har sat Konqueror op som IE6/XP.

Jeg går ud fra det er for at få en lige så stor installed userbase som Flash.

Jeg synes bare metoden er en smule uetisk.

  • 0
  • 0
Log ind eller Opret konto for at kommentere