© Anders Ingeborn 2002 Säkerhetsanalys av applikationer Internet Security Summit 2002
© Anders Ingeborn 2002 Vem är Anders Ingeborn? • Civilingenjör Datateknik KTH • Säkerhetkonsult i eget företag – Fokus på produktevaluering • Frilansskribent • Föredragshållare
© Anders Ingeborn 2002 Bakgrund • Teorin – Många bra algoritmer – Många bra protokoll – Många bra modeller • Praktiken – Många osäkra produkter – Många osäkra IT-system – Många osäkra företag
© Anders Ingeborn 2002 Vad är det som brister? • Sällan matematiken • Ofta lösenorden • Design – Rätt mekanism på fel plats – Fel mekanism på rätt plats • Implementation – Slarv, stress...
© Anders Ingeborn 2002 Granskning/validering • Exempel på två problemområden – Kryptografi (t.ex. autentisering) – Minneshantering på låg nivå • Typer av granskning – Interaktion, ej labbmiljö – Maskinkodsanalys, labbmiljö – Källkodsanalys (annan föreläsning) • Kunden ofta mer intresserad än leverantören?!
© Anders Ingeborn 2002 Autentisering • Bevisa att något är äkta – T.ex. en identitetsangivelse • Användningsområde för lösenord – Naivt: ”Sesam öppna dig” – Inte så lyckat om någon kan avlyssna – Inte så lyckat om någon kan läsa databasen
© Anders Ingeborn 2002 Saltvärden • Bra för att ”skydda” lösenord – Lagring i lösenordsdatabas – Förhindra att två användare med samma lösenord får samma krypterade lösenord – En användare ska inte kunna dra slutsatser om en annan användares lösenord även om han/hon får en kopia av /etc/shadow etc • Slutsats – ”Saltvärden är bra”
© Anders Ingeborn 2002 Rätt sak på fel plats • Teori – Autentisering behöver säkerhet – Saltvärden är bra; ger säkerhet • Marknadsföring – ”...Our security measures encompass a complete package...”
© Anders Ingeborn : Autentisering
© Anders Ingeborn 2002 Utvärdering • Användarnamn i klartext • Autentisering i ett steg, ”Sesam…” • Ingen serverautentisering • Samma lösenord vid flera försök ger olika ”kryptosträng” – Saltvärden? • Slutsats: En bra mekanism använd i fel sammanhang
© Anders Ingeborn 2002 Liten liknelse • Ganska bra – Vaktpost ropar ”14” – Soldat svarar ”7” – Summa 21? Differens 7? • Ganska dåligt – Soldat ropar ”14 och 7”
© Anders Ingeborn 2002 En bättre autentisering • VPN implementeras ofta med protokollet IPSec • Autentisering, sekretesskydd, riktighetsbevarande etc. • Bättre än det mesta, t.ex. – Publika algoritmer – Challenge/response – Ömsesidig autentisering
© Anders Ingeborn 2002 IKE Aggressive-Mode, PSK Initiator Responder HDR, SA, KE, Ni, IDii --> <-- HDR, SA, KE, Nr, IDir, HASH_R HDR, HASH_I --> • Får man som angripare checksumman kan man försöka en attack med ordlista på lösenord/PSK • Slutsats: Även bra protokoll behöver anpassas till hotbilden!
© Anders Ingeborn 2002 Nu något om kryptering • Kryptering vs. nonsens • LDAP-kryptering, MD5-krypterat • ”...Krypterar med 256-bitars AES och dekrypterar med 2048-bitars Diffie Hellman...” • ”...A folder containing secret or confidential information becomes invisible when the archive is locked...”
© Anders Ingeborn 2002 Kryptografi/maskinkodsanalys • Inget nytt under solen – Auguste Kerckhoff – La Cryptographie Militaire 1883 – Säkerheten ska ligga i nyckeln inte i algoritmen • ”Hemlig specialutvecklad kryptering”
© Anders Ingeborn 2002 Räcker detta? • Det finns uppenbarligen gott om möjligheter att göra fel i alla fall • Program för t.ex. signering av filer – Bra algoritm, bra implementation, bra nyckel…men… – Privata nyckeln inkompilerad som en konstant i programkoden utan skydd • Glöm inte att skydda nyckeln!
© Anders Ingeborn : Binärkodsanalys
© Anders Ingeborn 2002 Något om ECB-mode • Electronic Code Book • Blockvis, oberoende kryptering – Block av krypterade data kan bytas ut • Riktighetsindikerande funktion – T.ex. en icke-linjär checksumma
© Anders Ingeborn : Exempel på ECB-mode
© Anders Ingeborn : Användning av ECB-mode badpassword:1007: 39ead569b79c7ea239ead569b79c7ea2: 12f21f3c752398a9b2b692c58ff9612e: • Lösenordet var ” ” • Men inget lösenord blir någonsin ”starkare” än 7 tecken
© Anders Ingeborn 2002 Minneshantering • Vanligaste typen av säkerhetsbrist de senaste tio åren – Rapport fr. Oregon Institute of Technology • Programmeringsspråken C & C++ • Övergripande förklaring – Skriva utanför reserverat minne – Skriva över sparad instruktionspekare – Styra om exekveringen till egen kod
© Anders Ingeborn 2002 Fyra generationer • Överskrivning i stack-minnet – strcpy, strcat etc. • En byte utanför – vektor[17] ger • Formatsträngar – sprintf( dst, ”%s”, src ); • Överskrivning i heap-minnet – Kontrollblock varvat med minnesblock
© Anders Ingeborn 2002 >telnet labbserver OK labbserver HELP %8x%8x%8x 5e6f7a8b9c0d1e2f3a4b5c6d >telnet labbserver 80 GET /index.html HTTP/1.1 Basic-Authentication: AAAAAAA...AAAAAA Connection to host lost... 5: Minneshantering/interaktion
© Anders Ingeborn 2002 Fördel med interaktion • Enkelt, kräver inga avancerade verktyg • Identifierar tanke-/beräkningsfel – ”Rätt” funktion: strncpy vs. strcpy – ”Rätt” plats: maxgräns för dynamisk inmatn. – Fel i alla fall – Beräknat maxgränsen fel • Ganska komplext med automatiserad maskinkodsanalys
© Anders Ingeborn : Exempel på tankefel while( buf[bufptr] != '\n' && buf[bufptr] != '\0' ) { if( buf[bufptr] == ' ' && argptr == 0) { argptr = bufptr + 1; } bufptr++; } if( argptr == 0 ) { strncpy( cmd, (const char *)buf, bufptr ); cmd[bufptr] = 0x00; printf( "Server log: Command: %s\n", cmd ); } else { strncpy( cmd, (const char *)buf, argptr-1 ); cmd[argptr-1] = 0x00; strncpy( args, (const char *)buf+argptr, (bufptr-argptr) ); }
© Anders Ingeborn 2002 Studera funktionsanrop • Maskinkodsanalys • Vilka argument skickas? • Vilka lokala variabler används? • Vilka funktioner anropas? – Importerade funktioner från delade systembibliotek?
© Anders Ingeborn : Exempel på ”formatsträng”
© Anders Ingeborn 2002 Avslutning • Falsk kryptografisk säkerhet är farligare än ingen säkerhet alls • Fel i minneshantering ger lömska fel • Räkna upp egenskaper.. – Nyckellängder, funktioner •..sämre än att utvärdera säkerheten – Common Criteria, ITSEC, TCSEC/OrangeBook, FIPS-140 etc.
© Anders Ingeborn 2002 Frågor?