Sikker kode? Gennemgang af mest almindelige hacker angreb



Relaterede dokumenter
Databaseadgang fra Java

PHP 3 UGERS FORLØB PHP, MYSQL & SQL

Website sikkerhed SQL Injections og mere...

Microsoft Inspirationsseminar

ALM / QualityCenter 11 Opgradering

3. PROJEKT, 2 SEMESTER

MySQL i Java. Tutorial lavet af Jákup W. Hansen TSU semester 05.januar 2007

Enterprise Search fra Microsoft

Microsoft Dynamics C5. version 2012 Service Pack 01 Hot fix Fix list - Payroll

Code injection i browsere

Introduktion til Oracle, Datalogi, RUC Af: Jens Lauterbach 2002

Sikre apps på ios og Android. Mads Jensen & Søren

PHP Snippets. De små korte. Skrevet af Daniel Pedersen

Indholdsfortegnelse Databaser og PHP... 3 Opgave... 4 Opgave... 5 Opgave... 6 Sidste opgave er en lille gæstebog... 7 Kilder og nyttige links:...

Hack of the Month opgave 2

Hvad er InfoPath? Et program i Microsoft Office System En desktop applikation Platformen for en ny generation af elektroniske formularer

Microsoft Dynamics NAV & Service Management

Eksamen, DSDS, efterår 2007

Backup Applikation. Microsoft Dynamics C5 Version Sikkerhedskopiering

Citrix CSP og Certificate Store Provider

Transformering af OIOXML til OIOUBL og OIOUBL til OIOXML

Installation og Drift. Aplanner for Windows Systemer Version 8.15

Hosted CRM Outlook client connector setup guide. Date: Version: 1. Author: anb. Target Level: Customer. Target Audience: End User

Overfør fritvalgskonto til pension

Hosted CRM Outlook client connector setup guide. Date: Version: 1. Author: anb. Target Level: Customer. Target Audience: End User

Installation og Drift. Aplanner for Windows Systemer Version

Program Dokumentation PC Software Skrevet af. Gruppen. Version 1.0

Øvelse 9. Klasser, objekter og sql-tabeller insert code here

Webshop integration for DanDomain

VÆR EFFEKTIV SOM SAS PROGRAMMØR MED SAS ENTERPRISE GUIDE 7.12 GEORG MORSING

Fra idé til virkelig med Azure Mobile Services

Eksempel på en database: studenter, kurser, eksamener

Dynamiske Billeder, Image Map & XY coordinater. ASP.NET og Access Databasen.

Programmering I Java/C#

En Kort Introduktion til Oracle

Netværk & elektronik

Computer Networks Specielt om Infrastrukturer og Teknologi

Gode råd til netbankbrugere - sikring af en typisk hjemme-pc med adgang til netbank

Overlad din serverdrift til Microsoft

Hyper V og System Center løsninger

Bemærk! Et PHP script har kun brug for at forbinde én gang til databaseserveren. Det kan så sagtens udføre flere kommandoer vha. denne forbindelse.

Morten Juul Nielsen Produktchef Microsoft Danmark

Indholdsfortegnelse Forord...8 Makroer samt aktivere Udvikler-fanen...10 Makrosikkerhed (Sikkerhedsindstillinger)...13

Hvordan vælger jeg dokumentprofilen?

SharePoint 2007 Fælles platform for kommunikation, videndeling og samarbejde. Uffe Meiner Markedschef, Creuna Danmark A/S

Processer og tråde. dopsys 1

Lær Python dag 1 - modul 1

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 3

SAS USER FORUM DENMARK 2017 USER FORUM. Rune Nordtorp

Microsoft Dynamics C5. Privat hotfix vedr. Timer indberettet i felt 200

Microsoft Dynamics CRM 2013

ComArchive PST Importer For version 3

Hvorfor skal vi bruge objekt orienteret databaser?

Microsoft Development Center Copenhagen, June Løn. Ændring

MS Visual Studio Basic En kort vejledning

Teknologispredning i sundhedsvæsenet DK ITEK: Sundhedsteknologi som grundlag for samarbejde og forretningsudvikling

Vejledning til Retsinformation web services test stubs

Terese B. Thomsen 1.semester Formidling, projektarbejde og webdesign ITU DMD d. 02/

ODBC made easy på dansk (når bare man ved hvordan) Jesper Michelsen, Data warehouse & Analyse

Videregående Programmering Obligatorisk opgave - 3. semester, efterår 2004

Agenda. Muligheder for anvendelse. Komponenter. Features. Restore muligheder. DR og TSM integration. Repository. Demo. Spørgsmål

Vejledning til Teknisk opsætning

TEKNISKE FORHOLD VEDR. ADGANG TIL VP.ONLINE. Brugervejledning

Tredjepart webservices

Dokumentering af umbraco artikeleksport:

University of Southern Denmark Syddansk Universitet. DM503 Forelæsning 11

1 Domæne Design valg User Klassediagran 5

Kort om CoinDB (Mønt- og seddelsamling):

Opsætning af Backup. Hvis programmet registreres korrekt vises nedenstående skærmbillede. Genstart herefter programmet.

Introduktion til programmering

Opsætning af Backup. Dette er en guide til opsætning af backup med Octopus File Synchronizer.

Anvendelse af Model- View koncept i SAS Stored Processer

PHP Quick Teknisk Ordbog

Effektiv ledelse i Videnportaler

Transkript:

Sikker kode? Gennemgang af mest almindelige hacker angreb Developer & Platform Strategy Microsoft http://blogs.msdn.com/henrikwh henrikwh@microsoft.com Agenda Sikkerhed i medierne Trusselssenarier Mest almindelige angreb Buffer overrun Arithmetic Errors SQL Injection Denial of Service Attacks (DoS) Cross-Site Scripting (XSS) http://msdn.blogs.com/henrikwh 1

Sikkerhed i medierne Fra Computerworld.dk Fem danske sparekasser hacket DSB Udskriv andres billetter Datatilsynets hjemmeside hacket Mobiltelefon-orm spredes gennem Symbian Windows XP hacket før premiere Hotmail hacket med én linie kode Post Danmarks hjemmeside gik i sort Velkommen på forsiden Hmmm, der var jeg. Lad mig sige det sådan, jeg kom til at rette fejlen mere om det angreb senere :-/ http://msdn.blogs.com/henrikwh 2

Almindelige typer af angreb Organisatoriske angreb Hackers Beskyttede data Automatiserede angreb Sikkerheds uheld Virus, Trojanske heste, og orme DoS Forbindelse fejler Denial of Service (DoS) Mest anvendte angreb http://msdn.blogs.com/henrikwh 3

Buffer overrun SQL Slammer & Sapphire 1/1 2003, UDP pakke til SQL Server 2000 Fly fik ikke lov til at lette ATM er holdt op med at virke Dele af Internettet holdt op med at virke George Bush blev notificeret Heldigvis var det ikke et rigtig ondsindet angreb. Formålet var udelukkende at brede sig. Læs mere og se koden der var skyld hullet: http://www.blackhat.com/presentations/bh-usa-02/bh-us-02-litchfield-oracle.pdf Buffer Overrun Top of Stack void UnSafe (const char* uncheckeddata) char[4] { } char localvariable[4]; int anotherlocalvariable; strcpy (localvariable, uncheckeddata); int Return address http://msdn.blogs.com/henrikwh 4

Demo Buffer Overrun Beskyttelse mod Buffer Overruns Vær forsigtig når du bruger: strcpy strncpy CopyMemory MultiByteToWideChar Brug /GS compile option i Visual C++ for at se buffer overruns Brug strsafe.h for sikrere buffer håndtering http://msdn.blogs.com/henrikwh 5

Aritmetiske fejl Sker når grænserne af en variabel overskrides Leder til seriøse runtime fejl Er ofte overset og underestimeret Inkluderer: Overflow værdien er for stor for en datatype Underflow værdien er for lille til en datatype Beskyttelse mod aritmetiske fejl Vær bevist omkring grænser for anvendte datatyper Skriv kode der kontrollerer grænser Overvej at bruge sikre, genbrugelige funktioner http://msdn.blogs.com/henrikwh 6

Fang aritmetiske fejl Aritmetiske fejl kan fanges ved at: Bruge checked keyword Projektindstillingerne byte b=0; while (true) { Console.WriteLine (b); checked { b++; } } Hvad er SQL Injection? Manipulering med brugerinput Brugt af hackere til at: Undersøge databaser skemaer og data Undgå autentificering Eksekvere flere SQL-kommandoer Kalde store procedures http://msdn.blogs.com/henrikwh 7

Hvad er der galt? (1 af 2) ID: 1001 SELECT HasShipped FROM detail WHERE ID='1001' Ups, alle data bliver eksponeret ID: 1001' or 1=1 -- SELECT HasShipped FROM detail WHERE ID= '1001' or 1=1 -- ' Hvad er der galt? (2 af 2) Ups, øv, restore ID: 1001' drop table orders -- SELECT HasShipped FROM detail WHERE ID= '1001' drop table orders -- ' Vi holder lukket på ubestemt tid! ID: 1001' exec xp_cmdshell( fdisk.exe ) -- SELECT HasShipped FROM detail WHERE ID= '1001' exec xp_cmdshell('fdisk.exe') -- ' http://msdn.blogs.com/henrikwh 8

Demo SQL Injection SQL Injection C# Find 4 fejl string Status = "No"; string sqlstring =""; try { SqlConnection sql= new SqlConnection( @"data source=localhost;" + "user id=sa;password=password;"); sql.open(); sqlstring="select HasShipped" + " FROM detail WHERE ID='" + Id + "'"; SqlCommand cmd = new SqlCommand(sqlstring,sql); if ((int)cmd.executescalar()!= 0) Status = "Yes"; } catch (SqlException se) { Status = sqlstring + " failed\n\r"; foreach (SqlError e in se.errors) { Status += e.message + "\n\r"; } } catch (Exception e) { Status = e.tostring(); } http://msdn.blogs.com/henrikwh 9

Beskyttelse mod SQL Injection Brug stored procedures eller parameteriseret SQL forespørgsler til datatilgang Rens alt input Behandl alt input som skadeligt, indtil andet er bevist Kig efter valid data, afvis alt andet Overvej at bruge regulære udtryk for at fjerne skadelige karakterer Anvend mindste privilegier Kør aldrig som sa Begræns adgang til indbyggede stored procedures Lad være med at udskrive database fejl Denial of Service (DoS) angreb CPU udsultning Memory udsultning Resource udsultning Network udsultning http://msdn.blogs.com/henrikwh 10

Hvad er Cross-Site Scripting? En teknik der muliggør at hackere kan Eksekvere script i en klients webbrowser Indsætte <script>, <object>, <applet>, <form>, og <embed> tags Stjæle websession-information og autentificeringscookies Tilgå klientcomputeren Enhver webside der renderer HTML og indeholder brugerinput er udsat Cross Site Scripting Et eksempel <% WelcomeMessage(Request.QueryString["name"]); %> <script runat='server'> void WelcomeMessage(string name) { Response.Out.Write("<h2>Welcome, {0}</h2>", name); } </script> Hvad hvis name ser ud som følgende: Bob<img src='www.badsite.com/bad.gif'/> eller: Bob<script> </script> http://msdn.blogs.com/henrikwh 11

Forsvar mod Cross-Site Scripting angreb Lad være med at: Tro på brugerinput Udskrive web-baseret brugerinput, medmindre du har valideret det Gemme hemmelige informationer i cookies Gør følgende: Brug HttpOnly cookie mulighed IE 6 SP1 Kun http adgang ikke script Brug <frame> sikkerhedsattributten Udnyt.NET sikkerhedsfunktionaliteten Canonicalization Input kan skrives på mange måder Et filnavn kan f.eks. skrives på mange måder c:\temp\somefile.dat somefile.dat c:\temp\subdir\..\somefile.dat c:\ temp\ somefile.dat..\somefile.dat http://msdn.blogs.com/henrikwh 12

Den samme fil! MySecretFile.txt MySecretFile.txt. MySecr~1.txt MySecretFile.txt::$DATA Den samme url URL! http://www.foo.com http://www%2efoo%2ecom http://www%252efoo%2ecom http://172.43.122.12 http://2888530444 http://msdn.blogs.com/henrikwh 13

Lad være med at tro på brugerinput Valider alt input Antag at alt input er skadeligt, indtil andet er bevist Kig efter valid data, afvis alt andet Begræns, afvis, og rens brugerinput med Type checks Length checks Range checks Format checks Validator.ValidationExpression = "\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"; Resourcer Bøger Writing Secure Code 2 Improving Web Application Security Hunting Security bugs Links Microsoft Security Site (all audiences) http://www.microsoft.com/security MSDN Security Site (developers) http://msdn.microsoft.com/security TechNet Security Site (IT professionals) http://www.microsoft.com/technet/security http://msdn.blogs.com/henrikwh 14

2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary. http://msdn.blogs.com/henrikwh 15