Číst v angličtině

Sdílet prostřednictvím


Pravidla zabezpečení

Pravidla zabezpečení podporují bezpečnější knihovny a aplikace. Tato pravidla pomáhají zabránit chybám zabezpečení ve vašem programu. Pokud některá z těchto pravidel zakážete, měli byste jasně označit důvod v kódu a také informovat určeného bezpečnostního pracovníka pro váš vývojový projekt.

V této části

Pravidlo Popis
CA2100: Kontrola dotazů SQL na ohrožení zabezpečení Metoda nastaví System.Data.IDbCommand.CommandText vlastnost pomocí řetězce, který je sestaven z řetězcového argumentu metody. Toto pravidlo předpokládá, že argument řetězce obsahuje vstup uživatele. Řetězec příkazu SQL sestavený ze vstupu uživatele je zranitelný vůči útokům prostřednictvím injektáže SQL.
CA2109: Kontrola viditelných event handlerů Byla zjištěna veřejná nebo chráněná metoda zpracování událostí. Metody zpracování událostí by neměly být vystaveny, pokud to není nezbytně nutné.
CA2119: Zapečetění metod, které vyhovují privátním rozhraním Děditelný veřejný typ umožňuje přepisovatelnou implementaci metody interního rozhraní (Friend v jazyce Visual Basic). Chcete-li opravit porušení tohoto pravidla, zabraňte tomu, aby byla metoda přepsána mimo sestavení.
CA2153: Vyhněte se zpracování výjimek poškozeného stavu výjimky poškozeného stavu (CSE) indikují poškození paměti ve vašem procesu. Zachytávání těchto chyb místo toho, aby umožňovalo chybové ukončení procesu, může vést k ohrožením zabezpečení, pokud útočník může zneužití umístit do poškozené oblasti paměti.
CA2300: Nepoužívejte nezabezpečený deserializátor BinaryFormatter Nezabezpečené deserializátory jsou zranitelné při deserializaci nedůvěryhodných dat. Útočník by mohl serializovaná data upravit tak, aby zahrnovala neočekávané typy pro vložení objektů se škodlivými vedlejšími účinky.
CA2301: Nevolejte BinaryFormatter.Deserialize bez prvního nastavení BinaryFormatter.Binder Nezabezpečené deserializátory jsou zranitelné při deserializaci nedůvěryhodných dat. Útočník by mohl serializovaná data upravit tak, aby zahrnovala neočekávané typy pro vložení objektů se škodlivými vedlejšími účinky.
CA2302: Před voláním BinaryFormatter.Deserialize se ujistěte, že je nastaven binaryFormatter.Binder Nezabezpečené deserializátory jsou zranitelné při deserializaci nedůvěryhodných dat. Útočník by mohl serializovaná data upravit tak, aby zahrnovala neočekávané typy pro vložení objektů se škodlivými vedlejšími účinky.
CA2305: Nepoužívejte nezabezpečený deserializátor LosFormatter Nezabezpečené deserializátory jsou zranitelné při deserializaci nedůvěryhodných dat. Útočník by mohl serializovaná data upravit tak, aby zahrnovala neočekávané typy pro vložení objektů se škodlivými vedlejšími účinky.
CA2310: Nepoužívejte nezabezpečený deserializátor NetDataContractSerializer Nezabezpečené deserializátory jsou zranitelné při deserializaci nedůvěryhodných dat. Útočník by mohl serializovaná data upravit tak, aby zahrnovala neočekávané typy pro vložení objektů se škodlivými vedlejšími účinky.
CA2311: Ne deserializovat bez prvního nastavení NetDataContractSerializer.Binder Nezabezpečené deserializátory jsou zranitelné při deserializaci nedůvěryhodných dat. Útočník by mohl serializovaná data upravit tak, aby zahrnovala neočekávané typy pro vložení objektů se škodlivými vedlejšími účinky.
CA2312: Před deserializací ujistěte se, že je nastavená vlastnost NetDataContractSerializer.Binder. Nezabezpečené deserializátory jsou zranitelné při deserializaci nedůvěryhodných dat. Útočník by mohl serializovaná data upravit tak, aby zahrnovala neočekávané typy pro vložení objektů se škodlivými vedlejšími účinky.
CA2315: Nepoužívejte nezabezpečený deserializátor ObjectStateFormatter Nezabezpečené deserializátory jsou zranitelné při deserializaci nedůvěryhodných dat. Útočník by mohl serializovaná data upravit tak, aby zahrnovala neočekávané typy pro vložení objektů se škodlivými vedlejšími účinky.
CA2321: Ne deserializovat pomocí JavaScriptSerializer s SimpleTypeResolver Nezabezpečené deserializátory jsou zranitelné při deserializaci nedůvěryhodných dat. Útočník by mohl serializovaná data upravit tak, aby zahrnovala neočekávané typy pro vložení objektů se škodlivými vedlejšími účinky.
CA2322: Před deserializací se ujistěte, že JavaScriptSerializer není inicializován pomocí metody SimpleTypeResolver. Nezabezpečené deserializátory jsou zranitelné při deserializaci nedůvěryhodných dat. Útočník by mohl serializovaná data upravit tak, aby zahrnovala neočekávané typy pro vložení objektů se škodlivými vedlejšími účinky.
CA2326: Nepoužívejte jiné hodnoty TypeNameHandling než None Nezabezpečené deserializátory jsou zranitelné při deserializaci nedůvěryhodných dat. Útočník by mohl serializovaná data upravit tak, aby zahrnovala neočekávané typy pro vložení objektů se škodlivými vedlejšími účinky.
CA2327: Nepoužívejte nezabezpečené JsonSerializerSettings Nezabezpečené deserializátory jsou zranitelné při deserializaci nedůvěryhodných dat. Útočník by mohl serializovaná data upravit tak, aby zahrnovala neočekávané typy pro vložení objektů se škodlivými vedlejšími účinky.
CA2328: Ujistěte se, že jsonSerializerSettings jsou zabezpečené Nezabezpečené deserializátory jsou zranitelné při deserializaci nedůvěryhodných dat. Útočník by mohl serializovaná data upravit tak, aby zahrnovala neočekávané typy pro vložení objektů se škodlivými vedlejšími účinky.
CA2329: Neprovádějte deserializaci pomocí JsonSerializer s nezabezpečenou konfigurací Nezabezpečené deserializátory jsou zranitelné při deserializaci nedůvěryhodných dat. Útočník by mohl serializovaná data upravit tak, aby zahrnovala neočekávané typy pro vložení objektů se škodlivými vedlejšími účinky.
CA2330: Při deserializaci se ujistěte, že má jsonSerializer zabezpečenou konfiguraci. Nezabezpečené deserializátory jsou zranitelné při deserializaci nedůvěryhodných dat. Útočník by mohl serializovaná data upravit tak, aby zahrnovala neočekávané typy pro vložení objektů se škodlivými vedlejšími účinky.
CA2350: Ujistěte se, že vstup DataTable.ReadXml() je důvěryhodný Při deserializaci DataTable s nedůvěryhodným vstupem může útočník vytvořit škodlivý vstup za účelem útoku odmítnutí služby. Může se jednat o neznámá ohrožení zabezpečení vzdáleného spuštění kódu.
CA2351: Ujistěte se, že vstup DataSet.ReadXml() je důvěryhodný Při deserializaci DataSet s nedůvěryhodným vstupem může útočník vytvořit škodlivý vstup k provedení útoku odepření služby. Může se jednat o neznámá ohrožení zabezpečení vzdáleného spuštění kódu.
CA2352: Nebezpečná datová sada nebo datová tabulka v serializovatelném typu mohou být ohroženy útoky vzdáleného spuštění kódu Třída nebo struktura označená SerializableAttribute obsahuje DataSet nebo DataTable pole nebo vlastnost a nemá GeneratedCodeAttribute.
CA2353: Nezabezpečená datová sada nebo datová tabulka v serializovatelném typu Třída nebo struktura označená atributem serializace XML nebo atribut kontraktu dat obsahuje DataSet nebo DataTable pole nebo vlastnost.
CA2354: Nebezpečná datová sada nebo datová tabulka v deserializovaném grafu objektů může být ohrožena útokem vzdáleného spuštění kódu Deserializace pomocí objektu serializovaného pomocí System.Runtime.Serialization.IFormatter a graf objektu přetypovaného typu může obsahovat DataSet nebo DataTable.
CA2355: Nezabezpečená datová sada nebo datová tabulka v deserializovaném grafu objektů Deserializace, pokud graf objektu přetypovaného nebo zadaného typu může obsahovat DataSet nebo DataTable.
CA2356: Nezabezpečená datová sada nebo datová tabulka v grafu deserializovaného objektu webu Metoda s System.Web.Services.WebMethodAttribute nebo System.ServiceModel.OperationContractAttribute má parametr, který může odkazovat na DataSet nebo DataTable.
CA2361: Ujistěte se, že se u nedůvěryhodných dat nepoužívá automaticky vygenerovaná třída obsahující DataSet.ReadXml() Při deserializaci DataSet s nedůvěryhodným vstupem může útočník vytvořit škodlivý vstup pro provedení útoku typu Denial of Service (DoS). Může se jednat o neznámá ohrožení zabezpečení vzdáleného spuštění kódu.
CA2362: Nebezpečná datová sada nebo datová tabulka v automaticky generovaném serializovatelném typu mohou být ohroženy útoky vzdáleného spuštění kódu Při deserializaci nedůvěryhodného vstupu s BinaryFormatter a deserializovaný objektový graf obsahuje DataSet nebo DataTable, útočník může vytvořit škodlivou datovou část za účelem provedení vzdáleného útoku na spuštění kódu.
CA3001: Zkontrolujte kód na zranitelnosti injekce SQL Při práci s nedůvěryhodnými vstupy a příkazy SQL mějte na paměti útoky prostřednictvím injektáže SQL. Útok prostřednictvím injektáže SQL může spouštět škodlivé příkazy SQL a ohrozit zabezpečení a integritu vaší aplikace.
CA3002: Zkontrolujte kód na zranitelnosti XSS Při práci s nedůvěryhodným vstupem z webových požadavků mějte na paměti útoky na skriptování mezi weby (XSS). Útok XSS vloží nedůvěryhodný vstup do nezpracovaného výstupu HTML, což útočníkovi umožní spouštět škodlivé skripty nebo škodlivé úpravy obsahu na webové stránce.
CA3003: Zkontrolujte kód na zranitelnosti injekce do cest k souborům Při práci s nedůvěryhodným vstupem z webových požadavků mějte na paměti použití uživatelem řízeného vstupu při zadávání cest k souborům.
CA3004: Zkontrolujte kód kvůli zranitelnostem spočívajícím ve zpřístupnění informací Informace o výjimce poskytují útočníkům přehled o vnitřních informacích vaší aplikace, které můžou útočníkům pomoct najít další ohrožení zabezpečení, která by bylo možné zneužít.
CA3006: Zkontrolujte zranitelnosti injektáže příkazů procesů Při práci s nedůvěryhodným vstupem mějte na paměti útoky prostřednictvím injektáže příkazů. Útok prostřednictvím injektáže příkazů může spouštět škodlivé příkazy v základním operačním systému a ohrozit zabezpečení a integritu vašeho serveru.
CA3007: Zkontrolujte kód na zranitelnosti otevřeného přesměrování Při práci s nedůvěryhodným vstupem mějte na paměti zranitelnosti otevřeného přesměrování. Útočník může zneužít zranitelnost v otevřeném přesměrování k tomu, aby váš web použil k vytvoření dojmu legitimní adresy URL, ale přesměrovává nic netušícího návštěvníka na phishingovou nebo jinou škodlivou webovou stránku.
CA3008: Zkontrolujte kód na zranitelnosti vůči injekci XPath Při práci s nedůvěryhodným vstupem mějte na paměti útoky prostřednictvím injektáže XPath. Vytváření dotazů XPath pomocí nedůvěryhodného vstupu může útočníkovi umožnit škodlivé manipulaci s dotazem vrátit nezamýšlený výsledek a případně zpřístupnit obsah dotazovaného XML.
CA3009: Zkontrolujte zranitelnosti injekce XML Při práci s nedůvěryhodným vstupem mějte na paměti útoky prostřednictvím injektáže XML.
CA3010: Zkontrolujte kód na zranitelnosti injekce XAML Při práci s nedůvěryhodným vstupem mějte na paměti útoky prostřednictvím injektáže XAML. XAML je značkovací jazyk, který přímo umožňuje instanciaci a vykonávání objektů. To znamená, že prvky vytvořené v XAML můžou pracovat se systémovými prostředky (například síťový přístup a vstupně-výstupní operace systému souborů).
CA3011: Zkontrolujte kód na zranitelnosti DLL injekce Při práci s nedůvěryhodným vstupem mějte na paměti načtení nedůvěryhodného kódu. Pokud vaše webová aplikace načte nedůvěryhodný kód, útočník může do procesu vložit škodlivé knihovny DLL a spustit škodlivý kód.
CA3012: Zkontrolujte zranitelnosti injekce regulárních výrazů Při práci s nedůvěryhodným vstupem mějte na paměti útoky prostřednictvím injektáže regulárních výrazů. Útočník může použít injektáž regulárního výrazu ke škodlivé úpravě regulárního výrazu, k tomu, aby regulární výraz odpovídal nezamýšleným výsledkům nebo aby regulární výraz spotřeboval nadměrné využití procesoru, což vede k útoku do odepření služby.
CA3061: Nepřidávejte schéma prostřednictvím adresy URL Nepoužívejte nebezpečné přetížení metody Add, protože může způsobit nebezpečné externí odkazy.
CA3075: Nezabezpečené zpracování DTD Pokud používáte nezabezpečené instance DTDProcessingu nebo odkazujete na externí zdroje entit, analyzátor může přijmout nedůvěryhodný vstup a zveřejnit citlivé informace útočníkům.
CA3076: Nezabezpečené spouštění skriptů XSLT Pokud v aplikacích .NET spustíte nezabezpečené transformace XSLT (Extensible StyleSheet Language Transformations), procesor může vyřešit nedůvěryhodné odkazy URI, které by mohly útočníkům zpřístupnit citlivé informace, což vede k útokům typu Odepření služby a útokům mezi weby.
CA3077: Nezabezpečené zpracování v návrhu rozhraní API, dokumentu XML a čtečky textu XML Při navrhování rozhraní API odvozeného z XMLDocument a XMLTextReader mějte na paměti DtdProcessing. Použití nezabezpečených instancí DTDProcessing při odkazování nebo překladu externích zdrojů entit nebo nastavení nezabezpečených hodnot v XML může vést ke zpřístupnění informací.
CA3147: Označte obslužné rutiny příkazů pomocí ValidateAntiForgeryToken Při návrhu kontroleru ASP.NET MVC mějte na paměti útoky typu CSRF (Cross-Site Request Forgery). Útok na padělání požadavků mezi weby může posílat škodlivé požadavky ověřeného uživatele do kontroleru ASP.NET MVC.
CA5350: Nepoužívejte slabé kryptografické algoritmy Slabé šifrovací algoritmy a funkce hash se dnes používají z mnoha důvodů, ale neměly by se používat k zajištění důvěrnosti nebo integrity dat, která chrání. Toto pravidlo se aktivuje, když najde algoritmy TripleDES, SHA1 nebo RIPEMD160 v kódu.
CA5351: Nepoužívejte poškozené kryptografické algoritmy Poškozené kryptografické algoritmy se nepovažují za bezpečné a jejich použití by se mělo důrazně nedoporučuje. Toto pravidlo se aktivuje, když najde algoritmus hash MD5 nebo šifrovací algoritmy DES nebo RC2 v kódu.
CA5358: Nepoužívejte nebezpečné režimy šifrování Nepoužívejte nezabezpečené šifrovací režimy
CA5359: Nezakazujte ověřování certifikátů Certifikát může pomoct s ověřením identity serveru. Klienti by měli ověřit certifikát serveru, aby se zajistilo, že se požadavky posílají na zamýšlený server. Pokud ServerCertificateValidationCallback vždy vrátí true, všechny certifikáty projdou ověřením.
CA5360: Nevolejte nebezpečné metody v průběhu deserializace Nezabezpečená deserializace je ohrožení zabezpečení, ke kterému dochází, když se nedůvěryhodná data používají ke zneužití logiky aplikace, způsobí útok DoS (Denial-of-Service) nebo dokonce spustí libovolný kód při deserializaci. Uživatelům se zlými úmysly je často možné zneužít tyto funkce deserializace, když aplikace deserializuje nedůvěryhodná data, která jsou pod jejich kontrolou. Konkrétně vyvolat nebezpečné metody v procesu deserializace. Úspěšné nezabezpečené útoky deserializace by mohly útočníkovi umožnit provádět útoky, jako jsou útoky DoS, obtékání ověřování a vzdálené spuštění kódu.
CA5361: Nezakazujte použití silné kryptografie SChannel Nastavení Switch.System.Net.DontEnableSchUseStrongCrypto na true oslabuje kryptografii používanou u odchozích připojení TLS (Transport Layer Security). Slabší kryptografie může ohrozit důvěrnost komunikace mezi vaší aplikací a serverem, což útočníkům usnadňuje odposlouchvání citlivých dat.
CA5362: Potenciální referenční cyklus v deserializovaném grafu objektů Pokud probíhá deserializace nedůvěryhodných dat, jakýkoli kód zpracovávající deserializovaný objektový graf musí zpracovat referenční cykly bez toho, že by se dostával do nekonečných smyček. To zahrnuje jak kód, který je součástí zpětného volání deserializace, tak kód, který zpracovává graf objektu po dokončení deserializace. Jinak by útočník mohl provést útok odmítnutí služby pomocí škodlivých dat obsahujících referenční cyklus.
CA5363: Nezakažujte ověřování požadavků Ověření požadavku je funkce v ASP.NET, která zkoumá požadavky HTTP a určuje, jestli obsahují potenciálně nebezpečný obsah, který může vést k útokům prostřednictvím injektáže, včetně skriptování mezi weby.
CA5364: Nepoužívejte zastaralé protokoly zabezpečení Protokol TLS (Transport Layer Security) zabezpečuje komunikaci mezi počítači, nejčastěji s protokolem HTTPS (Hypertext Transfer Protocol Secure). Starší verze protokolu TLS jsou méně zabezpečené než protokoly TLS 1.2 a TLS 1.3 a s větší pravděpodobností mají nová ohrožení zabezpečení. Vyhněte se starším verzím protokolu, abyste minimalizovali riziko.
CA5365: Nezakazujte kontrolu hlaviček HTTP Kontrola hlaviček HTTP umožňuje kódování návratových a nových znaků řádku, \r a \n, které jsou nalezeny v hlavičce odpovědi. Toto kódování může pomoci vyhnout se injekčním útokům, které zneužívají aplikace zpracovávající nedůvěryhodná data, která jsou obsažena v hlavičce.
CA5366: Použití Třídy XmlReader pro čtení XML datové sady Použití DataSet ke čtení XML s nedůvěryhodnými daty může načíst škodlivé externí odkazy, které by měly být omezeny použitím XmlReader s bezpečným resolverem nebo s deaktivovaným zpracováním DTD.
CA5367: Neserializujte typy s ukazatelovými poli Toto pravidlo zkontroluje, zda existuje serializovatelná třída s polem ukazatele nebo vlastností. Členy, které nelze serializovat, mohou být ukazatel, například statické členy nebo pole označená NonSerializedAttribute.
CA5368: Nastavení ViewStateUserKey pro třídy odvozené od třídy Page Nastavením vlastnosti ViewStateUserKey můžete zabránit útokům na vaši aplikaci tím, že jednotlivým uživatelům umožníte přiřadit identifikátor proměnné stavu zobrazení, aby útočníci nemohli tuto proměnnou použít k vygenerování útoku. Jinak se objeví zranitelnosti vůči padělání požadavků mezi stránkami.
CA5369: Použijte XmlReader k deserializaci Zpracování nedůvěryhodných schémat DTD a XML může povolit načítání nebezpečných externích odkazů, což by mělo být omezeno pomocí XmlReader se zabezpečeným resolverem nebo s vypnutým zpracováním vloženého schématu DTD a XML.
CA5370: Ověřování čtečky pomocí třídy XmlReader Zpracování nedůvěryhodných schémat DTD a XML může povolit načítání nebezpečných externích odkazů. Toto nebezpečné načítání může být omezeno použitím XmlReaderu se zabezpečeným řešitelem nebo se zakázaným zpracováním DTD a vložených schémat XML.
CA5371: Pro čtení schématu použijte XmlReader Zpracování nedůvěryhodných schémat DTD a XML může povolit načítání nebezpečných externích odkazů. Použití XmlReaderu se zabezpečeným řešičem nebo s deaktivovaným zpracováním DTD a XML schémat přímo ve zdroji toto omezuje.
CA5372: Použití třídy XmlReader pro XPathDocument Zpracování XML z nedůvěryhodných dat může načíst nebezpečné externí odkazy, které lze omezit použitím XmlReaderu se zabezpečeným resolverem nebo zakázáním zpracování DTD.
CA5373: Nepoužívejte zastaralou funkci odvození klíče Toto pravidlo zjistí vyvolání slabých metod odvození klíče System.Security.Cryptography.PasswordDeriveBytes a Rfc2898DeriveBytes.CryptDeriveKey. System.Security.Cryptography.PasswordDeriveBytes použili slabý algoritmus PBKDF1.
CA5374: Nepoužívejte XslTransform Toto pravidlo kontroluje, zda je System.Xml.Xsl.XslTransform v kódu instancováno. System.Xml.Xsl.XslTransform je teď zastaralé a nemělo by se používat.
CA5375: Nepoužívejte sdílený přístupový podpis účtu Sdílený přístupový podpis účtu může delegovat přístup k operacím čtení, zápisu a odstraňování v kontejnerech blobů, tabulkách, frontách a souborových sdíleních, které nejsou povoleny pomocí sdíleného přístupového podpisu služby. Nepodporuje ale zásady na úrovni kontejneru a má menší flexibilitu a kontrolu nad udělenými oprávněními. Jakmile ho uživatelé se zlými úmysly získají, váš účet úložiště bude snadno ohrožen.
CA5376: Použít protokol SharedAccessProtocol HttpsOnly SAS je citlivá data, která nelze přenášet ve formátu prostého textu v protokolu HTTP.
CA5377: Použití zásad přístupu na úrovni kontejneru Zásady přístupu na úrovni kontejneru je možné kdykoli změnit nebo odvolat. Poskytuje větší flexibilitu a kontrolu nad udělenými oprávněními.
CA5378: Nezakazujte ServicePointManagerSecurityProtocols Nastavení DisableUsingServicePointManagerSecurityProtocols na true omezuje připojení, která v rámci Windows Communication Foundation (WCF) používají Transport Layer Security (TLS), na použití pouze verze TLS 1.0. Tato verze protokolu TLS bude zastaralá.
CA5379: Ujistěte se, že algoritmus funkce odvození klíče je dostatečně silný Třída Rfc2898DeriveBytes ve výchozím nastavení používá algoritmus SHA1. Měli byste zadat hashovací algoritmus, který se má použít v některých přetíženích konstruktoru s SHA256 nebo vyšší. Upozorňujeme, že vlastnost HashAlgorithm má pouze přístupovou metodu get a nemá modifikátor overridden.
CA5380: Nepřidávejte certifikáty do kořenového úložiště Toto pravidlo zjistí kód, který přidá certifikát do úložiště certifikátů důvěryhodných kořenových certifikačních autorit. Ve výchozím nastavení je úložiště certifikátů důvěryhodných kořenových certifikačních autorit nakonfigurované se sadou veřejných certifikačních autorit, které splňují požadavky programu Microsoft Root Certificate Program.
CA5381: Ujistěte se, že certifikáty nejsou přidány do kořenového úložiště Toto pravidlo detekuje kód, který potenciálně přidá certifikát do úložiště certifikátů důvěryhodných kořenových certifikačních autorit. Ve výchozím nastavení je úložiště certifikátů důvěryhodných kořenových certifikačních autorit nakonfigurované se sadou veřejných certifikačních autorit(CA), které splňují požadavky programu Microsoft Root Certificate Program.
CA5382: Používejte zabezpečené soubory cookie v ASP.NET Core Aplikace dostupné přes PROTOKOL HTTPS musí používat zabezpečené soubory cookie, které označují prohlížeči, že soubor cookie by měl být přenášen pouze pomocí protokolu TLS (Transport Layer Security).
CA5383: Ujistěte se, že v ASP.NET Core používejte zabezpečené soubory cookie. Aplikace dostupné přes PROTOKOL HTTPS musí používat zabezpečené soubory cookie, které označují prohlížeči, že soubor cookie by měl být přenášen pouze pomocí protokolu TLS (Transport Layer Security).
CA5384: Nepoužívejte algoritmus digitálního podpisu (DSA) DSA je slabý asymetrický šifrovací algoritmus.
CA5385: Použijte algoritmus Rivest–Shamir–Adleman (RSA) s dostatečnou velikostí klíče Klíč RSA menší než 2048 bitů je zranitelnější vůči útokům hrubou silou.
CA5386: Vyhněte se pevně zakódování hodnoty SecurityProtocolType Protokol TLS (Transport Layer Security) zabezpečuje komunikaci mezi počítači, nejčastěji s protokolem HTTPS (Hypertext Transfer Protocol Secure). Verze protokolu TLS 1.0 a TLS 1.1 jsou zastaralé, zatímco protokol TLS 1.2 a TLS 1.3 jsou aktuální. V budoucnu může být protokol TLS 1.2 a TLS 1.3 zastaralý. Pokud chcete zajistit, aby vaše aplikace zůstala zabezpečená, vyhněte se pevnému zakódování verze protokolu a zaměřte se na rozhraní .NET Framework verze 4.7.1 nebo vyšší.
CA5387: Nepoužívejte slabou funkci odvození klíče s nedostatečným počtem iterací Toto pravidlo zkontroluje, jestli byl kryptografický klíč generován Rfc2898DeriveBytes s počtem iterací menší než 100 000. Vyšší počet iterací může pomoct zamezit útokům pomocí slovníku, které se snaží uhodnout vygenerovaný kryptografický klíč.
CA5388: Zajistěte dostatečný počet iterací při použití slabé funkce odvození klíče Toto pravidlo zkontroluje, jestli byl kryptografický klíč generován Rfc2898DeriveBytes s počtem iterací, který může být menší než 100 000. Vyšší počet iterací může pomoct zmírnit útoky slovníku, které se snaží uhodnout vygenerovaný kryptografický klíč.
CA5389: Nepřidávejte cestu archivní položky k cílové cestě systému souborů Cesta k souboru může být relativní a může vést k přístupu k systému souborů mimo očekávanou cílovou cestu systému souborů, což vede ke škodlivým změnám konfigurace a vzdálenému spuštění kódu prostřednictvím techniky lay-and-wait.
CA5390: Nezakódujte šifrovací klíč Aby byl symetrický algoritmus úspěšný, musí být tajný klíč znám pouze odesílateli a příjemci. Když je klíč pevně zakódovaný, snadno se zjistí. I s kompilovanými binárními soubory je snadné je zlými uživateli extrahovat. Jakmile dojde k ohrožení zabezpečení privátního klíče, může se šifrovací text dešifrovat přímo a už není chráněný.
CA5391: Použití antiforgery tokenů v řadičích ASP.NET Core MVC Zpracování POST, PUT, PATCHnebo DELETE požadavku bez ověření antiforgerového tokenu může být zranitelné vůči útokům proti padělání požadavků mezi weby. Útok typu cross-site request forgery (CSRF) může posílat škodlivé požadavky prostřednictvím ověřeného uživatele do vašeho kontroleru ASP.NET Core MVC.
CA5392: Použití atributu DefaultDllImportSearchPaths pro P/Invokes Ve výchozím nastavení mechanismus P/Invoke využívající DllImportAttribute prohledává různé adresáře, včetně aktuálního pracovního adresáře, aby našel a načetl knihovnu. To může být problém se zabezpečením pro určité aplikace, což vede k napadení knihovny DLL.
CA5393: Nepoužívejte nebezpečnou hodnotu DllImportSearchPath Ve výchozích adresářích vyhledávání knihoven DLL a adresářích sestavení může existovat škodlivá knihovna DLL. Nebo v závislosti na tom, odkud se vaše aplikace spouští, může v adresáři aplikace existovat škodlivá knihovna DLL.
CA5394: Nepoužívejte nezabezpečenou náhodnost Použití kryptograficky slabého generátoru pseudonáhodných čísel může útočníkovi umožnit předpovědět, jaká hodnota bude citlivá na zabezpečení vygenerována.
CA5395: Chybí atribut HttpVerb pro metody akcí Všechny akční metody, které vytvářejí, upravují, odstraňují nebo jinak modifikují data, musí být chráněny pomocí antiforgery atributu proti útokům CSRF (Cross-Site Request Forgery). Provedení operace GET by mělo být bezpečná operace, která nemá žádné vedlejší účinky a neupravuje trvalá data.
CA5396: Nastavte HttpOnly na true pro HttpCookie Jako hloubková ochrana se ujistěte, že jsou soubory cookie HTTP citlivé na zabezpečení označené jako HttpOnly. To znamená, že webové prohlížeče by měly zakázat skripty v přístupu k souborům cookie. Injektované škodlivé skripty představují běžný způsob krádeže souborů cookie.
CA5397: Nepoužívejte zastaralé hodnoty SslProtocols Protokol TLS (Transport Layer Security) zabezpečuje komunikaci mezi počítači, nejčastěji s protokolem HTTPS (Hypertext Transfer Protocol Secure). Starší verze protokolu TLS jsou méně zabezpečené než protokoly TLS 1.2 a TLS 1.3 a s větší pravděpodobností mají nová ohrožení zabezpečení. Vyhněte se starším verzím protokolu, abyste minimalizovali riziko.
CA5398: Vyhněte se pevně zakódovaným hodnotám SslProtocols Protokol TLS (Transport Layer Security) zabezpečuje komunikaci mezi počítači, nejčastěji s protokolem HTTPS (Hypertext Transfer Protocol Secure). Verze protokolu TLS 1.0 a TLS 1.1 jsou zastaralé, zatímco protokol TLS 1.2 a TLS 1.3 jsou aktuální. V budoucnu může být protokol TLS 1.2 a TLS 1.3 zastaralý. Pokud chcete zajistit, aby vaše aplikace zůstala zabezpečená, vyhněte se pevně zakódování verze protokolu.
CA5399: Rozhodně zakažte kontrolu seznamu odvolaných certifikátů HttpClient Odvolaný certifikát už není důvěryhodný. Útočníci ho můžou použít předáním některých škodlivých dat nebo krádeží citlivých dat při komunikaci HTTPS.
CA5400: Ujistěte se, že kontrola seznamu odvolaných certifikátů HttpClient není zakázaná Odvolaný certifikát už není důvěryhodný. Útočníci ho můžou použít předáním některých škodlivých dat nebo krádeží citlivých dat při komunikaci HTTPS.
CA5401: Nepoužívejte CreateEncryptor s nenulovým IV Symetrické šifrování by vždy mělo používat neopakovatelný inicializační vektor, aby se zabránilo útokům na slovník.
CA5402: Použijte CreateEncryptor s výchozím IV. Symetrické šifrování by vždy mělo používat neopakovatelný inicializační vektor, aby se zabránilo útokům na slovník.
CA5403: Nezakódujte certifikát Pevně zakódovaný je parametr data nebo rawData konstruktoru X509Certificate nebo X509Certificate2.
CA5404: Nezakazujte kontroly ověření tokenu TokenValidationParameters vlastnosti, které řídí ověření tokenu, by neměly být nastaveny na false.
CA5405: Nevynechávejte vždy ověřování tokenů v delegátech Zpětné volání přiřazené AudienceValidator nebo LifetimeValidator vždy vrátí true.