+------ | Oppdatering 2004-01-05: Du kan lese _mye_ mer i min nylig utgitte | bok: "Innocent Code: A Security Wake-up Call for Web Programmers" | http://innocentcode.thathost.com/ +------ Subject: Så enkelt er det å lage et sikkerhetshull From: "Sverre H. Huseby" Date: Wed, 16 Aug 2000 22:09:46 +0200 Til webutviklerkollegaer. Jeg har, i likhet med enkelte andre småbarnsforeldre her i landet, hatt noen høner å plukke med Norsk Lærerlag i sommer. Streiken deres har kostet meg hele ferien min. I den forbindelse har jeg forsøk å rette flere henvendelser til dem, både via mail og via en "feedback form" på deres webside. Det er sistnevnte som er temaet i denne teksten. Etter å ha forsøk flere ganger uten å få noe svar, lurer jeg på om det kan være noe galt med websida deres. Jeg finner fram innspillsida via http://www.norsk-larerlag.no/moteplass/innspill/innspill.html og lagrer den på disken min. Deretter tar jeg den inn i en editor for å se på HTML-koden, og finner blant mye annet, følgende:
Hm. Det var litt interessant. Tilsynelatende "oversettes" form-innholdet til en mail. Jeg legger merke til at mottakeradresse og et filnavn er oppgitt i formen, og glemmer snart hvorfor jeg egentlig gikk inn på sida: Her er et potensielt sikkerhetshull! Først litt tekniske detaljer: Hva er det som skjer når vi trykker "Submit"-knappen i en form? Jo, browseren vår samler sammen alt som er av INPUT-felt, enten de nå er skrevet inn av oss, eller er angitt som HIDDEN, som i koden over. Deretter kopler den seg opp mot webserveren, og "leverer" alle INPUT-feltene til programmet som er angitt i ACTION-attributtet til FORM-taggen. Jeg gjør et lite eksperiment. I min lokale kopi av websida endrer jeg ACTION til å inneholde full URL: http://www.norsk-larerlag.no/cgi-bin2/cgimail.exe Så bytter jeg ut mailadressa med min egen, og setter filnavnet til "\boot.ini", ei fil som gjerne befinner seg på NT-maskiner. Jeg tar opp den lokale kopien i en webbrowser, og trykker "Submit". Etter en kort stund dukker det opp en mail i postkassa mi, og innholdet er den vanligvis utilgjengelige fila "boot.ini" fra Lærerlagets webserver! Dette var gøy. Tydeligvis har vi tilgang til en hvilken som helst fil på maskinen til dette streikende Lærerlaget. Jeg leker med tanken på å hente ned en passordfil, cracke den, og logge meg inn på maskinen for å pynte på websidene deres. Siden jeg gjerne vil beholde mitt image som en grei kar, velger jeg heller å si ifra til dem. Mailen jeg fikk fra Lærerlagets server er sendt av "webmaster@etwebfirma.no", og websida jeg modifiserte inneholder en kommentar som refererer til "EtWebFirma as" (anonymisert, skjønner'u). Velger derfor "webmaster@etwebfirma.no" som mottaker av min advarsel, som følger under: cgimail.exe, som brukes på innspill-siden til Norsk Lærerlag, ser ut til å kunne lures til å sende en hvilken som helst fil på serveren til en hvilken som helst mailadresse, bare man endrer på (en lokal kopi av) innspill.html. Dette må vel regnes for å være et hull som potensielt gir åpning for å "pynte på" lærerlagets websider. Ville bare si ifra, lissom. Denne mailen sendte jeg mandag 7. august. Fredag 11. august hadde jeg enda ikke mottatt noe svar, og de skumle sidene var fremdeles operative. Jeg fant fram EtWebFirma's ansatt-websider, og plukket ut noen tilfeldige webutviklere som mottakere av en ny mail: Til webutviklere i EtWebFirma. Håper noen ser denne mailen nå. Sendte den til webmaster@etwebfirma.no for fem dager siden, uten å få svar. [Innholdet av forrige mail] Hullet (som jeg vil kalle det) lot meg hente ut c:\boot.ini fra lærerlagets server. Har ikke forsøkt å hente mer "alvorlige" filer, siden jeg ikke vil mistenkes for å ønske å ødelegge noe (motivasjonen er til stede: jeg har tapt all ferie, og taper nå lønn som følge av barnehagestreiken -- *sukk*). Regner med at alt logges, og at loggene stadig sjekkes, eller hur? ;-) Mandag 14. august får jeg endelig svar fra en av utviklerne: Takk for henvendelsen. Beklager at du ikke har fått tilbakemelding. Det skyldes en intern kommunikasjonssvikt. Vi sjekket opp Lærerlagets web i løpet av forrige mandag, og sørget for at ingen andre enn de som har FTP-tilgang med brukernavn/passord kan modifisere noe av innholdet på lærerlagets sider. Problemet du viser til, med henting av kjente filer er et vanlig sikkerhetsproblem med cgi-teknologi, vi vurderer derfor å endre mekanismen for e-post fra cgi til Cold Fusion. Hallo, tenker jeg. Kun brukere med FTP-tilgang og brukernavn og passord kan endre sidene. Akkurat den tanken jeg hadde lekt med tidligere; crack brukernavn og bruk FTP (eller no') for å endre sidene. Denne endringen hjelper ingen ting. (Skulle forresten gjerne vite hvilke andre muligheter man hadde for å endre sidene _før_ man måtte ha gyldig brukernavn og passord, men det vil jeg ikke spekulere i her.) Og hva i all verden menes med "et vanlig sikkerhetsproblem med cgi-teknologi"? At det er noe som må aksepteres? Tull og tøys. De aller fleste sikkerhetshullene på web (skal en dømme etter CERT- advisories) skyldes at utviklerne ikke vet hva de driver med. I dette tilfellet dreier det seg om å la et serverprogram (cgimail.exe) ta konfigurasjonsparametre fra klientsiden (dvs. websiden etter at en browser har tygd på den). I en verden av kun snille mennesker er sikkert dette en grei løsning, men siden vi forsatt er et stykke fra Utopia, vil jeg gjerne styre serveren min selv. Det er på sin plass med en ny mail: | Problemet du viser til, med henting av kjente filer er et | vanlig sikkerhetsproblem med cgi-teknologi [...] Problemet kan fint unngås ved å bruke "fornuftig" programvare for CGI. CGIMail.exe er typisk ikke fornuftig, idet den lar seg styre av parametre som sendes fra klienten (i formen), istedenfor av filer som settes opp på serveren. Websider kan, som kjent, lett lagres og modifiseres før de tas inn i browseren fra lokal fil. Hvis jeg forstår dokumentasjonen til CGIMail riktig, viser den at gutta som har laget dette programmet ikke har det minste peiling på sikkerhet: De lar deg "øke sikkerheten" ved å sjekke at HTTP_REFERER (som kommer fra HTTP Referer -headeren) viser til en "lovlig" host. HTTP_REFERER lar seg imidlertid _lett_ forfalske hvis man snakker HTTP direkte. Det går en dag uten at sidene forandres. Det går en dag til. Jeg sender en mail til webredaktøren i Lærerlaget, som vil ta saken opp med EtWebFirma. Det hjelper. Endelig blir den usikre formen erstattet med en oppfordring om å sende mail direkte til postkasse@norsk-larerlag.no. Jeg sitter igjen og undres over hvorfor ikke dette ble gjort umiddelbart. Hva er det som får et firma som bla. har en stor bank blant sine kunder til å drøye med å tette sikkerhetshull? Har de tenkt over hva medieomtale av en cracket webside betyr for deres framtid? Tydeligvis ikke. Og det er med tungt hjerte jeg må meddele at de ikke er alene om hverken sikkerhets- feilene eller passiviteten der ute i den store nettverdenen. Så, kjære webutviklerkollegaer, hva er moralen i denne fortellingen? Neimen om jeg vet. Men siden jeg dessverre har forstått at en drøss med andre hel- og halvproffe webutviklere borer hull av ulik diameter i websidene sine, vil jeg tillate meg å komme med noen råd: * Husk at en viss andel av alle "der ute" ser seg om etter steder å cracke. De fleste har ikke noe spesielt mål, de kaster seg over en hvilken som helst server som viser seg å ha hull. Og det finnes programmer som automatiserer hulljakten. * Vurder sikkerheten _kontinuerlig_ under utvikling. * Kjenn underliggende teknologi. Man bør ikke lage noe som feks. krever autentisering uten å kunne skissere hvordan HTTP-"samtaler" (med evt. tilhørende cookies) sendes fram og tilbake mellom browser og server, og hva disse samtalene inneholder. Man bør ikke bruke forms uten å vite hvordan CGI-protokollen virker. * Følg med på websteder/mailinglister om sikkerhet. Skum om ikke annet gjennom noen CERT advisories http://www.cert.org/advisories/ for å få følelsen av hvor kreative disse crackerne er. Andre steder som anbefales: http://www.securityfocus.com/ http://www.sans.org/ Sikkerhet er ekstremt vanskelig. Selv om jeg gjerne benytter enhver anledning til å mase om det (muligens litt småarrogant), betyr ikke det at jeg på noen måte er ekspert. Jeg lager fortsatt programmer og webløsninger med hull, som de fleste andre. Jeg mener imidlertid at man kan oppnå ganske mye bare ved å ha et _ønske_ om å lage et sikkert system. Hvis sikkerhet etter hvert får samme naturlige fokus som brukervennlighet, eleganse, og hurtighet, tror jeg vår verden vil bli litt lettere å leve i. Sverre H. Huseby shh@thathost.com (Skriver dette som privatperson, ikke som representant for firmaet jeg jobber i.) ---------------------------------------------------------------------- Publisert i Computerworld nr. 58, august 2000 http://www.computerworld.no/cwi.nsf/Alle/1F9AD30C54EA4B8CC1256946002EA3FB