OWASP SAMM, BSIMM, Microsoft SDL, NIST SSDF a ISO/IEC 27034 (a tak dále) lze považovat za frameworky, standardy, metodiky…, které se zaměřují na zajištění bezpečného vývoje během životního cyklu SW – poskytují strukturované přístupy k hodnocení, řízení a zlepšování bezpečnostních praktik během vývoje. Avšak i přes své zjevné přínosy, integrace rámce bezpečného vývoje SW do celého jeho životního cyklu je náročná – v tomto mi jistě dá zapravdu každý, kdo se o něco takového byť jen pokusil.
Během takového snažení je výběr správného rámce kritický a vyžaduje pečlivé zhodnocení specifických potřeb organizace, stávajících procesů, dostupných zdrojů a dalších proměnných, což může být složitý a časově náročný proces.
Co mají společného?
Zmíněné rámce mají několik společných rysů, které je činí efektivními nástroji pro zajištění bezpečnosti SW.
Hlavní společné aspekty
Integrace bezpečnosti do celého životního cyklu vývoje SW je klíčovým aspektem všech těchto rámců. Kladou důraz na integraci bezpečnostních opatření do všech fází životního cyklu vývoje SW, což zpravidla zahrnuje plánování, návrh, vývoj, testování, nasazení a údržbu.
Flexibilita (přizpůsobivost) je také důležitým rysem těchto rámců. Jsou navrženy tak, aby byly relativně flexibilní a přizpůsobitelné různým velikostem organizací a různým vývojovým postupům (waterfall, agile atd.). Tato flexibilita umožňuje organizacím integrovat bezpečnostní opatření bez nutnosti zásadních změn jejich stávajících procesů (ale v některých praxích – zejména s nakupeným „technickým dluhem“ – tato věta může být pouze iluzí).
Zaměření na zlepšování bezpečnostních praktik je dalším důležitým aspektem. Všechny uvedené rámce podporují kontinuální zlepšování bezpečnostních praktik. Poskytují nástroje a metody pro hodnocení stávajících bezpečnostních opatření, identifikaci mezer a stanovení priorit pro zlepšení. Tento iterativní přístup pomáhá organizacím postupně zvyšovat úroveň bezpečnosti jejich SW.
Podpora vzdělávání je další klíčovou vlastností těchto rámců. Zdůrazňují důležitost vzdělávání zaměstnanců v oblasti bezpečnosti SW, což pomáhá zvyšovat povědomí o bezpečnostních hrozbách a osvědčených postupech. To je klíčové pro budování silné bezpečnostní kultury v organizaci.
Soulad s normami a předpisy je také důležitý pro všechny tyto rámce. Ať už přímo či nepřímo podporují dodržování interních i externích norem a předpisů, což je obzvláště důležité pro organizace v regulovaných odvětvích jako jsou finance, zdravotnictví a vládní sektor. Pomáhají tak zajistit, že bezpečnostní opatření jsou v souladu s příslušnými legislativními požadavky.
Hodnocení a měření účinnosti bezpečnostních opatření je další společný rys. Všechny rámce poskytují nástroje a metody pro hodnocení a měření účinnosti bezpečnostních opatření, což zahrnuje používání metrik, scorecards a auditů k monitorování zlepšování bezpečnostních praktik. Přijímají rizikově orientovaný přístup k bezpečnosti SW, což znamená, že identifikace, hodnocení a řízení rizik je klíčovou součástí bezpečnostních procesů. Organizace tak mohou lépe chápat a řídit bezpečnostní rizika spojená s jejich SW aplikacemi.
Podpora moderních vývojových praktik a technologií – automatizace, kontejnery, mikroslužby atd. – je další důležitou vlastností těchto rámců. To umožňuje organizacím integrovat bezpečnostní opatření do rychle se měnících vývojových prostředí a technologií.
Tyto společné rysy ukazují, že i když každý z těchto rámců má své specifické charakteristiky a zaměření, všechny sdílejí základní principy a přístupy k zajištění robustní bezpečnosti SW. Integrací těchto rámců do svých procesů mohou organizace efektivně řídit bezpečnostní rizika a zajistit, že jejich aplikace jsou bezpečné a v souladu s příslušnými standardy a předpisy.
„Nevýhody“ a jejich řešení
Na úvod je důležité zdůraznit, že jak nevýhody, tak výhody jednotlivých rámců, včetně přístupů k nim, jsou velice individuální a mohou se lišit podle zkušeností konkrétních specialistů a specifických potřeb organizace.
Každý z rámců pro zajištění bezpečného vývoje SW, jako jsou OWASP SAMM, BSIMM, Microsoft SDL, NIST SSDF a ISO/IEC 27034, má společné nevýhody, které mohou ovlivnit jejich implementaci a účinnost v různých organizacích. Tyto nevýhody zahrnují komplexitu implementace, nákladnost, potřebu přizpůsobení specifickým potřebám organizace a někdy obecnost některých pokynů.
Složitost implementace: Implementace těchto rámců může být složitá, zejména pro organizace s omezenými zdroji nebo bez dostatečných zkušeností v oblasti bezpečnosti SW.
Tento problém lze řešit tím, že organizace začnou s malými, dobře definovanými kroky a postupně rozšiřují implementaci. Rozdělení implementace na fáze a využití agilního přístupu může pomoci lépe řídit časové nároky. Externí konzultanti nebo různé formy vzdělávání mohou také pomoci zjednodušit proces a poskytnout potřebné odborné znalosti.
Náklady: Implementace může být nákladná, zejména pro menší organizace s omezenými rozpočty na podobné bezpečnostní iniciativy.
Avšak organizace mohou začít s omezeným rozsahem implementace a postupně ji rozšiřovat podle dostupných zdrojů. Využití open-source nástrojů a komunitních zdrojů může snížit náklady. Optimalizace nákladů pomocí stávajících zdrojů a postupná implementace mohou rovněž pomoci zvládnout finanční zátěž.
Přizpůsobení specifickým potřebám: Aby byly bezpečnostní rámce účinné, musí být přizpůsobeny specifickým potřebám a rizikům organizace, což může být náročné na plánování a provedení.
Nicméně organizace mohou využít šablony a nástroje poskytované komunitou nebo specifickým rámcem pro přizpůsobení svým potřebám. Pravidelné revize a úpravy mohou zajistit, že model zůstane relevantní. Přizpůsobení výsledků benchmarkingu a kombinace interních hodnocení s externími mohou pomoci vyladit implementaci.
Obecnost pokynů Některé rámce mohou být příliš obecné a neposkytují konkrétní pokyny nebo nástroje pro implementaci, což může být výzvou pro organizace hledající specifická řešení.
V takovém případě mohou organizace využít specifické příklady a scénáře z praxe dostupné v rámci dokumentace a přizpůsobit je svým potřebám. Další konkrétní návody mohou být získány prostřednictvím konzultací nebo školení. Rozdělení rámce na menší, zvládnutelné části a jejich postupná implementace může snížit komplexitu.
Specifické nevýhody jednotlivých rámců
BSIMM se silně spoléhá na porovnání s jinými organizacemi, což může být nevýhodné pro firmy s odlišnými potřebami. Poskytuje momentální pohled na bezpečnostní praktiky, což může být méně flexibilní pro rychle se měnící prostředí.
Ovšem organizace si může výsledky benchmarkingu přizpůsobit svým specifickým potřebám a kontextu (byť to může být pracné). Organizace též mohou provádět vlastní interní hodnocení a kombinovat je s externími benchmarky. Pravidelné aktualizace a revize bezpečnostních praktik mohou pomoci udržet krok s rychle se měnícími hrozbami. Implementace kontinuálního zlepšování a adaptace na nové technologie a hrozby může zvýšit flexibilitu.
Microsoft SDL je orientován na technologie Microsoftu, což může omezit jeho použitelnost pro jiné technologické stacky.
Nicméně (ale není to jednoduché) organizace mohou přizpůsobit principy SDL tak, aby byly použitelné i pro jiné technologické stacky. Hledání analogických nástrojů a metodik v jiných prostředích může pomoci překonat tuto omezenost. Využití principů DevSecOps může integrovat bezpečnostní praktiky do rychlých vývojových cyklů.
NIST SSDF může být příliš obecný a neposkytovat konkrétní pokyny pro implementaci.
Přesto organizace mohou využít specifické příklady a scénáře z praxe (vzorové případy) a přizpůsobit je svým potřebám. Konkrétní návody mohou být získány například prostřednictvím konzultací nebo vzdělávání. Rozdělení rámce na menší, zvládnutelné části a jejich postupná implementace může snížit komplexitu.
ISO/IEC 27034 může být příliš obecná a neposkytovat konkrétní návody pro specifické potřeby. Navíc zpravidla vyžaduje již implementované další ISO/IEC normy (je to dáno charakterem provázaností různých ISO/IEC norem), což přidává další vrstvu komplexity.
Snížit komplexitu a náklady může implementace normy v menších krocích a zaměření na nejdůležitější oblasti. Využití externích konzultantů a vzdělávání může urychlit a zjednodušit proces. Organizace mohou provést mapování svých stávajících procesů na požadavky ISO/IEC 27034 a identifikovat mezery. Pravidelné revize a úpravy mohou zajistit, že norma zůstane relevantní a efektivní. Přizpůsobení obecných pokynů specifickým potřebám organizace může zvýšit efektivitu. Hledání konkrétních příkladů a případových studií může pomoci při implementaci praktických opatření.
OWASP SAMM je sice velmi vhodný rámec pro zajištění bezpečného vývoje softwaru, ale jeho vysoká úroveň abstrakce může být výzvou – nicméně i výhodou, protože poskytuje potřebnou flexibilitu pro různé organizace.
Díky aktivní komunitě, podpoře open-source nástrojů a dostupnosti vzorových šablon se OWASP SAMM stává praktickým a efektivním nástrojem pro zlepšování bezpečnostních praktik v celém životním cyklu vývoje softwaru, což může pomoci snížit úroveň abstrakce. Navíc uživatelsky orientovaný (Důkazem tohoto přístupu je například studie provedená s OWASP SAMM v rámci velkého e-commerce podniku, která se zaměřila na podporu bezpečnostních šampionů v organizaci. [1]) přístup zajišťuje, že jsou brány v úvahu potřeby uživatelů rámce, což zvyšuje jeho efektivitu a použitelnost.
Řešení těchto „nevýhod“ (v uvozovkách) vyžaduje pečlivé plánování, průběžné revize a přizpůsobování rámců specifickým potřebám a kontextu organizace. Efektivní využití dostupných zdrojů, nástrojů a podpory může výrazně přispět k úspěšné implementaci a udržení robustní bezpečnostní strategie.
Každý framework nabízí různé výhody a nástroje, které mohou pomoci organizacím zlepšit jejich bezpečnostní postupy. Z výše zmíněných úvah lze identifikovat otázky, které by si měla organizace položit při výběru frameworku pro bezpečný vývoj softwaru.
Níže uvedené otázky jsou napsány volnějším stylem a jejich přesná formulace záleží na konkrétních potřebách a kontextu organizace. Přesto mohou sloužit jako cenná inspirace a motivace pro přemýšlení o klíčových aspektech výběru frameworku pro bezpečný vývoj softwaru:
Důležité aspekty pro zajištění bezpečného vývoje softwaru
- Integrace bezpečnosti do celého životního cyklu vývoje SW
- Flexibilita (přizpůsobivost)
- Zaměření na zlepšování bezpečnostních praktik
- Podpora vzdělávání
- Soulad s normami a předpisy
- Hodnocení a měření účinnosti bezpečnostních opatření
- Podpora moderních vývojových praktik a technologií
- Atd.
Položme si například následující otázky (a doplňme si je podle potřeby):
- Jaké jsou specifické bezpečnostní potřeby naší organizace?
- Existují konkrétní hrozby nebo zranitelnosti, které musíme řešit?
- Jaké jsou naše požadavky na shodu?
- Jaká je velikost a složitost naší organizace?
- Kolik lidí se bude podílet na implementaci a údržbě rámce?
- Jak složité jsou naše procesy vývoje softwaru?
- Jaké zdroje máme k dispozici pro implementaci bezpečnostního rámce?
- Jaký je náš rozpočet na bezpečnostní iniciativy?
- Máme potřebné odborné znalosti interně, nebo budeme potřebovat externí konzultanty?
- Jaké jsou naše současné postupy vývoje softwaru?
- Používáme konkrétní metodiku vývoje (např. Agile, Waterfall)?
- Jaké nástroje a technologie v současnosti používáme?
- Jak flexibilní musí být rámec, aby vyhovoval našemu prostředí?
- Lze rámec přizpůsobit našim specifickým procesům a technologiím?
- Podporuje rámec neustálé zlepšování a přizpůsobování se novým hrozbám?
- Jakou úroveň podrobností a pokynů od rámce potřebujeme?
- Potřebujeme konkrétní implementační pokyny, nebo můžeme pracovat s obecnějším přístupem?
- Jak normativní versus flexibilní by měl být rámec?
- Jaký je náš časový plán pro implementaci rámce?
- Jde nám o rychlou implementaci, nebo si můžeme dovolit pozvolnější přístup?
- Jaké milníky a fáze budou zahrnovat implementaci?
- Jak plánujeme měřit efektivitu našich bezpečnostních postupů?
- Jaké metriky a nástroje použijeme k hodnocení bezpečnosti?
- Jak zajistíme, že budeme mít aktuální informace o vyvíjejících se hrozbách?
- Jaké jsou zkušenosti a doporučení jiných organizací podobných té naší?
- Můžeme využít případové studie nebo benchmarky od jiných společností v našem oboru?
- Existují zdroje komunity nebo uživatelské skupiny, ke kterým se můžeme připojit a získat podporu?
- Jak se bude vybraný rámec integrovat s našimi stávajícími procesy a nástroji?
- Jaké změny budou nutné k začlenění rámce do našich současných pracovních postupů?
- Jak zvládneme přechod a trénink pro naše týmy?
- Atd.
Tento seznam otázek jistě není konečný a každá organizace musí zohlednit svá specifika při výběru a implementaci frameworku pro bezpečný vývoj softwaru. Každá organizace má jedinečné potřeby a kontext, které je třeba vzít v úvahu, aby byla zajištěna co nejlepší integrace bezpečnostních praktik do jejich vývojových procesů.
Zdroje
- ISO/IEC 27034-1:2011
- NIST SSDS
- Microsoft SDL
- OWASP SAMM – web OWASP
- OWASP SAMM – core website
- BSIMM (Synpsys)
- [1] FUCCI D., ALÉGROTH E., FELDERER M., JOHANNESSON Ch. Evaluating software security maturity using OWASP SAMM: Different approaches and stakeholders perceptions. The Journal of Systems & Software. Online. Cit. 1 July 2024.