Vývoj zabezpečených aplikací v Azure
V tomto článku uvádíme aktivity zabezpečení a kontrolní mechanismy, které je potřeba vzít v úvahu při vývoji aplikací pro cloud. Jsou probírané bezpečnostní otázky a koncepty, které je potřeba zvážit během fází implementace a ověření životního cyklu vývoje zabezpečení (SDL) od Microsoftu. Cílem je pomoct vám definovat aktivity a služby Azure, které můžete použít k vývoji bezpečnější aplikace.
Tento článek popisuje následující fáze SDL:
- Implementace
- Ověření
Implementace
Fáze implementace se zaměřuje na stanovení osvědčených postupů pro včasnou prevenci a detekci a odebrání problémů se zabezpečením z kódu. Předpokládejme, že se vaše aplikace používá způsobem, který jste nechtěli použít. To vám pomůže chránit před náhodným nebo úmyslným zneužitím vaší aplikace.
Provádění kontrol kódu
Před kontrolou kódu proveďte revize kódu, abyste zvýšili celkovou kvalitu kódu a snížili riziko vytváření chyb. Ke správě procesu revize kódu můžete použít Visual Studio .
Provedení analýzy statického kódu
Statická analýza kódu (označovaná také jako analýza zdrojového kódu) se provádí jako součást revize kódu. Analýza statického kódu se obvykle označuje spuštěním nástrojů pro analýzu statického kódu, které umožňují najít potenciální ohrožení zabezpečení v kódu, který neprobíhá. Analýza statického kódu používá techniky, jako je kontrola taintu a analýza toku dat.
Azure Marketplace nabízí vývojářské nástroje, které provádějí statickou analýzu kódu a pomáhají s revizemi kódu.
Ověření a sanitace všech vstupů pro vaši aplikaci
Zacházejte se všemi vstupy jako s nedůvěryhodnými, aby byla vaše aplikace chráněna před nejběžnějšími ohroženími zabezpečení webové aplikace. Nedůvěryhodná data jsou prostředek pro útoky prostřednictvím injektáže. Vstup pro vaši aplikaci zahrnuje parametry v adrese URL, vstup od uživatele, data z databáze nebo z rozhraní API a vše, co se předává, s čím by uživatel mohl potenciálně manipulovat. Aplikace by měla ověřit , že data jsou syntakticky a sémanticky platná, než je aplikace jakýmkoli způsobem použije (včetně jejich zobrazení uživateli).
V rané fázi toku dat ověřte vstup, abyste měli jistotu, že do pracovního postupu vstupují jenom správně vytvořená data. Nechcete, aby se poškozená data uchovávala v databázi nebo způsobovala selhání v podřízené komponentě.
Seznam blokovaných a povolených jsou dva obecné přístupy k ověřování vstupní syntaxe:
Seznam blokovaných se pokouší zkontrolovat, jestli daný uživatelský vstup neobsahuje "známý škodlivý" obsah.
Seznam povolených se pokusí zkontrolovat, jestli daný uživatelský vstup odpovídá sadě "známých funkčních" vstupů. Seznam povolených na základě znaků je forma seznamu povolených, kdy aplikace kontroluje, že uživatelský vstup obsahuje pouze známé dobré znaky nebo že vstup odpovídá známému formátu.
To může například zahrnovat kontrolu, že uživatelské jméno obsahuje pouze alfanumerické znaky nebo že obsahuje přesně dvě čísla.
Seznam povolených je upřednostňovaný přístup k vytváření zabezpečeného softwaru. Seznam blokovaných položek je náchylný k chybám, protože není možné si představit úplný seznam potenciálně špatných vstupů.
Tuto práci proveďte na serveru, nikoli na straně klienta (nebo na straně serveru a na straně klienta).
Ověření výstupů aplikace
Každý výstup, který prezentujete vizuálně nebo v dokumentu, by měl být vždy zakódován a uváděný. Únik, označovaný také jako kódování výstupu, pomáhá zajistit, aby nedůvěryhodná data nebyla prostředek útoku injektem. Únik v kombinaci s ověřováním dat poskytuje vrstvenou ochranu, která zvyšuje zabezpečení systému jako celku.
Při úniku se zajistí, že se vše zobrazí jako výstup. Únik také dává interpretovi vědět, že data nejsou určená ke spuštění, což brání útokům v práci. Toto je další běžná technika útoku označovaná jako skriptování mezi weby (XSS).
Pokud používáte webovou architekturu od třetí strany, můžete ověřit možnosti kódování výstupu na webech pomocí taháku OWASP XSS prevention.
Použití parametrizovaných dotazů při kontaktování databáze
Nikdy nevytvovávejte vložený databázový dotaz "za chodu" v kódu a neodesílejte ho přímo do databáze. Škodlivý kód vložený do aplikace může potenciálně způsobit odcizení, vymazání nebo úpravu databáze. Vaše aplikace může být také použita ke spouštění škodlivých příkazů operačního systému v operačním systému, který hostuje vaši databázi.
Místo toho použijte parametrizované dotazy nebo uložené procedury. Při použití parametrizovaných dotazů můžete proceduru bezpečně vyvolat z kódu a předat jí řetězec, aniž byste se museli obávat, že bude považována za součást příkazu dotazu.
Odebrání standardních hlaviček serveru
Hlavičky jako Server, X-Powered-By a X-AspNet-Version obsahují informace o serveru a základních technologiích. Doporučujeme tyto hlavičky potlačit, abyste zabránili otisku prstu v aplikaci. Viz Odebrání standardních hlaviček serveru na webech Azure.
Oddělení produkčních dat
Vaše produkční data neboli "skutečná" data by se neměla používat k vývoji, testování ani k jinému účelu, než zamýšlela firma. Maskovaná (anonymizovaná) datová sada by se měla používat pro veškerý vývoj a testování.
To znamená, že méně lidí má přístup k vašim skutečným datům, což snižuje prostor pro útoky. To také znamená, že méně zaměstnanců vidí osobní údaje, což eliminuje potenciální porušení důvěrnosti.
Implementace zásad silného hesla
Chcete-li se bránit před hrubou silou a odhadováním založeným na slovníku, musíte implementovat zásady silného hesla, které zajistí, že uživatelé vytvoří složité heslo (například minimální délka 12 znaků a vyžaduje alfanumerické a speciální znaky).
Azure Active Directory B2C pomáhá se správou hesel tím, že poskytuje samoobslužné resetování hesla, vynucení resetování hesla a další.
Pokud chcete chránit před útoky na výchozí účty, ověřte, že všechny klíče a hesla lze nahradit a že se po instalaci prostředků vygenerují nebo nahradí.
Pokud aplikace musí automaticky vygenerovat hesla, ujistěte se, že jsou vygenerovaná hesla náhodná a že mají vysokou entropii.
Ověření nahrání souborů
Pokud vaše aplikace umožňuje nahrávání souborů, zvažte opatření, která můžete pro tuto rizikovou aktivitu přijmout. Prvním krokem v mnoha útocích je dostat nějaký škodlivý kód do systému, který je napadený. Útočníkovi to pomůže nahrání souboru. OWASP nabízí řešení pro ověření souboru, aby se zajistilo, že soubor, který nahráváte, je bezpečný.
Antimalwarová ochrana pomáhá identifikovat a odstranit viry, spyware a další škodlivý software. Můžete nainstalovat Microsoft Antimalware nebo řešení koncové ochrany partnera Microsoftu (Trend Micro, Broadcom, McAfee, Microsoft Defender Antivirus ve Windows a Endpoint Protection).
Microsoft Antimalware zahrnuje funkce, jako je ochrana v reálném čase, plánovaná kontrola, náprava malwaru, aktualizace podpisů, aktualizace modulů, vytváření sestav ukázek a shromažďování událostí vyloučení. Se službou Microsoft Defender for Cloud můžete integrovat Microsoft Antimalware a partnerská řešení, abyste usnadnili nasazení a předdefinované detekce (výstrahy a incidenty).
Neuk mezipaměti citlivého obsahu
Neuk mezipaměti citlivého obsahu v prohlížeči. Prohlížeče můžou ukládat informace pro ukládání do mezipaměti a historii. Soubory uložené v mezipaměti jsou v případě Internet Exploreru uložené ve složce, jako je složka Dočasné soubory Internetu. Když se na tyto stránky znovu odkazuje, prohlížeč zobrazí stránky ze své mezipaměti. Pokud se uživateli zobrazí citlivé informace (adresa, podrobnosti o platební kartě, číslo sociálního pojištění, uživatelské jméno), můžou být tyto informace uloženy v mezipaměti prohlížeče a lze je načíst prozkoumáním mezipaměti prohlížeče nebo stisknutím tlačítka Zpět v prohlížeči.
Ověření
Fáze ověřování zahrnuje komplexní úsilí, aby se zajistilo, že kód splňuje zásady zabezpečení a ochrany osobních údajů, které byly zavedeny v předchozích fázích.
Vyhledání a oprava ohrožení zabezpečení v závislostech aplikací
Zkontrolujete aplikaci a její závislé knihovny, abyste identifikovali všechny známé ohrožené komponenty. Mezi produkty, které jsou k dispozici k provedení této kontroly, patří OWASP Dependency Check, Snyk a Black Duck.
Testování aplikace v provozním stavu
Dynamické testování zabezpečení aplikací (DAST) je proces testování aplikace v provozním stavu za účelem zjištění ohrožení zabezpečení. Nástroje DAST analyzují programy během jejich spouštění a zjišťují ohrožení zabezpečení, jako je poškození paměti, nezabezpečená konfigurace serveru, skriptování mezi weby, problémy s uživatelskými oprávněními, injektáž SQL a další důležité aspekty zabezpečení.
DAST se liší od testování zabezpečení statických aplikací (SAST). Nástroje SAST analyzují zdrojový kód nebo zkompilované verze kódu, když se kód nespouštějí, aby zjistily chyby zabezpečení.
Proveďte DAST, pokud možno za pomoci odborníka na zabezpečení ( penetrační tester nebo posouzení ohrožení zabezpečení). Pokud odborník na zabezpečení není k dispozici, můžete dast provést sami pomocí kontroly webového proxy serveru a nějakého školení. Brzy připojte skener DAST, abyste zajistili, že do kódu nezanášíte zjevné problémy se zabezpečením. Seznam kontrol ohrožení zabezpečení webových aplikací najdete na webu OWASP .
Provedení fuzzového testování
Při fuzz testování vyvoláte selhání programu záměrným zavedením poškozených nebo náhodných dat do aplikace. Selhání induktivního programu pomáhá odhalit potenciální problémy se zabezpečením před vydáním aplikace.
Detekce bezpečnostních rizik je jedinečná služba microsoftu pro fuzzové testování, která slouží k hledání chyb důležitých pro zabezpečení v softwaru.
Kontrola prostoru pro provedení útoku
Kontrola prostoru pro útok po dokončení kódu vám pomůže zajistit, aby se zvážily změny návrhu nebo implementace aplikace nebo systému. Pomáhá zajistit, aby všechny nové vektory útoku vytvořené v důsledku změn, včetně modelů hrozeb, byly zkontrolovány a zmírněny.
Naskenováním aplikace můžete vytvořit obrázek oblasti útoku. Microsoft nabízí nástroj pro analýzu potenciální oblasti útoku s názvem Attack Surface Analyzer. Můžete si vybrat z mnoha nástrojů nebo služeb pro komerční dynamické testování a kontrolu ohrožení zabezpečení, včetně OWASP Attack Surface Detector, Arachni a w3af. Tyto nástroje pro kontrolu procházejí aplikaci a mapují části aplikace, které jsou přístupné přes web. Podobné vývojářské nástroje můžete také vyhledat v Azure Marketplace.
Testování průniku zabezpečení
Zabezpečení vaší aplikace je stejně důležité jako testování jakékoli jiné funkce. Udělte penetrační testování jako standardní součást procesu sestavení a nasazení. Naplánujte pravidelné testy zabezpečení a kontrolu ohrožení zabezpečení nasazených aplikací a monitorujte otevřené porty, koncové body a útoky.
Spuštění testů ověření zabezpečení
Azure Tenant Security Solution (AzTS) ze sady Secure DevOps Kit for Azure (AzSK) obsahuje SVT pro více služeb platformy Azure. Tyto svt spouštíte pravidelně, abyste zajistili, že vaše předplatné Azure a různé prostředky, které tvoří vaši aplikaci, jsou v zabezpečeném stavu. Tyto testy můžete také automatizovat pomocí funkce rozšíření kontinuální integrace/průběžného nasazování (CI/CD) nástroje AzSK, která zpřístupňuje SVT jako rozšíření sady Visual Studio.
Další kroky
V následujících článcích doporučujeme kontrolní mechanismy zabezpečení a aktivity, které vám můžou pomoct při návrhu a nasazení zabezpečených aplikací.