Reguły zabezpieczeń
Reguły zabezpieczeń wspierają 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 tej sekcji
Reguła | Opis |
---|---|
CA2100: Przejrzyj zapytania SQL pod kątem luk w zabezpieczeniach | Metoda ustawia właściwość System.Data.IDbCommand.CommandText przy użyciu ciągu utworzonego na podstawie argumentu typu ciąg znaków dla metody. Ta reguła zakłada, że argument ciągu zawiera dane wejściowe użytkownika. Ciąg polecenia SQL utworzony na podstawie danych wejściowych użytkownika jest podatny na ataki polegający na wstrzyknięciu kodu SQL. |
CA2109: Przejrzyj widoczne procedury obsługi zdarzeń | Wykryto publiczną lub chronioną metodę obsługi zdarzeń. Metody obsługi zdarzeń nie powinny być ujawniane, chyba że jest to absolutnie konieczne. |
CA2119: Metody uszczelniania spełniające wymagania interfejsów prywatnych | Dziedziczony typ publiczny zapewnia zastępowalną implementację metody wewnętrznego (Friend in Visual Basic) interfejsu. Aby naprawić naruszenie tej reguły, uniemożliwić zastąpienie metody poza zestawem. |
CA2153: Unikaj zarządzania wyjątkami w uszkodzonym stanie | Wyjątki stanu uszkodzenia (CSE) wskazują, że w Twoim procesie występuje uszkodzenie pamięci. Przechwycenie tych elementów zamiast dopuszczenia do zawieszenia procesu może prowadzić do luk w zabezpieczeniach, jeśli osoba atakująca może umieścić exploit w uszkodzonym regionie pamięci. |
CA2300: Nie używaj niezabezpieczonego deserializatora BinaryFormatter | Niezabezpieczone deserializatory są podatne podczas 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 wcześniejszego ustawienia parametru BinaryFormatter.Binder | Niezabezpieczone deserializatory są podatne podczas 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 podczas deserializowania 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 podczas 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 uprzedniego ustawienia NetDataContractSerializer.Binder | Niezabezpieczone deserializatory są podatne podczas 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: Zadbaj o to, aby element NetDataContractSerializer.Binder został ustawiony przed deserializowaniem | Niezabezpieczone deserializatory są narażone podczas deserializowania 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 podczas 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 przy użyciu klasy JavaScriptSerializer przy użyciu 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: Upewnij się, że JavaScriptSerializer nie został zainicjowany z użyciem SimpleTypeResolver przed deserializacją | Niezabezpieczone deserializatory są podatne podczas 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 niezabezpieczonych ustawień JsonSerializerSettings | 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 ustawienia JsonSerializerSettings są bezpieczne | Niezabezpieczone deserializatory są podatne podczas 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 za pomocą JsonSerializer w niezabezpieczonej konfiguracji | Niezabezpieczone deserializatory są podatne przy deserializowaniu 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 podczas 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 | Podczas deserializacji 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 | Podczas deserializacji 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 SerializableAttribute zawiera DataSet lub DataTable pole lub właściwość i nie ma 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 lub DataTable pole lub właściwość. |
CA2354: Niebezpieczny element DataSet lub DataTable w grafie deserializowanego obiektu może być podatny na ataki zdalnego wykonywania kodu | Deserializowanie za pomocą zserializowanego obiektu System.Runtime.Serialization.IFormatter, a graf obiektu rzutowanego typu może zawierać DataSet lub DataTable. |
CA2355: Niebezpieczny DataSet lub DataTable w deserializowanym grafie obiektu | Deserializowanie, gdy graf obiektu rzutowanego lub określonego typu może zawierać DataSet lub DataTable. |
CA2356: Niebezpieczny element DataSet lub DataTable w internetowym deserializowanym grafie obiektów | Metoda z System.Web.Services.WebMethodAttribute lub System.ServiceModel.OperationContractAttribute ma parametr, który może odwoływać się do DataSet lub DataTable. |
CA2361: Upewnij się, że automatycznie wygenerowana klasa zawierająca klasę DataSet.ReadXml() nie jest używana z niezaufanymi danymi | Podczas deserializacji 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: Niebezpieczne DataSet lub DataTable w automatycznie generowanym typie serializowalnym mogą być narażone na ataki zdalnego wykonania kodu | W przypadku deserializacji niezaufanych danych wejściowych za pomocą BinaryFormatter, a deserializowany graf obiektu zawiera DataSet lub DataTable, osoba atakująca może utworzyć złośliwy ładunek w celu przeprowadzenia ataku na zdalne wykonywanie kodu. |
CA3001: Przegląd kodu pod kątem luk w zabezpieczeniach polegających na wstrzyknięciu kodu SQL | Podczas pracy z niezaufanymi danymi wejściowymi i SQL należy pamiętać o atakach typu SQL injection. 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: Przejrzyj kod pod kątem luk w zabezpieczeniach związanych z wstrzyknięciem ścieżki plików | 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 wstrzyknięcia poleceń procesu systemowego | 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 przekierowań otwartych | Podczas pracy z niezaufanymi danymi wejściowymi należy pamiętać o otwartych lukach w zabezpieczeniach przekierowania. Osoba atakująca może wykorzystać lukę w zabezpieczeniach otwartego przekierowania, aby użyć witryny internetowej do stworzenia wiarygodnego adresu URL, ale jednocześnie przekierować nieświadomego użytkownika do strony wyłudzającej informacje 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 wstrzykiwaniu 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, który bezpośrednio reprezentuje tworzenie i wykonywanie wystąpień obiektów. 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: Przejrzyj kod pod kątem podatności na ataki polegające na wstrzykiwaniu bibliotek 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 do złośliwego zmodyfikowania wyrażenia, co może prowadzić do dopasowania niezamierzonych wyników lub nadmiernego zużycia CPU, skutkującego atakiem 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 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 | Wykonując przekształcenia rozszerzalnego języka arkuszy stylów (XSLT) w aplikacjach .NET w sposób niezabezpieczony, procesor może rozpoznać niezaufane odwołania do URI, co może ujawnić poufne informacje atakującym, prowadząc do ataków typu „odmowa usługi” i „między witrynami”. |
CA3077: Niezabezpieczone przetwarzanie w projekcie interfejsu API, dokumencie XML i czytniku tekstu XML | Podczas projektowania interfejsu API na bazie XMLDocument i XMLTextReader należy zwracać uwagę na przetwarzanie DTD. 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 obsługiwacze czasowników przy użyciu ValidateAntiForgeryToken | Podczas projektowania kontrolera MVC ASP.NET należy pamiętać o atakach fałszerzowania żądań obejmujących wiele lokacji. Atak polegający na fałszowaniu żądań między witrynami może wysyłać złośliwe żądania przez 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 true , każdy certyfikat przejdzie walidację. |
CA5360: Unikaj wywoływania niebezpiecznych metod podczas deserializacji | Niezabezpieczona deserializacja jest luką w zabezpieczeniach, która pojawia się, gdy niezaufane dane są używane do nadużywania logiki aplikacji, spowodowania ataku typu "odmowa usługi" (DoS), a nawet wykonania dowolnego kodu przy 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ślna deserializacja niezabezpieczonych danych może umożliwić atakującemu przeprowadzenie ataków, takich jak ataki DoS, pominięcie uwierzytelniania i zdalne wykonywanie kodu. |
CA5361: Nie wyłączaj używania silnej kryptografii w SChannel | Ustawienie Switch.System.Net.DontEnableSchUseStrongCrypto na true osłabia kryptografię używaną 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 obiektów | Jeśli deserializujemy niezaufane dane, każdy kod przetwarzający graf obiektów będący wynikiem deserializacji musi obsługiwać cykle odwołań, unikając przechodzenia w nieskończone pętle. 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 sprawdzania poprawności żą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ń | Transport Layer Security (TLS) zabezpiecza komunikację między komputerami, najczęściej przy użyciu protokołu Hypertext Transfer Protocol Secure (HTTPS). 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łówków HTTP | Sprawdzanie nagłówka HTTP umożliwia kodowanie znaków powrotu i 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ę przetwarzającą niezaufane dane zawarte w nagłówku. |
CA5366: Użyj XmlReader do wczytania XML w DataSet | Używanie DataSet do odczytywania kodu XML z niezaufanymi danymi może ładować niebezpieczne odwołania zewnętrzne, które powinny być ograniczone przy użyciu XmlReader z bezpiecznym modułem rozpoznawania lub 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 NonSerializedAttribute. |
CA5368: Ustaw właściwość ViewStateUserKey dla klas pochodnych od Page | Ustawienie właściwości ViewStateUserKey może pomóc w zapobieganiu atakom na aplikację, umożliwiając przypisanie identyfikatora do zmiennej wyświetlania stanu 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 XmlReader do deserializowania | 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 XmlReader do walidacji 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 XmlReadera z zabezpieczonym resolverem lub z wyłączonym przetwarzaniem DTD i schematów XML wbudowanych w linii. |
CA5371: należy użyć klasy XmlReader do odczytu schematu | Przetwarzanie niezaufanych schematów DTD i XML może umożliwić ładowanie niebezpiecznych odwołań zewnętrznych. Użycie elementu XmlReader z bezpiecznym resolverem lub z wyłączonym przetwarzaniem DTD i wbudowanego schematu XML ogranicza proces. |
CA5372: Użyj XmlReader dla dokumentu XPathDocument | Przetwarzanie XML z niezaufanych danych może ładować niebezpieczne zewnętrzne odniesienia, które można ograniczyć, używając XmlReader z bezpiecznym modułem analizy lub z wyłączonym przetwarzaniem DTD. |
CA5373: Nie używaj przestarzałej funkcji wyprowadzania kluczy | Reguła ta wykrywa użycie słabych metod wyprowadzania kluczy System.Security.Cryptography.PasswordDeriveBytes i Rfc2898DeriveBytes.CryptDeriveKey . Użyto słabego algorytmu PBKDF1 dla System.Security.Cryptography.PasswordDeriveBytes. |
CA5374: Nie używaj XslTransform | Ta reguła sprawdza, czy System.Xml.Xsl.XslTransform jest zainicjowane w kodzie. System.Xml.Xsl.XslTransform jest teraz przestarzała i nie powinna być używana. |
CA5375: Nie używaj sygnatury dostępu współdzielonego konta | Sygnatura dostępu współdzielonego dla konta może przyznać 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 dla 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 je zdobędą, twoje konto magazynowe będzie łatwo zagrożone. |
CA5376: Użyj protokołu SharedAccessProtocol HttpsOnly | SAS to poufne dane, których nie można transportować w postaci czystego 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 ServicePointManagerSecurityProtocols | Ustawienie DisableUsingServicePointManagerSecurityProtocols na true ogranicza połączenia protokołu TLS (Transport Layer Security) 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 nowszym. Należy pamiętać, że właściwość HashAlgorithm ma tylko akcesor get i nie ma modyfikatora overridden . |
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 głównych zaufanych urzędów certyfikacji jest skonfigurowany z zestawem publicznych CA, które spełniają wymagania Programu Głównych Certyfikatów 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żyj bezpiecznych plików cookie w 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 usłudze 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ącym rozmiarem klucza | Klucz RSA mniejszy niż 2048 bitów jest bardziej podatny na ataki siłowe. |
CA5386: Unikaj kodowania wartości SecurityProtocolType | Protokół Transport Layer Security (TLS) zabezpiecza komunikację między komputerami, najczęściej używany z zabezpieczonym protokołem przesyłania hipertekstu (HTTPS). 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ć twardego kodowania wersji protokołu i celować w co najmniej .NET Framework w wersji 4.7.1. |
CA5387: Nie używaj słabej funkcji wyprowadzania klucza z niewystarczającą liczbą iteracji | Ta reguła sprawdza, czy klucz kryptograficzny został wygenerowany przez Rfc2898DeriveBytes z liczbą iteracji mniejszą 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: Upewnij się, że przy używaniu słabej funkcji wyprowadzania klucza zastosowano wystarczającą liczbę iteracji | Ta reguła sprawdza, czy klucz kryptograficzny został wygenerowany przez Rfc2898DeriveBytes z liczbą 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 koduj na sztywno klucza szyfrowania | 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 złośliwi użytkownicy mogą łatwo je wyodrębnić. Po naruszeniu zabezpieczeń klucza prywatnego tekst szyfrowania można odszyfrować bezpośrednio i nie jest już chroniony. |
CA5391: użyj tokenów antyforgeryjnych w kontrolerach ASP.NET Core MVC | Obsługa żądania POST , PUT , PATCH lub DELETE bez sprawdzania poprawności tokenu chroniącego przed fałszowaniem może być podatna na ataki fałszercze żądań między witrynami. Atak fałszerstwa żądania pomiędzy różnymi witrynami może wysyłać złośliwe żądania przez uwierzytelnionego użytkownika do kontrolera MVC platformy ASP.NET Core. |
CA5392: Użyj atrybutu DefaultDllImportSearchPaths dla P/invokes | Domyślnie funkcje P/Invoke korzystające z DllImportAttribute przeszukują wiele katalogów, w tym bieżący katalog roboczy, aby załadować bibliotekę. 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 plików DLL oraz katalogach plików zestawów może znajdować się złośliwy plik 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 niezabezpieczonych 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: Brak atrybutu HttpVerb dla metod akcji | Wszystkie metody akcji, które tworzą, edytują, usuwają lub w inny sposób modyfikują dane, muszą być chronione za pomocą atrybutu antiforgery przed atakami fałszowania żądań między witrynami. Wykonanie operacji GET powinno być bezpieczną operacją, która nie ma skutków ubocznych i nie modyfikuje utrwalone dane. |
CA5396: Ustawienie wartości HttpOnly na true dla 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 przy użyciu protokołu Hypertext Transfer Protocol Secure (HTTPS). 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) służy do zabezpieczania komunikacji między komputerami, najczęściej z protokołem HTTPS (Hypertext Transfer Protocol Secure). 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ż uważany za godny zaufania. 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 | Certyfikat, który został unieważniony, nie jest już godny zaufania. 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 innym niż domyślny IV | Szyfrowanie symetryczne powinno zawsze używać nie powtarzalnego wektora inicjalizacji, aby zapobiec atakom słownikowym. |
CA5402: Użyj CreateEncryptor z domyślnym IV | Szyfrowanie symetryczne powinno zawsze używać nie powtarzalnego wektora inicjalizacji, aby zapobiec atakom słownikowym. |
CA5403: Nie zakodowuj na stałe certyfikatu | Parametr data lub rawData konstruktora X509Certificate lub X509Certificate2 jest zakodowany w kodzie. |
CA5404: Nie wyłączaj sprawdzania poprawności tokenu |
TokenValidationParameters właściwości, które kontrolują weryfikację tokenu, nie powinny być ustawione na false . |
CA5405: Nie zawsze pomijaj weryfikację tokenu w delegatach | Wywołanie zwrotne przypisane do AudienceValidator lub LifetimeValidator zawsze zwraca true . |
Współpracuj z nami w serwisie GitHub
Źródło tej zawartości można znaleźć w witrynie GitHub, gdzie można również tworzyć i przeglądać problemy i żądania ściągnięcia. Więcej informacji znajdziesz w naszym przewodniku dla współtwórców.