Säkra Designmönster (Secure Design Patterns)

Relevanta dokument
Klient/server. Översikt. Lektion 1: Webbtekniker från Microsoft. Webbteknik från Microsoft. Klient/server. Designmönster. Utrullning.

Designprinciper för säkerhet och Epilog. Marcus Bendtsen Institutionen för Datavetenskap (IDA) Avdelningen för Databas- och Informationsteknik (ADIT)

Objektorienterad programmering, allmänt

Viktiga egenskaper hos ett program (Meyer): Objektorienterad programmering, allmänt. Vilka egenskaper vill vi att våra program ska ha?

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 11 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Objektorienterad Programkonstruktion. Föreläsning 6 23 nov 2015

Programmering = modellering

Generell säkerhet. Loggning - Hur mycket ska man logga? Inloggningsrutinerna i Unix. Loggning fortsättning

Mobilt Efos och ny metod för stark autentisering

WEBBSERVERPROGRAMMERING

TDDD78 Objektorientering: Lagring och livstid

1ME323 Webbteknik 3 Lektion 6 API. Rune Körnefors. Medieteknik Rune Körnefors

OWASP Topp De 10 allvarligaste riskerna i webbapplikationer OWASP East Sweden: Uppstartsmöte

Webbserverprogrammering

Objektorienterad Programkonstruktion. Föreläsning 7 24 nov 2015

Separation of Concern. Objekt-orienterad programmering och design (DIT953) Niklas Broberg / Johannes Åman Pohjola, 2018

Objektorienterad programmering. Grundläggande begrepp

Teknisk testning för otekniska testare

Mobilt Efos och ny metod för stark autentisering

Introduktion till säkerhet Grundläggande begrepp

Om fem stycken :GameObject ligger i vägen för b:bullet så kommer alltid loopen köras fem gånger. Välj ett alternativ

Programmering B med Visual C

Mobilt Efos och ny metod för stark autentisering

Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier

Programutvecklingsprojekt Projektgrupp Elvin. Detailed Design Document

Undervisningen i ämnet webbutveckling ska ge eleverna förutsättningar att utveckla följande:

TUTORIAL: SAMLING & KONSOLL

Capitex dataservertjänst

Designmönster - EMW. Kent Petersson epost1: kentp@cs.chalmers.se epost2: kent.petersson@emw.ericsson.se URL:

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

Datum: Version: Författare: Christina Danielsson Senast ändrad:

Projekt Fake för Virtutech

Lösenordsregelverk för Karolinska Institutet

Objektorienterad Programkonstruktion. Föreläsning jan 2016

5 säkerhetsaspekter att tänka på vid skapandet av din digitala assistent

Personuppgiftspolicy beebyte AB

WEBBTEKNIK. Ämnets syfte

WEBBTEKNIK. Ämnets syfte

TDIU01 Programmering i C++

Objektorientering: Lagring och livstid

TDDC76 - Programmering och Datastrukturer

TUTORIAL: KLASSER & OBJEKT

Sync Master startas via Task Scedule (schemaläggaren). Programmet kan köras på servern utan att någon är inloggad på servern.

V3.0 VERSIONSINFORMATIO N

Designmönster i Javascript

Databasföreläsning. Del 2 lagrade procedurer, vyer och transaktioner

Static vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design Alex Gerdes, 2016

Objektorientering: Lagring, räckvidd och livstid

Metoder (funktioner) Murach s: kap Winstrand Development

TDDD78, TDDE30, 729A Typhierarkier del 3 När och hur vill vi använda dem? Några Best Practices

LATHUND FÖR MALVIN. 1 Registrera ny användare Logga In Glömt lösenord Annonsering Skapa annons...

DIG IN TO. Nätverksadministration

Designmönster, introduktion. Vad är det? Varför skall man använda mönster?

F9 - Polymorfism. ID1004 Objektorienterad programmering Fredrik Kilander

Säkerhet ur ett testperspektiv

Modul 6 Webbsäkerhet

1.1 Runnable och Thread

Separation of Concern. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 Johannes Åman Pohjola, 2017

Lab5 för prgmedcl04 Grafik

Regelverk. Infrastrukturen för vidareförmedling av grundläggande uppgifter om företag. Bilaga A. Tekniska ramverk. Version: 1.0

Biometria Violweb. Installation kundportalaccess - för IT-administratörer. Mars 2019

TDP013. Webbprogrammering och interaktivitet. AJAX, CORS & jquery. Marcus Bendtsen Institutionen för Datavetenskap (IDA)

SCRUM. Marcus Bendtsen Institutionen för datavetenskap

Security Target (ST) för The Secure Channel (server)

Tentamen i TDIU16 Process- och operativsystemprogrammering

Static vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018

Objektorienterad Programkonstruktion. Föreläsning 3 7 nov 2016

Sync Master startas via Task Scedule (schemaläggaren). Programmet kan köras på servern utan att någon är inloggad på servern.

Gissa det hemliga talet

Behörighetssystem. Ska kontrollera att ingen läser, skriver, ändrar och/eller på annat sätt använder data utan rätt att göra det

HP Pull Print-lösningar

Snabbstartsguide. Få hjälp Klicka på frågetecknet om du vill söka efter hjälpinnehåll.

EIT060 Datasäkerhet - Projekt 2. Jacob Ferm, dt08jf0 Johan Paulsson, dt08jp8 Erik Söderqvist, dt08es8 Magnus Johansson, dt08mj9 26 februari 2011

Avancerade Webbteknologier 2. AD11g Göteborg 2012 Säkerhet

Modulär design. Objekt-orienterad programmering och design (DIT953) Niklas Broberg / Johannes Åman Pohjola, 2018

KOM I GÅNG MED DIN HANDBOK STANDARD FRÅN THOLIN & LARSSON

En verktygslåda för tjänsteorientering

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Linuxadministration I 1DV417 - Laboration 7 SSH-magi och systemtrolleri. Marcus Wilhelmsson 6 mars 2013

Fördjupande uppsats i datalogi

Regelverk. Infrastrukturen för vidareförmedling av grundläggande uppgifter om företag. Bilaga A. Tekniska ramverk. Version: 3.0

1 Klasser och objektorientering Vad är objektorientering?

SOLID är en akronym för fem stycken designprinciper som används vid mjukvaruutveckling. SOLID står för:

Properties. Användbara metoder som kan anropas i propertychanged:

Objektorienterad programmering

SKOLFS. beslutade den XXX 2017.

Undervisningen ska ge eleverna tillfälle att arbeta i projekt samt möjlighet att utveckla kunskaper om projektarbete och dess olika faser.

Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl

Filleveranser till VINN och KRITA

Kristoffer Eriksson Christer Oscarsson Andreas Dahlberg Martin Bengtsson

Kopiering av objekt i Java

Grafiska användargränssnitt i Java

Webbprogrammering, grundkurs 725G54

Webbtjänster med API er

Nyhetsdokument Vitec Energiuppföljning

Static vs Dynamic binding Override vs Overload. Objekt-orienterad programmering och design Alex Gerdes och Sólrún Halla Einarsdóttir, 2018

Modulär design Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

Övningsuppgift. Bankkonton. Steg 2. Författare: Mats Loock Kurs: Inledande programmering med C# Kurskod:1DV402

Övningsuppgifter kapitel 8

" «Observable» DataGenerator" betyder att klassen DataGenerator ärver från den abstrakta klassen Observable.

Transkript:

Säkra Designmönster (Secure Design Patterns) Marcus Bendtsen Institutionen för Datavetenskap (IDA) Avdelningen för Databas- och Informationsteknik (ADIT)

Säkra designmönster Beskrivningar eller mallar som beskriver en generell lösning på ett säkerhetsproblem och som kan användas i många olika situationer. Ett designmönster är tänkt att minska antalet sårbarheter som av misstag introduceras i kod och att minska konsekvensen av sårbarheterna. Tre kategorier: arkitektur, design och implementation. 2

Kategorier Arkitektur: Fokuserar på högnivåallokering av ansvar mellan olika komponenter, och kommunikationen mellan komponenterna: Privilege separation (PrivSep) Design: Adresserar problem med designen av en komponent: Secure factory Secure chain of responsibility Implementation: Lågnivå, applicerbara i vissa funktioner i ett system: Secure logger Clear sensitive information 3

Privilege separation (PrivSep) Syfte: Reducera mängden kod som körs med specialrättigheter (admin/root) utan att minska funktionaliteten. Motivation: I många applikationer är det endast ett fåtal operationer som faktiskt kräver administrativa rättigheter, samtidigt som en stor mängd komplex kod kan köras med låga rättigheter utan att det förändrar utfallet. 4

Privilege separation (PrivSep) root Lyssna på trafik på nätverket. Begäran från en användare root Skapa en process som har minsta möjliga rä;gheter. Utan rättigheter Auten>sera (komplex kod) root Skapa en process med auten>serad användares rä;gheter. Användare FortsäD köra programmet som användaren. 5

Privilege separation (PrivSep) Utan rättigheter Auten>serar (komplex kod) Användare FortsäD köra programmet som användaren. root Lyssna på nätverket. root Skapa process med minsta möjliga rä;gheter. Majoriteten av koden körs med låga eller användarens rättigheter. Om det finns en sårbarhet så kommer den som attackerar endast få låga rättigheter. Specialtestning och verifiering kan göras på kod som körs med administrativa rättigheter. root Skapa en process med användarens rä;gheter. 6

Secure Factory Syfte: Separera säkerhetsaspekterna av att skapa ett nytt objekt ifrån objektet själv. Motivation: An användare får tillgång till ett objekt som har funktionalitet som beror på användarens rättigheter. 7

Secure Factory AbstractSecureFactory +getinstance() : AbstractSecureFactory +getobject(givencredentials : SecurityCredentials) : SomeObject ConcreteSecureFactory1 +getobject(givencredentials : SecurityCredentials) : SomeObject ConcreteSecureFactory2 +getobject(givencredentials : SecurityCredentials) : SomeObject Att skapa SomeObject görs genom: AbstractSecureFactory.getInstance().getObject(securityCredentials) Det returnerade objektet, SomeObject, är ett objekt som har de korrekta rättigheterna. 8

Secure Factory Inne i fabriken: 1. Använder den nuvarande konkreta implementationen av AbstractSecureFactory. 2. Inspekterar SecurityCredentials som skickades vid anropet. 3. Skapa en instans av en (för rättigheterna) passande SomeObject. SomeObject LowPrivilegeSomeObject HighPrivilegeSomeObject MidPrivilegeSomeObject 9

Secure Factory Den som anropar, samt SomeObject, innehåller inte någon kod eller logik för att kontrollera rättigheter. SomeObject returneras alltid från fabriken, och fabriken väljer korrekt implementation. Det är lätt att byta hur rättigheter kontrolleras genom att byta konkret implementation av AbstractSecureFactory. Konkreta implementation av SomeObject behöver inte implementera kod för funktioner som inte ska användas av den som ber om objektet. LowPrivilegeSomeObject implementerar inte kod för att kunna skriva till disk. 10

Secure Chain of Responsibility Avsikt: Koppla bort logiken som avgör rättigheter från den del av programmet som begär en viss funktionalitet. Motivation: Applikationer behöver ofta tillåta och avslå vissa funktioner beroende på vem som anropar. 11

Secure Chain of Responsibility Hantera begäran Hantera begäran Hantera begäran eller avvisa hela begäran Begäran samt användarens autentisering Rapport generator för chefer Rapport för sta>s>ker Rapport för säljavdelning Skicka vidare begäran om rättighetskontroll misslyckas Skicka vidare begäran om rättighetskontroll misslyckas 12

Secure Chain of Responsibility Valet av funktionalitet är dolt från den som anropar, vad som returneras beror på användarens rättigheter. Den som anropar vet inte om vart dess begäran har hanterats. Extremt enkelt att lägga till och ta bort hanterare i kedjan. Kan till och med göras dynamiskt. Hantera begäran Hantera begäran Hantera begäran eller avvisa hela begäran Begäran samt användarens autentisering Rapport generator för chefer Rapport för sta>s>ker Rapport för säljavdelning Skicka vidare begäran om rättighetskontroll misslyckas Skicka vidare begäran om rättighetskontroll misslyckas 13

Secure Logger Avsikt: Förhindra att en attack delger potentiellt användbar information om ett system genom loggar, samt förhindra att en attack kan döljas från loggar. Motivation: Ett systems loggar innehåller ofta väldigt mycket användbar information om systemet och dess användare. 14

Secure Logger Applikation Logg Säker loggskrivare Skyddad data Logg-vy Oskyddad data Loggläsare 15

Secure Logger Det går inte att på vanlig väg läsa loggfiler eftersom de nu är krypterade. Loggläsaren är nödvändig för access till loggfiler, och den kräver autentisering. En attack som lyckas få innehållet i loggfilerna har ingen nytta av innehållet. Applikation Logg Säker loggskrivare Skyddad data Logg-vy Oskyddad data Loggläsare 16

Clear Sensitive Information Avsikt: Det är möjligt att känslig information har sparats i resurser som återanvänds efter att en applikation har avslutats eller en användarsession slutförts. Känslig information ska förstöras i dessa resurser. Motivation: I många fall så innebär frigörandet av resurser inte att de tas bort. Till exempel så markeras minne som ledigt, och innehållet tas först bort när någon behöver platsen. Detta kan göra att information som är känslig som man tror är borttagen kan läcka. 17

Clear Sensitive Information Frigör resurs Rengör data Lämna till pool Applikation Frigör aldrig direkt Pool Hämta resurs 18

Clear Sensitive Information ClientInfo::~ClientInfo() { this->ipaddr = 0; } this->trustlevel = BOGUS; this->numfaultyrequests = 0; 19

Secure Design Patterns Ett designmönster är tänkt att minska antalet sårbarheter som av misstag introduceras i kod och att minska konsekvensen av sårbarheterna. När man använder designmönster så utnyttjar man många års erfarenheter från andra som gjort misstag, och du använder best practice. Det hjälper också när man pratar om kod och design med andra utvecklare. Många användbara säkra designmönster: C. Dougherty, K. Sayre, R. C. Seacord, D. Svoboda, K. Tagashi. Secure Design Patterns. Technical Report CMU/SEI-2009-TR-010. 20

www.liu.se