Co je software CIA, nástroje aplikační bezpečnosti a další
Víte, co je to CIA a jak souvisí se software? Co je to SAST, DAST nebo WAF? Umíte zajistit aplikační bezpečnost pomocí nástrojů? Víte, jak psát bezpečný kód? Mám pro vás něco, kde se to naučíte.
🏆 Téma: Software CIA
- C = confidentiality (důvěrnost), I = integrity (integrita), A = availability (dostupnost).
- CIA je základní kybersecurity koncept, který se týká bezpečnosti software.
- Pokud ve firmě začínáme se zabezpečením, je CIA typicky ta první věc, na kterou se obracíme.
- Musíme si jako první určit, co je pro firmu důležité, jaká ze tří vlastností buda ta prioritní.
- Např. státní organizace upřednostňují důvěrnost, zatímco ty soukromé dostupnost.
- Např. IT systémy upřednostňují důvěrnost, zatímco OT systémy dostupnost.
- Musíme si jako první určit, co je pro firmu důležité, jaká ze tří vlastností buda ta prioritní.
- Jedna z vlastností bude vždy převyšovat, ale to neznamená, že ty zbylé nebudou splněny vůbec.
- Pro každý koncept musíme definovat bezpečnostní požadavky.
- Zamyslete se nad nejhorším možným scénářem - co se stane, když se nepovede dostatečně zajistit CIA každé části systému.
- Kolik a jaká data mohou být ovlivněna?
- Od jaké doby je nedostupnost považována za závažný problém?
- …
Jak zajistit důvěrnost
- Cílem confidentiality je ochrana proti neautorizovanému přístupu k datům.
- V kybersecurity světě nemusí jít jen o systémovou záležitost, ale i o fyzickou (zamknutí počítače nebo dokumentů v trezoru).
- Např. v internetovém bankovnictví chci vidět jen svoje údaje a nechci, aby moje údaje viděl někdo jiný.
- Confidentiality zajišťujeme pomocí silného šifrování, access controls (autorizace) nebo stegonografie.
- Confidentiality je závislá na integrity, tzn. že nemůže být bez integrity zaručena.
Jak zajistit integritu
- Cílem integrity je ochránit spolehlivost dat a zabránit jejich neautorizovanému odstranění.
- Zároveň zajišťuje, že software funguje tak, jak je plánováno.
- Integrity zajišťujeme pomocí access controls, logování a monitoringu, různými typy validace, intrusion detection systémy a autentizací.
Jak zajistit dostupnost
- Dostupnost zajišťuje, že jsou data nebo procesy dostupné autorizovaným “jedincům”, a to pouze v době, kdy je to nutné.
- Data nemusí být dostupná špatným lidem nebo ve špatný čas.
- Jako zaručitele dostupnosti můžeme považovat load balancery nebo repliky.
- Logování a následný monitoring může sledovat například downtime a tím pádem může sloužit k availability účelům.
- Dostupnost mezi partnery a klienty můžeme vyžadovat pomocí SLA.
- Dostupnost nemůže být zaručena bez důvěrnosti a integrity.
Doporučení
- Jednoduchý design vede k bezpečnému software (je však těžké říct, který design je jednoduchý).
- Pokud programujete nebo navrhujete něco složitě, měli byste se pozastavit a zamyslet se, jestli to nejde jednodušeji.
- Složité řešení vnáší komplexitu, která se stále zvětšuje s přibýváním dalšího kódu.
- Nejjednodušší většinou bývá oddělit bezpečnost od funkcionality a vytvořit tak novou ochrannou vrstvu.
- Toto oddělení ale dodržujte všude a nezačněte bezpečnost mixovat s funkcionalitou někde jinde.
🎓 Učíme se společně
Co jsem se dozvěděl z přednášek, školení, čtení knih a dalších aktivit?
Zajistěte aplikační bezpečnost pomocí nástrojů
- Speaker: Štefan Prokop
- I techničtí IT pracovníci a manažeři mají problém s pochopením určitých nástrojů a technologií.
- Myslí si např., že co je v cloudu, je bezpečné, nebo že pokud mají WAF, je aplikační bezpečnost vyřešená.
- SAST (Static Application Security Testing)
- Identifikuje security zranitelnosti a bad practices přímo v kódu (takové automatické code review, nikoli však jeho náhrada).
- Nejlepší nástroj pro hledání chyb v kódu a “mentor” pro vývojáře.
- Chyby a bad practices najde brzy a funguje od prvního napsaného řádku kódu.
- Detekuje přesný řádek výskytu chyby (rychlý time to fix).
- Občas špatně interpretuje kód a hlásí spoustu false positives (chyby, které ve skutečnosti nejsou chyby).
- Při výběru vhodné SAST musíte znát váš tech stack a dělat kompromisy mezi nástroji.
- DAST (Dynamic Application Security Testing)
- Nástroj automaticky “útočí” na vaši aplikaci s cílem najít zranitelnosti (pomocí crawlování).
- Je efektivní v hledání zero days zranitelností a funguje na všech aplikacích (browser, web services…).
- Jednoduše se spouští a není limitována žádnou technologií, jako např. SAST.
- Neví, co se děje na pozadí (nezná kód) a obtížně testuje javascript a single page aplikace.
- Neumí detekovat chyby v byznys logice a kvůli crawlování nejspíš většinu aplikace neotestuje.
- SCA (Software Composition Analysis)
- Identifikuje open source knihovny a ověřuje je oproti databázi známých zranitelností.
- Velmi snadno se používá a podporuje automatické opravování nálezů.
- Umí kontrolovat licence použitých knihoven a zajistit tak compliance.
- Řeší jen závislosti, nikoli náš kód nebo kód daných závislostí (porovnává jen verze knihoven).
- Reportuje všechny zranitelnosti související s knihovnou, i když dané funkce nevyužíváme.
- WAF (Web Application Firewall)
- Kontroluje HTTP požadavky a detekuje útoky na aplikační vrstvu.
- Z mého pohledu jde jen o compliance checkbox, WAF nemá žádné extra výhody.
- Má problém s parsováním dat a jejich komplexitou a s nastavením a trénováním.
- Detekuje jen “dětské” útoky, nic sofistikovaného.
- RASP (Runtime Application Self Protection)
- Připojí se k běžící aplikaci a monitoruje a detekuje provoz, na základě toho blokuje útoky.
- Na rozdíl od WAF je na správné vrstvě a je strategický.
- Musíme ho připojit ke zdrojovému kódu a funguje jen s interpretovanými jazyky.
- Microservices mu působí problémy.
📰 Co je nového
- Kurz Jak psát bezpečný kód nejen pro vývojáře
- V kurzu společně hledáme zranitelnosti v kódu a následně je opravujeme.
- Připravil jsem pro vás cca 20 zranitelností, 15 case studies, návrhové vzory, automatické nástroje a best practices ve 2hodinovém kurzu.
- Kurz je natočen ve spolupráci se Skillmea.
- Přihlaste se ke kurzu.
- Vyhledávač na webu Bezpečný kód.
- Vyhledávání informací je nyní na webu Bezpečný kód mnohem snazší díky vyhledávači.
- 4měsíční kurz k novému kybernetickému zákonu
- Náš partner Cybersecurity platform pod vedením Martina Konečného spustila kurz k novému kybernetickému zákonu.
- Kurz vám pomůže připravit se na novou regulaci kybernetické bezpečnosti vznikající na základě EU směrnice NIS2.
- Nová #haxing videa na našem YouTube
- Naučte se, jak zvládat SQL injection, mass assignment a XXE.
😂 Závěrečný ftípek: Why did the database administrator slice a tree stump in half? He needed a binary log.