Přeskočit na hlavní obsah

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.
  • 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

  1. 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.
  2. 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.
  3. 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.
  4. Nová #haxing videa na našem YouTube

😂 Závěrečný ftípek: Why did the database administrator slice a tree stump in half? He needed a binary log.