Jak tedy udržíme vysokou úroveň ochrany v softwaru vytvářeném v prostředích průběžného nasazování? Hackeři se často zaměřují na konkrétní chyby zabezpečení, které umožňují skriptování mezi weby a použití metody SQL injection.
Defenzivní programování ošetřuje tyto díry pomocí ověřování vstupu, při kterém se zkontrolují všechny vstupy do aplikace a odmítnou všechny škodlivé vstupy.
„Jednoduše nedovolíte zadat sekvence, které by bylo možné použít k injektáži kódu do prohlížeče nebo databáze,“ vysvětluje Tom Stiehm, technologický ředitel společnosti Coveros.
„Skvělým způsobem, jak defenzivně programovat, aby se zajistila stálá ochrana před útokem SQL injection, je používat jen připravené statementy a neumožnit použití dynamického SQL.
Vzhledem k tomu, že velké množství nejpopulárnějších a nejúspěšnějších vektorů útoku jsou ataky využívající injektáž, je nejlepší začít právě s defenzivními programovacími technikami,“ radí Stiehm.
Existují knihovny .Net, které na této platformě pomáhají s ověřováním vstupů. „Na platformě Java mezi tyto nástroje patří knihovna Owasp Esapi, která nabízí bezpečnostní kontroly včetně ověřování vstupů,“ popisuje Stiehm.
S programováním aplikací vám pomůže ověřování vstupů, ale abyste viděli všechny změny v systémech a komponentách, které využívají vámi vyvíjené aplikace, potřebujete monitoring. Při porovnávání změn jsou užitečné nástroje jako Chef a Puppet.
Udržujte si přehled o tom, zda nedošlo k zavlečení bezpečnostní chyby do softwaru prostřednictvím připravené aktualizace nebo komponenty od třetí strany.
„Musíte ji dokázat opravit, jakmile ji zjistíte,“ doporučuje Chris Raethke, technologický ředitel a spoluzakladatel společnosti Bugcrowd.
Pokud víte, kdo má ve vašem týmu na starosti jednotlivé typy problémů, můžete označit všechny příčiny neúspěšných testů, udržovat si o nich přehled a úspěšně procházet procesem průběžného nasazování, uvádí Raethke.
Nástroje a přístupy, jako jsou automatická revize bezpečného kódu a penetrační testy, mohou pomoci najít a označit problémy, aby mohly vývojové týmy najít a opravit chyby zabezpečení. Mezi nástroje pro kontrolu kódu patří například HP Fortify Static Code Analyzer nebo Cigital SecureAssist, což je plug-in prostředí IDE pro zjišťování chyb zabezpečení v reálném čase.
Mezi penetrační testovací nástroje patří linuxová distribuce Kali Linux zaměřená přímo na penetrační testování nebo nástroj Owasp Zed Attack Proxy. Vývojáři by měli svědomitě používat všechny vybrané nástroje a odstranit každou chybu zabezpečení.
Menší závislost na lidech
Nejsilnější prvkem metodiky DevOps je, že pomocí automatizace stále více odstraňuje z procesu člověka včetně lidských chyb. „Opakovatelnost však nemusí nutně přinést i kvalitu,“ upozorňuje Scott Morrison, viceprezident společnosti CA Technologies.
Ve skutečnosti jsou největšími nedostatky automatizovaných procesů vývoje vnesení chyb zabezpečení už na samém začátku a jejich následná ignorace z důvodu ukolébání falešnými zárukami opakovatelnosti.
Pokud neopravíte či neodstraníte tyto chyby na začátku, budou se i nadále vyskytovat i v každé iteraci softwaru.
Chcete-li předejít skrytým a opakovaným chybám zabezpečení, začněte obecnou vrstvou zabezpečení, ze které má mnoho systémů užitek, a udělejte z ní základní kámen, radí Morrison. Obecná bezpečnostní vrstva může například začínat výchozí bitovou kopií operačního systému Linux.
Pokud pracujete v prostředí cloudu a používáte pro své aplikace pokaždé stejnou základní bitovou kopii, zajistěte, aby byl systém v této bitové kopii zabezpečený. Základní bitová kopie tak nebude zdrojem případných opakovaných chyb zabezpečení.
V opačném případě, když přidáte kód své aplikace a uděláte to mnohokrát s existujícími chybami zabezpečení, jako jsou bezdůvodně otevřené porty a běžící služby, které by měly být vypnuté, můžete způsobit chybu v ochraně, kterou nezjistíte ani nyní, ani později, a stejná zranitelnost bude následně součástí všech systémů, vysvětluje Morrison.
Dále zajistěte, aby veškerá komunikace mezi různými vrstvami aplikace využívala rozhraní API, která se vytvořila bezpečným způsobem. To by pro vás měla být výchozí úroveň zabezpečení.
„Při vytváření jakéhokoliv distribuovaného systému používejte rozhraní API pro vzájemnou komunikaci. Pokud bude tato část komunikace v pořádku, budete mít dobrý pevný základ pro bezpečnost,“ říká Morrison.
A v neposlední řadě zajistěte, aby vývoj nemohl změnit něco, co by se nikdy měnit nemělo, jako jsou například všechny prvky zabezpečení, které byly napoprvé zcela v pořádku.Měly by vždy zůstat stejné.
„Pokud těmito způsoby ochráníte základní bitové kopie, komunikaci a aplikace, měli byste být schopní využívat výhody opakovatelnosti bez obav,“ shrnuje Morrison.
Zabezpečení pracuje nepřetržitě
„Zabezpečení se nikdy nezastaví, je to pohyblivý cíl. Musíte být ostražití. Zločinci se stále zlepšují ve svých schopnostech rychle zaútočit na zranitelnosti nultého dne a všude se objevují další hrozby,“ varuje Morrison. ...
Tento příspěvek vyšel v Security Worldu 1/2015. Oproti této verzi je obsáhlejší a přináší další poznatky a tipy, které lze využít při praktické implementaci metodiky DevOps u vás ve firmě. Časopis (starší čísla i předplatné těch nadcházejících) si můžete objednat na adrese našeho vydavatelství.