Reguły zabezpieczeń

Reguły zabezpieczeń obsługują bezpieczniejsze biblioteki i aplikacje. Te reguły pomagają zapobiegać wadom zabezpieczeń w programie. Jeśli wyłączysz dowolną z tych reguł, należy wyraźnie oznaczyć przyczynę w kodzie, a także poinformować wyznaczonego oficera zabezpieczeń dla projektu programistycznego.

W tym obszarze

Reguła opis
CA2100: Sprawdź zapytania SQL pod kątem luk w zabezpieczeniach Metoda ustawia właściwość System.Data.IDbCommand.CommandText przez użycie ciągu, który jest zbudowany z argumentem ciągu do metody. Zasada ta zakłada, że argument ciągu zawiera dane wejściowe użytkownika. Ciąg polecenia SQL zbudowany z danych wejściowych użytkownika jest narażony na ataki przez wstrzyknięcie kodu SQL.
CA2109: Przejrzyj widoczne procedury obsługi zdarzeń Wykryto publiczną lub chronioną metodę obsługi zdarzeń. Metody obsługi zdarzeń nie powinny być udostępnione, chyba że jest to absolutnie konieczne.
CA2119: Pieczętuj metody, które spełniają wymagania interfejsów prywatnych Typ publiczny, który można dziedziczyć, zapewnia zastępowalną implementację metody wewnętrznego (Friend in Visual Basic). Aby naprawić naruszenie tej zasady, należy zapobiegać zastąpieniu metody poza zestawem.
CA2153: Unikaj obsługiwania uszkodzonych wyjątków stanu Uszkodzone wyjątki stanu (CSE) wskazują, że uszkodzenie pamięci istnieje w procesie. Przechwycenie tych elementów zamiast zezwalania na awarię procesu może prowadzić do luk w zabezpieczeniach, jeśli osoba atakująca może umieścić luki w zabezpieczeniach w uszkodzonym regionie pamięci.
CA2300: Nie używaj niezabezpieczonego deserializatora BinaryFormatter Niezabezpieczone deserializatory są podatne na deserializacji niezaufanych danych. Osoba atakująca może zmodyfikować serializowane dane w celu uwzględnienia nieoczekiwanych typów w celu wstrzyknięcia obiektów ze złośliwymi skutkami ubocznymi.
CA2301: Nie należy wywoływać metody BinaryFormatter.Deserialize bez uprzedniego ustawienia BinaryFormatter.Binder Niezabezpieczone deserializatory są podatne na deserializacji niezaufanych danych. Osoba atakująca może zmodyfikować serializowane dane w celu uwzględnienia nieoczekiwanych typów w celu wstrzyknięcia obiektów ze złośliwymi skutkami ubocznymi.
CA2302: Upewnij się, że parametr BinaryFormatter.Binder został ustawiony przed wywołaniem metody BinaryFormatter.Deserialize Niezabezpieczone deserializatory są podatne na deserializacji niezaufanych danych. Osoba atakująca może zmodyfikować serializowane dane w celu uwzględnienia nieoczekiwanych typów w celu wstrzyknięcia obiektów ze złośliwymi skutkami ubocznymi.
CA2305: Nie używaj niezabezpieczonego deserializatora LosFormatter Niezabezpieczone deserializatory są podatne na deserializacji niezaufanych danych. Osoba atakująca może zmodyfikować serializowane dane w celu uwzględnienia nieoczekiwanych typów w celu wstrzyknięcia obiektów ze złośliwymi skutkami ubocznymi.
CA2310: Nie używaj niezabezpieczonego deserializatora NetDataContractSerializer Niezabezpieczone deserializatory są podatne na deserializacji niezaufanych danych. Osoba atakująca może zmodyfikować serializowane dane w celu uwzględnienia nieoczekiwanych typów w celu wstrzyknięcia obiektów ze złośliwymi skutkami ubocznymi.
CA2311: Nie deserializuj bez pierwszego ustawienia NetDataContractSerializer.Binder Niezabezpieczone deserializatory są podatne na deserializacji niezaufanych danych. Osoba atakująca może zmodyfikować serializowane dane w celu uwzględnienia nieoczekiwanych typów w celu wstrzyknięcia obiektów ze złośliwymi skutkami ubocznymi.
CA2312: Przed deserializacji upewnij się, że parametr NetDataContractSerializer.Binder został ustawiony Niezabezpieczone deserializatory są podatne na deserializacji niezaufanych danych. Osoba atakująca może zmodyfikować serializowane dane w celu uwzględnienia nieoczekiwanych typów w celu wstrzyknięcia obiektów ze złośliwymi skutkami ubocznymi.
CA2315: Nie używaj niezabezpieczonego deserializatora ObjectStateFormatter Niezabezpieczone deserializatory są podatne na deserializacji niezaufanych danych. Osoba atakująca może zmodyfikować serializowane dane w celu uwzględnienia nieoczekiwanych typów w celu wstrzyknięcia obiektów ze złośliwymi skutkami ubocznymi.
CA2321: Nie deserializuj za pomocą klasy JavaScriptSerializer przy użyciu parametru SimpleTypeResolver Niezabezpieczone deserializatory są podatne na deserializacji niezaufanych danych. Osoba atakująca może zmodyfikować serializowane dane w celu uwzględnienia nieoczekiwanych typów w celu wstrzyknięcia obiektów ze złośliwymi skutkami ubocznymi.
CA2322: Przed deserializacji upewnij się, że parametr JavaScriptSerializer nie został zainicjowany za pomocą parametru SimpleTypeResolver Niezabezpieczone deserializatory są podatne na deserializacji niezaufanych danych. Osoba atakująca może zmodyfikować serializowane dane w celu uwzględnienia nieoczekiwanych typów w celu wstrzyknięcia obiektów ze złośliwymi skutkami ubocznymi.
CA2326: Nie używaj wartości TypeNameHandling innych niż None Niezabezpieczone deserializatory są podatne na deserializacji niezaufanych danych. Osoba atakująca może zmodyfikować serializowane dane w celu uwzględnienia nieoczekiwanych typów w celu wstrzyknięcia obiektów ze złośliwymi skutkami ubocznymi.
CA2327: Nie używaj niezabezpieczonego narzędzia JsonSerializer Ustawienia Niezabezpieczone deserializatory są podatne na deserializacji niezaufanych danych. Osoba atakująca może zmodyfikować serializowane dane w celu uwzględnienia nieoczekiwanych typów w celu wstrzyknięcia obiektów ze złośliwymi skutkami ubocznymi.
CA2328: Upewnij się, że program JsonSerializer Ustawienia są bezpieczne Niezabezpieczone deserializatory są podatne na deserializacji niezaufanych danych. Osoba atakująca może zmodyfikować serializowane dane w celu uwzględnienia nieoczekiwanych typów w celu wstrzyknięcia obiektów ze złośliwymi skutkami ubocznymi.
CA2329: Nie deserializuj przy użyciu narzędzia JsonSerializer przy użyciu niezabezpieczonej konfiguracji Niezabezpieczone deserializatory są podatne na deserializacji niezaufanych danych. Osoba atakująca może zmodyfikować serializowane dane w celu uwzględnienia nieoczekiwanych typów w celu wstrzyknięcia obiektów ze złośliwymi skutkami ubocznymi.
CA2330: Upewnij się, że program JsonSerializer ma bezpieczną konfigurację podczas deserializacji Niezabezpieczone deserializatory są podatne na deserializacji niezaufanych danych. Osoba atakująca może zmodyfikować serializowane dane w celu uwzględnienia nieoczekiwanych typów w celu wstrzyknięcia obiektów ze złośliwymi skutkami ubocznymi.
CA2350: Upewnij się, że dane wejściowe elementu DataTable.ReadXml() są zaufane W przypadku deserializacji elementu DataTable z niezaufanymi danymi wejściowymi osoba atakująca może utworzyć złośliwe dane wejściowe w celu przeprowadzenia ataku typu "odmowa usługi". Może istnieć nieznana luka w zabezpieczeniach dotycząca zdalnego wykonywania kodu.
CA2351: Upewnij się, że dane wejściowe elementu DataSet.ReadXml() są zaufane W przypadku deserializacji elementu DataSet z niezaufanymi danymi wejściowymi osoba atakująca może utworzyć złośliwe dane wejściowe w celu przeprowadzenia ataku typu "odmowa usługi". Może istnieć nieznana luka w zabezpieczeniach dotycząca zdalnego wykonywania kodu.
CA2352: Niebezpieczny element DataSet lub DataTable w typie z możliwością serializacji może być narażony na ataki zdalnego wykonywania kodu Klasa lub struktura oznaczona elementem SerializableAttribute zawiera DataSet pole lub DataTable właściwość i nie ma elementu GeneratedCodeAttribute.
CA2353: Niebezpieczny zestaw danych lub dataTable w typie z możliwością serializacji Klasa lub struktura oznaczona atrybutem serializacji XML lub atrybutem kontraktu danych zawiera DataSet pole lub DataTable właściwość.
CA2354: Niebezpieczny element DataSet lub DataTable w deserializowanym grafie obiektu może być narażony na atak zdalnego wykonywania kodu Deserializowanie za pomocą serializowanego System.Runtime.Serialization.IFormatter , a graf obiektu typu rzutowanego może zawierać element DataSet lub DataTable.
CA2355: Niebezpieczny element DataSet lub DataTable w deserializowanym grafie obiektu Deserializowanie, gdy graf obiektu rzutowanego lub określonego typu może zawierać element DataSet lub DataTable.
CA2356: Niebezpieczny element DataSet lub DataTable w internetowym deserializowanym grafie obiektów Metoda z parametrem System.Web.Services.WebMethodAttribute lub System.ServiceModel.OperationContractAttribute , który może odwoływać się do metody DataSet lub DataTable.
CA2361: Upewnij się, że automatycznie wygenerowana klasa zawierająca klasę DataSet.ReadXml() nie jest używana z niezaufanymi danymi W przypadku deserializacji elementu DataSet z niezaufanymi danymi wejściowymi osoba atakująca może utworzyć złośliwe dane wejściowe w celu przeprowadzenia ataku typu "odmowa usługi". Może istnieć nieznana luka w zabezpieczeniach dotycząca zdalnego wykonywania kodu.
CA2362: Niebezpieczny element DataSet lub DataTable w automatycznie wygenerowanym typie serializowalnym może być narażony na ataki zdalnego wykonywania kodu W przypadku deserializacji niezaufanych danych wejściowych za pomocą BinaryFormatter polecenia , a deserializowany graf obiektu zawiera DataSet element lub DataTable, osoba atakująca może utworzyć złośliwy ładunek w celu przeprowadzenia zdalnego ataku na wykonywanie kodu.
CA3001: Przegląd kodu pod kątem luk w zabezpieczeniach polegających na wstrzyknięciu kodu SQL Podczas pracy z niezaufanymi poleceniami wejściowymi i sql należy pamiętać o atakach polegających na wstrzyknięciu kodu SQL. Atak polegający na wstrzyknięciu kodu SQL może wykonywać złośliwe polecenia SQL, co narusza bezpieczeństwo i integralność aplikacji.
CA3002: Przegląd kodu pod kątem luk w zabezpieczeniach XSS Podczas pracy z niezaufanymi danymi wejściowymi z żądań internetowych należy pamiętać o atakach skryptowych między witrynami (XSS). Atak XSS wprowadza niezaufane dane wejściowe do nieprzetworzonych danych wyjściowych HTML, dzięki czemu osoba atakująca może wykonywać złośliwe skrypty lub złośliwie modyfikować zawartość na stronie internetowej.
CA3003: Przegląd kodu pod kątem luk w zabezpieczeniach polegających na wstrzyknięciu ścieżki pliku Podczas pracy z niezaufanymi danymi wejściowymi z żądań internetowych należy pamiętać o używaniu danych wejściowych kontrolowanych przez użytkownika podczas określania ścieżek do plików.
CA3004: Przegląd kodu pod kątem luk w zabezpieczeniach umożliwiających ujawnienie informacji Ujawnienie informacji o wyjątkach zapewnia osobom atakującym wgląd w wewnętrzne elementy aplikacji, co może pomóc osobom atakującym w znalezieniu innych luk w zabezpieczeniach.
CA3006: Przegląd kodu pod kątem luk w zabezpieczeniach polegających na wstrzyknięciu poleceń procesu Podczas pracy z niezaufanymi danymi wejściowymi należy pamiętać o atakach polegających na wstrzyknięciu poleceń. Atak polegający na wstrzyknięciu polecenia może wykonywać złośliwe polecenia w bazowym systemie operacyjnym, co narusza bezpieczeństwo i integralność serwera.
CA3007: Przegląd kodu pod kątem luk w zabezpieczeniach otwierania przekierowania Podczas pracy z niezaufanymi danymi wejściowymi należy pamiętać o otwartych lukach w zabezpieczeniach przekierowania. Osoba atakująca może wykorzystać otwartą lukę w zabezpieczeniach przekierowania, aby użyć witryny internetowej w celu utworzenia prawidłowego adresu URL, ale przekierowuje nie podejrzewającego gościa do wyłudzania informacji lub innej złośliwej strony internetowej.
CA3008: Przegląd kodu pod kątem luk w zabezpieczeniach polegających na wstrzyknięciu kodu XPath Podczas pracy z niezaufanymi danymi wejściowymi należy pamiętać o atakach polegających na wstrzyknięciu kodu XPath. Konstruowanie zapytań XPath przy użyciu niezaufanych danych wejściowych może umożliwić osobie atakującej złośliwe manipulowanie zapytaniem w celu zwrócenia niezamierzonego wyniku i ewentualnie ujawnienie zawartości zapytanego kodu XML.
CA3009: Przegląd kodu pod kątem luk w zabezpieczeniach polegających na wstrzyknięciu kodu XML Podczas pracy z niezaufanymi danymi wejściowymi należy pamiętać o atakach polegających na wstrzyknięciu kodu XML.
CA3010: Przegląd kodu pod kątem luk w zabezpieczeniach polegających na wstrzyknięciu kodu XAML Podczas pracy z niezaufanymi danymi wejściowymi należy pamiętać o atakach polegających na wstrzyknięciu kodu XAML. XAML to język znaczników, w którym bezpośrednio reprezentowane jest tworzenie wystąpień obiektów i ich wykonywanie. Oznacza to, że elementy utworzone w języku XAML mogą współdziałać z zasobami systemowymi (na przykład dostępem do sieci i operacjami we/wy systemu plików).
CA3011: Przegląd kodu pod kątem luk w zabezpieczeniach polegających na wstrzyknięciu biblioteki DLL Podczas pracy z niezaufanymi danymi wejściowymi należy pamiętać o ładowaniu niezaufanego kodu. Jeśli aplikacja internetowa ładuje niezaufany kod, osoba atakująca może wstrzyknąć złośliwe biblioteki DLL do procesu i wykonać złośliwy kod.
CA3012: Przegląd kodu pod kątem luk w zabezpieczeniach polegających na wstrzyknięciu wyrażeń regularnych Podczas pracy z niezaufanymi danymi wejściowymi należy pamiętać o atakach polegających na wstrzyknięciu wyrażeń regularnych. Osoba atakująca może użyć iniekcji wyrażeń regularnych w celu złośliwego zmodyfikowania wyrażenia regularnego w celu dopasowania wyrażenia regularnego do niezamierzonych wyników lub nadmiernego użycia wyrażeń regularnych przez wyrażenie regularne, co spowoduje atak typu "odmowa usługi".
CA3061: Nie dodawaj schematu według adresu URL Nie używaj niebezpiecznego przeciążenia metody Add, ponieważ może to spowodować niebezpieczne odwołania zewnętrzne.
CA3075: Niezabezpieczone przetwarzanie definicji DTD Jeśli używasz niezabezpieczonych wystąpień DTDProcessing lub odwołujesz się do źródeł zewnętrznych jednostek, analizator może zaakceptować niezaufane dane wejściowe i ujawnić poufne informacje osobom atakującym.
CA3076: Niezabezpieczone wykonywanie skryptu XSLT W przypadku wykonywania rozszerzalnych przekształceń języka stylesheet (XSLT) w aplikacjach platformy .NET niezabezpieczony procesor może rozpoznać niezaufane odwołania identyfikatora URI, które mogą ujawnić poufne informacje osobom atakującym, co prowadzi do ataków typu "odmowa usługi" i "między witrynami".
CA3077: Niezabezpieczone przetwarzanie w elemencie Design interfejsu API, dokumencie XML i czytniku tekstu dla kodu XML Podczas projektowania interfejsu API pochodzącego z elementów XMLDocument i XMLTextReader należy pamiętać o przetwarzaniu dtdprocessingu. Używanie niezabezpieczonych wystąpień DTDProcessing w przypadku odwoływania się do zewnętrznych źródeł jednostki lub ustawiania niezabezpieczonych wartości w kodzie XML może prowadzić do ujawnienia informacji.
CA3147: Oznacz programy obsługi czasowników za pomocą elementu ValidateAntiForgeryToken Podczas projektowania kontrolera MVC ASP.NET należy pamiętać o atakach fałszerzowania żądań obejmujących wiele lokacji. Atak z żądaniem fałszerzowania między witrynami może wysyłać złośliwe żądania od uwierzytelnionego użytkownika do kontrolera MVC ASP.NET.
CA5350: Nie używaj słabych algorytmów kryptograficznych Słabe algorytmy szyfrowania i funkcje tworzenia skrótów są obecnie używane z wielu powodów, ale nie powinny być używane do zagwarantowania poufności lub integralności chronionych danych. Ta reguła jest wyzwalana w przypadku znalezienia algorytmów TripleDES, SHA1 lub RIPEMD160 w kodzie.
CA5351: Nie używaj uszkodzonych algorytmów kryptograficznych Uszkodzone algorytmy kryptograficzne nie są uważane za bezpieczne, a ich użycie powinno być zdecydowanie zniechęcone. Ta reguła jest wyzwalana w przypadku znalezienia algorytmu skrótu MD5 lub algorytmów szyfrowania DES lub RC2 w kodzie.
CA5358: Nie używaj niebezpiecznych trybów szyfrowania Nie używaj niebezpiecznych trybów szyfrowania
CA5359: Nie wyłączaj weryfikacji certyfikatu Certyfikat może pomóc w uwierzytelnieniu tożsamości serwera. Klienci powinni zweryfikować certyfikat serwera, aby upewnić się, że żądania są wysyłane do zamierzonego serwera. Jeśli serverCertificateValidationCallback zawsze zwraca truewartość , każdy certyfikat przejdzie walidację.
CA5360: Nie należy wywoływać niebezpiecznych metod w deserializacji Niezabezpieczona deserializacji jest luką w zabezpieczeniach, która występuje, gdy niezaufane dane są używane do nadużywania logiki aplikacji, spowodowania ataku typu "odmowa usługi" (DoS), a nawet wykonania dowolnego kodu podczas deserializacji. Złośliwi użytkownicy często mogą nadużywać tych funkcji deserializacji, gdy aplikacja deserializuje niezaufane dane, które są pod ich kontrolą. W szczególności należy wywołać niebezpieczne metody w procesie deserializacji. Pomyślne niezabezpieczone ataki deserializacji mogą umożliwić atakującemu przeprowadzenie ataków, takich jak ataki DoS, obejścia uwierzytelniania i zdalne wykonywanie kodu.
CA5361: Nie wyłączaj używania silnej kryptografii SChannel Ustawienie Switch.System.Net.DontEnableSchUseStrongCrypto w celu true osłabienia kryptografii używanej w wychodzących połączeniach protokołu Transport Layer Security (TLS). Słabsza kryptografia może naruszyć poufność komunikacji między aplikacją a serwerem, co ułatwia osobom atakującym podsłuchiwanie poufnych danych.
CA5362: Potencjalny cykl odniesienia w deserializowanym grafie obiektu Jeśli deserializowanie niezaufanych danych, każdy kod przetwarzający deserializowany graf obiektu musi obsługiwać cykle odwołań bez przechodzenia do nieskończonych pętli. Obejmuje to zarówno kod, który jest częścią wywołania zwrotnego deserializacji, jak i kodu, który przetwarza graf obiektu po zakończeniu deserializacji. W przeciwnym razie osoba atakująca może wykonać atak typu "odmowa usługi" ze złośliwymi danymi zawierającymi cykl referencyjny.
CA5363: Nie wyłączaj walidacji żądania Walidacja żądań to funkcja w ASP.NET, która analizuje żądania HTTP i określa, czy zawierają potencjalnie niebezpieczną zawartość, która może prowadzić do ataków polegających na wstrzyknięciu, w tym skryptów obejmujących wiele witryn.
CA5364: Nie używaj przestarzałych protokołów zabezpieczeń Protokół TRANSPORT Layer Security (TLS) zabezpiecza komunikację między komputerami, najczęściej z protokołem Secure (HTTPS) funkcji Hypertext Transfer Protocol. Starsze wersje protokołu TLS są mniej bezpieczne niż TLS 1.2 i TLS 1.3 i są bardziej narażone na nowe luki w zabezpieczeniach. Unikaj starszych wersji protokołu, aby zminimalizować ryzyko.
CA5365: Nie wyłączaj sprawdzania nagłówka HTTP Sprawdzanie nagłówka HTTP umożliwia kodowanie znaków powrotu karetki i znaków nowego wiersza, \r i \n, które znajdują się w nagłówkach odpowiedzi. To kodowanie może pomóc uniknąć ataków polegających na wstrzyknięciu, które wykorzystują aplikację, która echem niezaufanych danych zawartych w nagłówku.
CA5366: Użyj elementu XmlReader dla elementu DataSet Read XML Użycie elementu DataSet do odczytu kodu XML z niezaufanymi danymi może ładować niebezpieczne odwołania zewnętrzne, które powinny być ograniczone za pomocą modułu XmlReader z bezpiecznym rozpoznawaniem lub z wyłączonym przetwarzaniem DTD.
CA5367: Nie serializuj typów z polami wskaźnika Ta reguła sprawdza, czy istnieje klasa z możliwością serializacji z polem wskaźnika lub właściwością. Elementy członkowskie, których nie można serializować, mogą być wskaźnikiem, takim jak statyczne elementy członkowskie lub pola oznaczone znakiem NonSerializedAttribute.
CA5368: Ustaw właściwość ViewStateUserKey dla klas pochodnych ze strony Ustawienie właściwości może pomóc w zapobieganiu ViewStateUserKey atakom na aplikację, umożliwiając przypisanie identyfikatora do zmiennej stanu widoku dla poszczególnych użytkowników, aby osoby atakujące nie mogły użyć zmiennej do wygenerowania ataku. W przeciwnym razie wystąpią luki w zabezpieczeniach fałszerzowania żądań między witrynami.
CA5369: Użyj elementu XmlReader do deserializacji Przetwarzanie niezaufanych schematów DTD i XML może umożliwić ładowanie niebezpiecznych odwołań zewnętrznych, które powinny być ograniczone przy użyciu klasy XmlReader z bezpiecznym rozpoznawaniem lub z wyłączonym przetwarzaniem schematu wbudowanego DTD i XML.
CA5370: Użyj elementu XmlReader do sprawdzania poprawności czytnika Przetwarzanie niezaufanych schematów DTD i XML może umożliwić ładowanie niebezpiecznych odwołań zewnętrznych. To niebezpieczne ładowanie może być ograniczone przy użyciu elementu XmlReader z bezpiecznym rozpoznawaniem nazw lub z wyłączonym przetwarzaniem schematu wbudowanego DTD i XML.
CA5371: Odczyt schematu przy użyciu elementu XmlReader Przetwarzanie niezaufanych schematów DTD i XML może umożliwić ładowanie niebezpiecznych odwołań zewnętrznych. Użycie elementu XmlReader z bezpiecznym modułem rozpoznawania nazw lub z wyłączonym przetwarzaniem schematu wbudowanego DTD i XML ogranicza to.
CA5372: Użyj elementu XmlReader dla elementu XPathDocument Przetwarzanie kodu XML z niezaufanych danych może ładować niebezpieczne odwołania zewnętrzne, które można ograniczyć przy użyciu elementu XmlReader z bezpiecznym modułem rozpoznawania lub wyłączonym przetwarzaniem DTD.
CA5373: Nie używaj przestarzałej funkcji wyprowadzania kluczy Ta reguła wykrywa wywołanie metod wyprowadzania System.Security.Cryptography.PasswordDeriveBytes słabych kluczy i Rfc2898DeriveBytes.CryptDeriveKey. System.Security.Cryptography.PasswordDeriveBytes użyto słabego algorytmu PBKDF1.
CA5374: Nie używaj XslTransform Ta reguła sprawdza, czy System.Xml.Xsl.XslTransform wystąpienie jest tworzone w kodzie. System.Xml.Xsl.XslTransform jest teraz przestarzały i nie powinien być używany.
CA5375: Nie używaj sygnatury dostępu współdzielonego konta Sygnatura dostępu współdzielonego konta może delegować dostęp do operacji odczytu, zapisu i usuwania w kontenerach obiektów blob, tabelach, kolejkach i udziałach plików, które nie są dozwolone przy użyciu sygnatury dostępu współdzielonego usługi. Nie obsługuje jednak zasad na poziomie kontenera i ma mniejszą elastyczność i kontrolę nad przyznanymi uprawnieniami. Gdy złośliwi użytkownicy go otrzymają, twoje konto magazynu zostanie łatwo naruszone.
CA5376: Użyj funkcji SharedAccessProtocol HttpsOnly Sygnatura dostępu współdzielonego to poufne dane, których nie można transportować w postaci zwykłego tekstu w protokole HTTP.
CA5377: Użyj zasad dostępu na poziomie kontenera Zasady dostępu na poziomie kontenera można modyfikować lub odwoływać w dowolnym momencie. Zapewnia większą elastyczność i kontrolę nad przyznanymi uprawnieniami.
CA5378: Nie wyłączaj elementu ServicePointManagerSecurityProtocols Ustawienie DisableUsingServicePointManagerSecurityProtocols w celu true ograniczenia połączeń protokołu Transport Layer Security (TLS) programu Windows Communication Framework (WCF) z użyciem protokołu TLS 1.0. Ta wersja protokołu TLS będzie przestarzała.
CA5379: Upewnij się, że algorytm funkcji wyprowadzania klucza jest wystarczająco silny Klasa Rfc2898DeriveBytes domyślnie używa algorytmu SHA1 . Należy określić algorytm skrótu do użycia w niektórych przeciążeniach konstruktora z SHA256 lub wyższym. Należy pamiętać, że HashAlgorithm właściwość ma tylko metodę get dostępu i nie ma overridden modyfikatora.
CA5380: Nie dodawaj certyfikatów do magazynu głównego Ta reguła wykrywa kod, który dodaje certyfikat do magazynu certyfikatów zaufanych głównych urzędów certyfikacji. Domyślnie magazyn certyfikatów zaufanych głównych urzędów certyfikacji jest skonfigurowany z zestawem publicznych urzędów certyfikacji, który spełnia wymagania programu certyfikatów głównych firmy Microsoft.
CA5381: Upewnij się, że certyfikaty nie są dodawane do magazynu głównego Ta reguła wykrywa kod, który potencjalnie dodaje certyfikat do magazynu certyfikatów zaufanych głównych urzędów certyfikacji. Domyślnie magazyn certyfikatów zaufanych głównych urzędów certyfikacji jest skonfigurowany z zestawem publicznych urzędów certyfikacji, który spełnia wymagania programu certyfikatów głównych firmy Microsoft.
CA5382: Używanie bezpiecznych plików cookie w programie ASP.NET Core Aplikacje dostępne za pośrednictwem protokołu HTTPS muszą używać bezpiecznych plików cookie, które wskazują przeglądarce, że plik cookie powinien być przesyłany tylko przy użyciu protokołu Transport Layer Security (TLS).
CA5383: Upewnij się, że używaj bezpiecznych plików cookie w programie ASP.NET Core Aplikacje dostępne za pośrednictwem protokołu HTTPS muszą używać bezpiecznych plików cookie, które wskazują przeglądarce, że plik cookie powinien być przesyłany tylko przy użyciu protokołu Transport Layer Security (TLS).
CA5384: Nie używaj algorytmu podpisu cyfrowego (DSA) DSA to słaby algorytm szyfrowania asymetrycznego.
CA5385: Użyj algorytmu Rivest–Shamir-Adleman (RSA) z wystarczającą ilością klucza Klucz RSA mniejszy niż 2048 bitów jest bardziej podatny na ataki siłowe.
CA5386: Unikaj trwałego kodowania wartości SecurityProtocolType Protokół TRANSPORT Layer Security (TLS) zabezpiecza komunikację między komputerami, najczęściej z protokołem Secure (HTTPS) funkcji Hypertext Transfer Protocol. Wersje protokołu TLS 1.0 i TLS 1.1 są przestarzałe, a protokoły TLS 1.2 i TLS 1.3 są aktualne. W przyszłości protokoły TLS 1.2 i TLS 1.3 mogą być przestarzałe. Aby upewnić się, że aplikacja pozostaje bezpieczna, należy unikać kodowania wersji protokołu i docelowej co najmniej programu .NET Framework w wersji 4.7.1.
CA5387: Nie używaj funkcji wyprowadzania słabego klucza z niewystarczającą liczbą iteracji Ta reguła sprawdza, czy klucz kryptograficzny został wygenerowany za pomocą Rfc2898DeriveBytes liczby iteracji mniejszej niż 100 000. Większa liczba iteracji może pomóc w ograniczeniu ataków słownikowych, które próbują odgadnąć wygenerowany klucz kryptograficzny.
CA5388: Zapewnij wystarczającą liczbę iteracji podczas używania funkcji wyprowadzania słabego klucza Ta reguła sprawdza, czy klucz kryptograficzny został wygenerowany za pomocą Rfc2898DeriveBytes liczby iteracji, która może być mniejsza niż 100 000. Większa liczba iteracji może pomóc w ograniczeniu ataków słownikowych, które próbują odgadnąć wygenerowany klucz kryptograficzny.
CA5389: Nie dodawaj ścieżki elementu archiwum do docelowej ścieżki systemu plików Ścieżka pliku może być względna i może prowadzić do dostępu do systemu plików poza oczekiwaną ścieżką docelową systemu plików, co prowadzi do złośliwych zmian konfiguracji i zdalnego wykonywania kodu za pomocą techniki lay-and-wait.
CA5390: Nie szyfruj klucza szyfrowania za pomocą kodu twardego Aby algorytm symetryczny zakończył się pomyślnie, klucz tajny musi być znany tylko nadawcy i odbiorcy. Gdy klucz jest zakodowany na twardo, można go łatwo odnaleźć. Nawet w przypadku skompilowanych plików binarnych można łatwo wyodrębnić złośliwych użytkowników. Po naruszeniu zabezpieczeń klucza prywatnego tekst szyfrowania można odszyfrować bezpośrednio i nie jest już chroniony.
CA5391: Używanie tokenów antyforgeryjnych w kontrolerach ASP.NET Core MVC Obsługa POSTżądania , PUT, PATCHlub DELETE bez weryfikowania tokenu chroniącego przed fałszowaniem może być podatna na ataki fałszerskie żądania obejmujące wiele witryn. Atak z żądaniem fałszerzowania między witrynami może wysyłać złośliwe żądania od uwierzytelnionego użytkownika do kontrolera MVC platformy ASP.NET Core.
CA5392: Użyj atrybutu DefaultDllImportSearchPaths dla parametrów P/Invoke Domyślnie funkcje P/Invoke korzystające z DllImportAttribute sondowania wielu katalogów, w tym bieżącego katalogu roboczego do załadowania biblioteki. Może to być problem z zabezpieczeniami niektórych aplikacji, co prowadzi do porwania bibliotek DLL.
CA5393: Nie używaj niebezpiecznej wartości DllImportSearchPath W domyślnych katalogach wyszukiwania bibliotek DLL i katalogach zestawów może istnieć złośliwa biblioteka DLL. Lub w zależności od tego, skąd jest uruchamiana aplikacja, może istnieć złośliwa biblioteka DLL w katalogu aplikacji.
CA5394: Nie używaj niezabezpieczonej losowości Użycie kryptograficznie słabego generatora liczb pseudolosowych może umożliwić atakującemu przewidywanie, jaka wartość wrażliwa na zabezpieczenia zostanie wygenerowana.
CA5395: Miss HttpVerb atrybut dla metod akcji Wszystkie metody akcji, które tworzą, edytują, usuwają lub w inny sposób modyfikują dane, muszą być chronione za pomocą atrybutu ochrony przed fałszerzacją żądania między witrynami. Wykonanie operacji GET powinno być bezpieczną operacją, która nie ma skutków ubocznych i nie modyfikuje utrwalone dane.
CA5396: Ustaw wartość HttpOnly na wartość true dla elementu HttpCookie W ramach ochrony w głębi systemu upewnij się, że poufne pliki cookie HTTP są oznaczone jako HttpOnly. Oznacza to, że przeglądarki internetowe nie powinny zezwalać skryptom na dostęp do plików cookie. Wstrzyknięte złośliwe skrypty są typowym sposobem kradzieży plików cookie.
CA5397: Nie używaj przestarzałych wartości SslProtocols Protokół TRANSPORT Layer Security (TLS) zabezpiecza komunikację między komputerami, najczęściej z protokołem Secure (HTTPS) funkcji Hypertext Transfer Protocol. Starsze wersje protokołu TLS są mniej bezpieczne niż TLS 1.2 i TLS 1.3 i są bardziej narażone na nowe luki w zabezpieczeniach. Unikaj starszych wersji protokołu, aby zminimalizować ryzyko.
CA5398: Unikaj zakodowanych na stałe wartości SslProtocols Protokół TRANSPORT Layer Security (TLS) zabezpiecza komunikację między komputerami, najczęściej z protokołem Secure (HTTPS) funkcji Hypertext Transfer Protocol. Wersje protokołu TLS 1.0 i TLS 1.1 są przestarzałe, a protokoły TLS 1.2 i TLS 1.3 są aktualne. W przyszłości protokoły TLS 1.2 i TLS 1.3 mogą być przestarzałe. Aby zapewnić bezpieczeństwo aplikacji, należy unikać trwałego kodowania wersji protokołu.
CA5399: Zdecydowanie wyłącz sprawdzanie listy odwołania certyfikatów HttpClient Odwołany certyfikat nie jest już zaufany. Może to być używane przez osoby atakujące przekazujące złośliwe dane lub kradnące poufne dane w komunikacji HTTPS.
CA5400: Upewnij się, że sprawdzanie listy odwołania certyfikatów HttpClient nie jest wyłączone Odwołany certyfikat nie jest już zaufany. Może to być używane przez osoby atakujące przekazujące złośliwe dane lub kradnące poufne dane w komunikacji HTTPS.
CA5401: Nie używaj polecenia CreateEncryptor z inną niż domyślną IV Szyfrowanie symetryczne powinno zawsze używać nie powtarzalnego wektora inicjalizacji, aby zapobiec atakom słownikowym.
CA5402: Użyj polecenia CreateEncryptor z domyślnym iv Szyfrowanie symetryczne powinno zawsze używać nie powtarzalnego wektora inicjalizacji, aby zapobiec atakom słownikowym.
CA5403: Nie należy kodzie certyfikatu Parametr data lub rawDataX509CertificateX509Certificate2 konstruktora jest zakodowany w kodzie twardym.
CA5404: Nie wyłączaj sprawdzania poprawności tokenu TokenValidationParameters właściwości kontrolujące sprawdzanie poprawności tokenu nie powinny być ustawione na false.
CA5405: Nie zawsze pomijaj walidację tokenu w delegatach Wywołanie zwrotne przypisane do metody AudienceValidator lub LifetimeValidator zawsze zwraca wartość true.