Blog: NDC Oslo Dag 5: Tager vi for let på sikkerheden i webapplikationer?

NDC konferencen er slut, og det er tid til at tage alt det lærte med hjem og bruge det til noget fornuftigt. De gennemgående temaer på konferencen har for vores vedkommende været:
- Sikkerhed
- Funktionel programmering
- De nyeste tiltag indenfor .NET verdenen – herunder ASP.NET vNext.

Hvordan kommer vi i gang?

Noget af det nye viden, kan vi starte med at bruge med det samme, men en del af det kræver, at vi begynder at tænke anderledes. Hvordan får vi fx begyndt at benytte funktionelle sprog? Vi ved at delt tilstand skader skalerbarheden i vores systemer, og vi ved at funktionelle programmeringssprog uden tilstand kan hjælpe os på vej, men hvordan får vi startet på det? Det er noget, vi skal i gang med at tænke mere over – hver gang vi starter et nyt projekt eller måske bare nye features i et eksisterende system.

Alt i alt var det en god konference men en masse relevant indhold – vi regner med at være tilbage næste år.

Skrevet af Kim

Sikkerhed i webapplikationer

På konferencen var der mange gode indlæg om sikkerhed i webapplikationer, og jeg vil her forsøge at opsummere et indlæg fra Troy Hunt.

Onsdag fortalte Troy Hunt om 10 store online angreb, som kunne være undgået. Han startede sin talk med at fortælle, at der igennem de sidste år er blevet flere angreb, men vigtigst af alt så lækkes der større og større datamængder i disse angreb. Senest har ebay meldt ud, at de er blevet hacket og der er lækket i omegnen af 233 millioner brugerkonti inklusiv e-mail adresse, fysisk adresse og fødselsdatoer. Disse data var ikke krypteret og vil formentlig dukke op på internettet senere. Det står desværre også hen i det uvisse, om og hvordan adgangskoderne var sikret.

Hvis man kigger tilbage på de 10 store angreb, så kunne de være undgået. Et eller andet sted, af en eller anden grund, havde en eller anden et hul i deres sikkerhed. Dette hul er enten af en teknisk karakter eller på grund af svage sikkerhedsprocedurer, hvor hackeren benytter social engineering til at lokke informationer ud af fx en kundeservice. For det ultimative social engineering hack pegede Troy på The Epic Hacking of Mat Honan.

OWASP top 10 sikkerhedstrusler

De fleste af de store hacks blev udført ved at udnytte sikkerhedshuller i webapplikationer eller gennem social engineering, hvor hackeren udnytter menneskets godtroende natur. Til at hjælpe os udviklere med sikre webapplikationerne teknisk har OWASP, som er en non-profit organisation, lavet en liste over top 10 sikkerhedstrusler mod webapplikationer. På plads nummer 1 ligger injection, hvor den gode gamle SQL injection kending findes. Troy fortalte, at der stadig er masser af applikationer derude, hvor det er muligt at lave SQL injection.

På en anden plads ligger Broken authentication and Session management. Der er her det bliver farligt, når store brugerdatabaser pludseligt lækkes fra applikationerne. Det er desværre overraskende hvor mange applikationer, der stadig enten gemmer adgangskoder i klar tekst, eller benytter en usikker hashing algoritme som MD5 eller en runde SHA1+Salt. Hvis brugerdatabasen eksponeres og adgangskoder ikke er sikret forsvarligt, så vil det være muligt for hackere at finde folks brugernavne og adgangskoder og det viser sig desværre, at rigtigt mange af vores alle sammens brugere genbruger deres adgangskoder (og brugernavne) på tværs af applikationer. Det giver hackere mulighed for, at logge ind på andre sites og udgive sig for at være en given bruger.

2 faktor autentifikation

Når nu vores brugere genbruger adgangskoder på tværs af applikationer, så kan vi hjælpe med med at sikre vores applikationer med 2-faktor autentifikation. Det vil ikke længere være nok, at kende brugerens adgangskode, men man skal også have adgang til noget brugeren har (fx en mobiltelefon med en autentifikationsapp eller sms). En tredjedel af de online angreb som han beskrev kunne være undgået, hvis applikationerne havde haft 2-faktor autentifikation.

Husk sikkerheden i udviklerhåndbog og Definition-Of-Done

I vores udviklerhåndbog har vi beskrevet, hvordan vi sikrer vores webapplikationer i forhold til de nuværende OWASP sikkerhedstrusler. Det er- og kan ikke være en udtømmende liste af sikringstiltag, men det giver os et godt fundament til at reflektere over sikkerhedsudfordringer, når vi går i gang med at implementere en løsning eller en ny feature. Flere af sikkerhedstruslerne mitigeres ved brug af de frameworks, som vi normalt arbejder med. Fx har hjælper Anti-Forgery tokens i Microsoft ASP.NET til at sikre mod Cross Site Request Forgery. I vores Definition-Of-Done på projekterne er et af acceptkriterierne for en færdig opgave, et koden er checket i forhold til udviklerhåndbogens guidelines for sikkerhedstrusler.

Kunne det være dig?

Sikkerhedstalks får altid en til at sidde tilbage med en usikkerhed. Er alle de tidligere løsninger jeg har arbejdet på sikre? Har der været nok fokus på sikkerhed? Brugte vi en usikker hashing algoritme, eller har vi eksponeret en webservice, der lækker for megen information. Troy Hunt viste, at det er meget simpelt at finde applikationer derude, som er potentielt usikre. Prøv fx at lave en Google søgning på inurl:ftp inurl:web.config filetype:config og se hvor mange web.config filer, der er eksponeret på nettet. I Web.config ligger typisk sensitive informationer som database forbindelsesstrenge og muligvis adgangskoder til andre systemer. Hvad hvis FTP serveren også tillader anonym skriveadgang? Tilsvarende kan man søge sig frem til sider, hvor det potentielt vil være muligt at lave SQL injection.

Skrevet af Kim

Functional NDC

Der var i år på NDC også et meget stærkt fokus på funktionel programmering. Der var talks med mange af de store kendte funktionsorienterede programmeringssprog. Både med fokus på anvendelse, og andre med de historiske briller på. For eksempel Joe Armstrongs talk Functional Programming the Long Road to Enlightenment: a Historical and Personal Narrative der med medrivende indlevelse gav en historisk beskrivelse af funktionelle programmeringssprog. Herunder tilblivelsen af Erlang hos Ericsson i 80′erne.
I Robert C. Martin (Uncle Bob)’s talk Functional Programming: What? Why? When?, påpeger han problemet med at have muterende state i programmer, når vi ikke længere kan regne med at vores programmer afvikles sekventielt, men derimod potentielt køres parallelt på flere kerner. Her argumenterede han for at bruge funktionelle programmeringssprog med immutability som default. Og så fulgte han i øvrigt op med en sidebemærkning om, at garbage collection var det største hack i software industriens historie.

Kode for hjernen

Et andet spændende perspektiv på funktionel programmering var Adam Tornhills talk Code that fits your brain. Adam gav med sin baggrund i både psykologi og datalogi et spændende indblik i, hvordan vi som softwareudviklere tænker, når vi udviker software. Et eksempel var, at vi generelt som mennesker opfatter skønhed som fraværet af grimhed. Hans analogi til softwareudvikling var, at vi som udviklere har en tendens til ikke at bryde os om kode, der “stikker ud”. Det forstyrrer simpelthen vores fokus. En anden pointe, han havde, var, at vi som udgangspunkt er glade for at tænke i hierarkier. Derfor passer et sprog som Erlang med dets afviklingsmodel med et hieraki af supervisors os rigtig godt.

Eksempler fra den “virkelige” verden

Der var også talks med et mere anvendt fokus. Et par eksempler på det var Rachel Reese’s talk “iOS app development with Xamarin and F#” samt Bryan Hunters talk “CQRS with Erlang”. Rachel viste to helt konkrete eksempler på brug af F# og Xamarin til iOS udvikling. Det ene var en lille task liste Tasky som udnyttede F#’s type providers til integration med SqlLite på telefonen. Det andet eksempel var den gamle windows klassiker minestryger, implementeret i ren F#.
Hunters talk handlede – som titlen indikerer – om CQRS og om hvordan Erlang er et godt sprog til at implementere det i. CQRS er et arkitektur pattern, der løser mange concurrency problemer ved at adskille læsninger og skrivninger. Derved kan man bedre undgå problemer som låsninger. I Hunters virksomhed Firefly logic bruges dette setup til at levere data til mobil apps.

Gennemgående for mange af de mere anvendte talks var, at de var meget orienterede omkring communities. Speakerne var ofte flittigt engagerede i open source projekter og lokale brugergrupper.

Skal man vurdere fremtiden for funktionsorienterede programmeringssprog ud fra indholdet på NDC i år, ser den aldeles lys ud. Ud over de mange talks, der var direkte rettet mod funktionel programmering, var funktionelle sprog som en mulig løsning på multikerneudfordringen et meget gennemgående tema for hele konferencen.

Skrevet af Jakob

Posted in computer.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>