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.
Pozor, newsletter čekají změny!
Brzy se z pravidelného posílání jednou za měsíc stane nepravidelné. Nebojte, nebudu vás spamovat týdně, spíš se doba mezi newslettery prodlouží. Délka newsletterů se bude odvíjet od toho, kolik za tu dobu posbírám informací a novinek. Struktura zůstane podobná.
Během dalších měsíců plánuju zpoplatnit archiv newsletterů. Tím, že tento newsletter pravidelně odebíráte, se vás to ale netýká. :-)
🏆 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.
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.
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.
Pozor, newsletter čekají změny!
Brzy se z pravidelného posílání jednou za měsíc stane nepravidelné. Nebojte, nebudu vás spamovat týdně, spíš se doba mezi newslettery prodlouží. Délka newsletterů se bude odvíjet od toho, kolik za tu dobu posbírám informací a novinek. Struktura zůstane podobná.
Během dalších měsíců plánuju zpoplatnit archiv newsletterů. Tím, že tento newsletter pravidelně odebíráte, se vás to ale netýká. :-)
😂 Závěrečný ftípek: Why did the database administrator slice a tree stump in half? He needed a binary log.
🙏 Vyplňte prosím zpětnou vazbu k newsletteru, ať je s každým vydáním lepší a lepší.
🔔 Sledujte nás na LinkedInu, kam pravidelně sdílíme další novinky a know-how.
🆘 S bezpečností vám rádi pomůžeme, klidně nám napište - školíme vývojáře i management, nastavujeme procesy, vyvíjíme bezpečné aplikace a poskytujeme další služby.