Počítačová bezpečnost 3. Bezpečnostní rizika © Milan Keršlágerhttp:// Obsah: ● závady v software a jejich klasifikace ● exploit, útok ● bezpečnostní riziko, zabezpečení systému ● security through obscurity ● sociální inženýrství, hesla, zálohování
Identifikace hrozeb ● podle původu: ● přírodního původu, technické selhání ● lidská chyba, hacking, sabotáž ● podle cíle: ● software → způsobené chybami v software ● lidské zdroje → sociální inženýrství ● technické prostředky → fyzické narušení systému – nebudeme řešit, protože se nakonec skončí u software
Vznik závady v software 1) při návrhu ● chybně navržený nebo vybraný program či OS 2) při implementaci ● programátorská chyba způsobí zranitelnost ● program využívající zranitelnost je exploit 3) při provozu ● špatná implementace či nastavení ● typicky chyba obsluhy počítačového systému
Programátorská chyba ● opomenutí kontroly, logická chyba, překlep, … ● nebezpečné u nedůvěryhodných vstupů – např. data přicházející z počítačové sítě, Internetu – webový prohlížeč, ový klient, … ● často u složitých implementací – RPC → sdílení souborů v síti – SMB (!), NFS – síťové servery (Apache + PHP), ostatní (Skype, Flash...) ● použití nebezpečných funkcí ● například strcpy() & spol. v jazyce C – jde o systematickou chybu (chybný přístup k řešení) – existují „příručky bezpečného programování“
Zranitelnost ● způsobeno programátorskou chybou ● děláme audity → ověřování bezpečnosti ● audit použitých zdrojových kódů – dělá se těžko u uzavřeného kódu (typicky komerčního) – certifikace systému podle nějaké specifikace ● většinou čistě formální záležitost (nižší úrovně) ● význam má u specializovaných systémů (OpenVMS) ● penetrační testy se typicky nedělají ● audit funkce a nastavení systému – přidělená oprávnění musí být vždy minimální nutná ● zaznamenáváme a analyzujeme činnost systému – standardní logy, audit log, forenzní analýza
Klasifikace zranitelností ● není celosvětově jednotné ● každý softwarový dům podle svého – Red Hat a Microsoft mají stejné názvy ☺ ● obecně tři úrovně: 1) ohrožení na úrovni uživatele – chyba v programu (krádež, poškození dat,...) 2) zvýšení oprávnění lokálního uživatele – uživatel (proces) se stane správcem 3) vzdálený přístup do systému – přístup neautorizovaného uživatele (přes síť)
Red Hat Linux & MS Windows 1) low ● zneužití je obtížné nebo je dopad minimální 2) moderate ● zneužití je zmírněno implicitním nastavením, obtížností, auditováním (záznamem operací) 3) important ● ohrožení uživatelských dat nebo syst. prostředků 4) critical ● ohrožení síťovým červem bez účasti uživatele
Databáze zranitelností ● CVE (Common Vulnerabilities and Exposures) ● MITRE Corporation, finance od organizací USA ● každý případ má svůj identifikátor ● NVD NIST – vláda USA ● CERT (Computer emergency response team) ● Carnegie Mellon University, USA ● bezpečnostní problémy Internetu ● národní organizace (Evropa, Brazílie, Indie, …)
Exploit ● konkrétní využití zranitelnosti ● typicky specializovaná aplikace – snadno dostupné pro starší zranitelnosti (Internet) – problém toho, že exploit má náskok před aktualizací ● black hat (to jsou ti zlí), white hat (to jsou ti hodní) ● často ve formě skriptu pro masivní útok – necílený útok, hledáme zranitelný počítač, službu – následuje snaha o elevaci (zvýšení) oprávnění ● nejdřív se dostane do počítače, pak se stane správcem systému ● forma exploitu ● remote explotit → ze sítě – nejnebezpečnější ● local exploit → ze stejného počítače – obtížnější
Útok ● jde o využití zranitelnosti ● výsledkem škoda na aktivech (tj. „majetku“) ● útok může být úmyslný i neúmyslný ● další rozdělení útoků: ● pasivní – odposlech komunikace ● aktivní – přerušení → DoS, porucha, vymazání,... – změna → programu, dat, komunikace – přidání do toku dat
Alice a Bob ● fiktivní jména ● používáno při vysvětlování (protokolů kryptografie) ● jména jako první písmena ● označuje strany A, B ● Mallory (malicious) – Man in the middle ● Eve (Eva) – odposlouchávající (eavesdropper) ● Trent – důvěryhodný (trusted)
Hacker a cracker ● hacker ● tzv. „white hat“ (tedy ten hodný) ● hluboké znalosti o IT ● opravy software, psaní systémových funkcí apod. ● původně člověk vyrábějící nábytek sekerou ● cracker (to crack – zlomit) ● tzv. „black hat“ (tedy ten zlý) ● zneužívá znalosti v IT ke svému prospěchu ● útočník → vlamování do systémů
Riziko (míra hrozby) ● závisí na mnoha faktorech: – četnost výskytu → dle statistiky incidentů – příležitost → umožněn přístup k nechráněným datům – motiv → při tlaku na zaměstnance (propouštění apod.) – schopnosti → potřeba speciálních znalostí k útoku – peníze → ziskovost útoku – vybavení → dostupnost a cena nutných prostředků – čas → nutná doba trvání útoku – atraktivitu aktiva → využití pro „reklamu“ – počet osob → počet lidí s přístupem k aktivům – stáří aktiva → zde např. zběhlost posuzované osoby
Využití míry rizika ● odstranění slabých míst ● soustředění se na podstatné problémy ● cracker půjde cestou nejmenšího odporu – proto nemá smysl posilovat silná místa ● problém necíleného útoku ● automatizované scanování na známé problémy – zero-day nebo naopak „staré“ či „typické“ zranitelnosti ● útočník získá více cílů, vybere si nejzajímavější – cíl je napaden, i když zdánlivě „není zajímavý“
Bezpečnostní mechanismy ● preventivní ● aktualizace, nastavení oprávnění, personální politika, školení, … ● detekční ● analýzy toku dat, scanování systému, heristické metody sledování činnosti, statistické metody, … ● opravné ● odstranění bezpečnostního problému ● analýza, forenzní analýza
Oblasti zabezpečení 1) fyzické zabezpečení ● zámky, mříže, hlídač, alarm, … ● použití vhodné technologie (bezdrát vs. optický kabel) 2) softwarové zabezpečení ● problém programátorských chyb (audity, aktualizace) ● výběr vhodného software (operační systém, ale i aplikace) ● správné nastavení software (oprávnění, šifrování, hesla, …) 3) personální opatření ● zaměstnanci – školení, zodpovědnost, hmotná odpovědnost... ● klienti – kompromis mezi omezením a volným přístupem
Aktualizace ● vydávání oprav → aktualizace ● řešíme pozdě, ale alespoň něco – tzv. zero-day zranitelnosti ● typicky není možné reagovat tak rychle, jak by bylo potřeba ● denní cyklus aktualizace je dnes již moc dlouhý ● je nezbytně nutné aktualizace aplikovat – zajistit restart služby nebo celého počítače – Linux aktualizace prostřednictvím distribuce ● na rozdíl od Windows aktualizace pro celý systém ● antivirus zde nepomůže – chyba v programu → antivirus je obejit
Closed source software ● software s uzavřeným kódem ● klasický vývoj software v komerčních firmách ● zákazník se ke zdrojovým kódům nedostane – nelze ověřit implementaci, musíme důvěřovat firmě – zákazník je pro firmu zdrojem zisku – firma proto neprozradí nedostatky svého software ● přesto může zdrojový kód uniknout – dobrovolné předání vládní bezpečnostní agentuře – krádež kódu → prodej → cracker → botnet → zisk ● profesionální programátor není automaticky lepší – neexistuje zpětná vazba → kód je horší (Gartner)
Open source software ● software s otevřeným kódem ● fenomén poslední doby – obdoba stavby „obecního fotbalového hřiště“ – vložím malé úsilí, vrátí se mnohonásobné úsilí ostatních – pro studenty „snadný úlovek do životopisu“ ● zdrojový kód je volně dostupný – lze ověřit implementaci (celosvětově je odborníků dost) – snadněji se hledají chyby → tzv. „snadnější zneužití“ – security through obscurity však NEfunguje – kvalitní je však zejména/jen ten kód, který je zajímavý
Security through obscurity ● označení s negativním podtónem ● zvýšení bezpečnosti utajením – zdrojového kódu, zvolené implementace, protokolu, … ● kód má či může mít chyby – tvůrce věří, že utajením se na ně těžko přijde – obdoba vojenské taktiky „zavřených úst“, resp. utajení – problém je, že existují lidé, kteří kód nepotřebují ● tzv. reverzní inženýrství (GSM, Cisco, MSIE, Windows, SMB…) ● exploity kolují v uzavřené komunitě crackerů → vysoké riziko ● opačný přístup je bezpečnost vycházející z návrhu – bezpečnost lze doložit, pak i získat vysokou certifikaci
Sociální inženýrství ● vlastně jde o podvodné jednání ● manipulace s lidmi, cílem získání informace ● ochranou je pouze vzdělávání uživatelů ● klasické uplatnění ● získání utajovaných informací – podvodné y (phishing) ● přístupová hesla, čísla kreditních karet,... – podstrčení flash disku nebo CD s virem atd. ● Kevin Mitnick – využíval soc. inž. spíše, než znalosti v IT
Autentizace a autorizace ● ověření identity ● též autentifikace (FR), autentikace (EN) ● proběhne-li, dojde k autorizaci – uživatel-program, programy, autenticita zprávy ● metody: – jméno + heslo, PIN, jednorázové heslo,... – biometrie (otisk prstu, duhovka, hlas,...) – technický prostředek (USB klíč, privátní klíč,...) – kontrolní otázky
Bezpečné heslo ● analogie hesla u vojáků na patrole ● důležitá je kvalita hesla – ne: personální údaje, slova, co je vidět, nepsat ho... – počet znaků je základ mocniny, délka je exponent (lepší) ● jak vytvořit heslo – používání mnemotechnické pomůcky – písmena, čísla, speciální znaky, velká/malá ● útoky na heslo – odposlechnutí (stačí i přibližně – rytmus, délka) – slovníková metoda (zkoušíme) – hrubá síla na zašifrovaný tvar (jednocestná funkce)
Zálohování ● též bezpečnostní opatření ● vyměnitelná média → umístění dále od počítače – využívání zálohovacího software – využívání snímků souborového systému – též souborový systém s historií ● typy záloh – úplná – přírůstková (změny od poslední zálohy) – rozdílová (od poslední úplné zálohy) ● cyklus pro zálohovací média, šifrování, do trezoru