Freigeben über


Sicherheitsregeln

Sicherheitsregeln unterstützen sicherere Bibliotheken und Anwendungen. Diese Regeln tragen dazu bei, Sicherheitsfehler in Ihrem Programm zu verhindern. Wenn Sie eine dieser Regeln deaktivieren, sollten Sie den Grund im Code deutlich kennzeichnen und den benannten Sicherheitsbeauftragten für Ihr Entwicklungsprojekt informieren.

In diesem Abschnitt

Regel Beschreibung
CA2100: Überprüfen von SQL-Abfragen auf Sicherheitsrisiken Eine Methode legt die System.Data.IDbCommand.CommandText-Eigenschaft mithilfe einer Zeichenfolge fest, die aus einem Zeichenfolgenargument an die Methode erstellt wird. Bei dieser Regel wird davon ausgegangen, dass das Zeichenfolgenargument Benutzereingaben enthält. Eine sql-Befehlszeichenfolge, die aus der Benutzereingabe erstellt wurde, ist anfällig für SQL-Einfügungsangriffe.
CA2109: Sichtbare Ereignishandler überprüfen. Es wurde eine öffentliche oder geschützte Ereignisbehandlungsmethode erkannt. Ereignisbehandlungsmethoden sollten nicht offengelegt werden, es sei denn, dies ist unbedingt erforderlich.
CA2119: Methoden versiegeln, die die Bedingungen privater Schnittstellen erfüllen. Ein vererbbarer öffentlicher Typ stellt eine überschreibbare Methodenimplementierung einer internen Schnittstelle (Friend in Visual Basic) bereit. Um einen Verstoß gegen diese Regel zu beheben, verhindern Sie, dass die Methode außerhalb der Assembly überschrieben wird.
CA2153: Verarbeitung von Corrupted State Exceptions verhindern Fehlerstatus-Ausnahmen (Corrupted State Exceptions, CSE) angeben, dass Arbeitsspeicherbeschädigungen in Ihrem Prozess vorhanden sind. Diese abzufangen, anstatt zuzulassen, dass der Prozess abstürzt, kann zu Sicherheitsrisiken führen, wenn ein Angreifer einen Exploit in den beschädigten Speicherbereich setzen kann.
CA2300: Nicht den unsicheren BinaryFormatter zur Deserialisierung verwenden Unsichere Deserialisierer sind anfällig beim Deserialisieren von unzuverlässigen Daten. Ein Angreifer könnte die serialisierten Daten ändern, um unerwartete Typen einzuschließen, um Objekte mit schädlichen Nebenwirkungen einzufügen.
CA2301: BinaryFormatter.Deserialize nicht ohne Festlegung von BinaryFormatter.Binder aufrufen Unsichere Deserialisierungsmechanismen sind anfällig beim Deserialisieren von nicht vertrauenswürdigen Daten. Ein Angreifer könnte die serialisierten Daten ändern, um unerwartete Typen einzuschließen, um Objekte mit schädlichen Nebenwirkungen einzufügen.
CA2302: Stellen Sie sicher, dass BinaryFormatter.Binder festgelegt ist, bevor BinaryFormatter.Deserialize aufgerufen wird. Unsichere Deserialisierer sind beim Deserialisieren unvertrauenswürdiger Daten anfällig. Ein Angreifer könnte die serialisierten Daten ändern, um unerwartete Typen einzuschließen, um Objekte mit schädlichen Nebenwirkungen einzufügen.
CA2305: Unsicheren Deserialisierer nicht verwenden: LosFormatter Unsichere Deserialisierer sind beim Deserialisieren nicht vertrauenswürdiger Daten anfällig. Ein Angreifer könnte die serialisierten Daten ändern, um unerwartete Typen einzuschließen, um Objekte mit schädlichen Nebenwirkungen einzufügen.
CA2310: Unsicheren Deserialisierer nicht verwenden: NetDataContractSerializer Nicht sichere Deserialisierer sind beim Deserialisieren von nicht vertrauenswürdigen Daten anfällig. Ein Angreifer könnte die serialisierten Daten ändern, um unerwartete Typen einzuschließen, um Objekte mit schädlichen Nebenwirkungen einzufügen.
CA2311: Nicht deserialisieren, ohne zuerst NetDataContractSerializer.Binder festzulegen Unsichere Deserialisierer sind beim Deserialisieren nicht vertrauenswürdiger Daten anfällig. Ein Angreifer könnte die serialisierten Daten ändern, um unerwartete Typen einzuschließen, um Objekte mit schädlichen Nebenwirkungen einzufügen.
CA2312: Vor dem Deserialisieren sicherstellen, dass NetDataContractSerializer.Binder festgelegt ist Unsichere Deserialisierer sind beim Deserialisieren nicht vertrauenswürdiger Daten anfällig. Ein Angreifer könnte die serialisierten Daten ändern, um unerwartete Typen einzuschließen, um Objekte mit schädlichen Nebenwirkungen einzufügen.
CA2315: Unsicheren Deserialisierer nicht verwenden: ObjectStateFormatter Unsichere Deserialisierer sind anfällig, wenn unvertrauenswürdige Daten deserialisiert werden. Ein Angreifer könnte die serialisierten Daten ändern, um unerwartete Typen einzuschließen, um Objekte mit schädlichen Nebenwirkungen einzufügen.
CA2321: Nicht mit JavaScriptSerializer und SimpleTypeResolver deserialisieren Unsichere Deserialisierer sind anfällig, wenn unvertrauenswürdige Daten deserialisiert werden. Ein Angreifer könnte die serialisierten Daten ändern, um unerwartete Typen einzuschließen, um Objekte mit schädlichen Nebenwirkungen einzufügen.
CA2322: Stellen Sie sicher, dass JavaScriptSerializer nicht mit SimpleTypeResolver initialisiert wird, bevor das Deserialisieren durchgeführt wird Unsichere Deserialisierer sind anfällig, wenn sie nicht vertrauenswürdige Daten deserialisieren. Ein Angreifer könnte die serialisierten Daten ändern, um unerwartete Typen einzuschließen, um Objekte mit schädlichen Nebenwirkungen einzufügen.
CA2326: Verwenden Sie keine "TypeNameHandling"-Werte außer "None" Unsichere Deserialisierer sind anfällig beim Deserialisieren von nicht vertrauenswürdigen Daten. Ein Angreifer könnte die serialisierten Daten ändern, um unerwartete Typen einzuschließen, um Objekte mit schädlichen Nebenwirkungen einzufügen.
CA2327: Verwenden Sie keine unsicheren JsonSerializerSettings Unsichere Deserialisierer sind anfällig, wenn unvertrauenswürdige Daten deserialisiert werden. Ein Angreifer könnte die serialisierten Daten ändern, um unerwartete Typen einzuschließen, um Objekte mit schädlichen Nebenwirkungen einzufügen.
CA2328: Stellen Sie sicher, dass die JsonSerializerSettings sicher sind Unsichere Deserialisierer sind beim Deserialisieren nicht vertrauenswürdiger Daten anfällig. Ein Angreifer könnte die serialisierten Daten ändern, um unerwartete Typen einzuschließen, um Objekte mit schädlichen Nebenwirkungen einzufügen.
CA2329: Nicht mit JsonSerializer mit unsicherer Konfiguration deserialisieren Unsichere Deserialisierer sind anfällig, wenn vertrauensunwürdige Daten deserialisiert werden. Ein Angreifer könnte die serialisierten Daten ändern, um unerwartete Typen einzuschließen, um Objekte mit schädlichen Nebenwirkungen einzufügen.
CA2330: Stellen Sie sicher, dass JsonSerializer eine sichere Konfiguration hat, wenn er deserialisiert. Unsichere Deserialisierungskomponenten sind anfällig, wenn unvertrauenswürdige Daten deserialisiert werden. Ein Angreifer könnte die serialisierten Daten ändern, um unerwartete Typen einzuschließen, um Objekte mit schädlichen Nebenwirkungen einzufügen.
CA2350: Stellen Sie sicher, dass die Eingabe von DataTable.ReadXml() vertrauenswürdig ist Beim Deserialisieren einer DataTable mit nicht vertrauenswürdigen Eingaben kann ein Angreifer böswillige Eingaben erstellen, um einen Denial-of-Service-Angriff auszuführen. Möglicherweise gibt es unbekannte Sicherheitsrisiken für die Remotecodeausführung.
CA2351: Stellen Sie sicher, dass die Eingabe von DataSet.ReadXml() vertrauenswürdig ist Beim Deserialisieren einer DataSet mit nicht vertrauenswürdigen Eingaben kann ein Angreifer böswillige Eingaben erstellen, um einen Denial-of-Service-Angriff auszuführen. Möglicherweise gibt es unbekannte Sicherheitsrisiken für die Remotecodeausführung.
CA2352: Ein unsicheres DataSet oder eine unsichere DataTable in einem serialisierbaren Typ können anfällig sein für Remote-Code-Ausführungsangriffe Eine mit SerializableAttribute gekennzeichnete Klasse oder Struktur enthält ein DataSet oder DataTable Feld oder Eigenschaft und weist keine GeneratedCodeAttributeauf.
CA2353: Unsicheres DataSet oder unsichere DataTable in serialisierbarem Typ Eine Klasse oder Struktur, die mit einem XML-Serialisierungsattribut oder einem Datenvertragsattribut gekennzeichnet ist, enthält ein DataSet oder DataTable Feld oder Eigenschaft.
CA2354: Unsichere DataSet- oder DataTable-Elemente in einem deserialisierten Objektgraph können anfällig für Angriffe durch Remotecodeausführung sein Die Deserialisierung erfolgt mit einem serialisierten System.Runtime.Serialization.IFormatter und der Objektgraph des umgewandelten Typs kann ein DataSet oder eine DataTable enthalten.
CA2355: Unsichere DataSet- oder DataTable-Elemente in einem deserialisierten Objektgraph Die Deserialisierung erfolgt, wenn der Objektgraph des umgewandelten oder angegebenen Typs ein DataSet oder eine DataTable enthalten kann.
CA2356: Unsicheres DataSet oder unsichere DataTable in einem webdeserialisierten Objektgraph Eine Methode mit einem System.Web.Services.WebMethodAttribute oder System.ServiceModel.OperationContractAttribute verfügt über einen Parameter, der auf eine DataSet oder DataTableverweisen kann.
CA2361: Stellen Sie sicher, dass die automatisch generierte Klasse, die DataSet.ReadXml() enthält, nicht mit nicht vertrauenswürdigen Daten verwendet wird. Beim Deserialisieren einer DataSet mit nicht vertrauenswürdigen Eingaben kann ein Angreifer böswillige Eingaben erstellen, um einen Denial-of-Service-Angriff auszuführen. Möglicherweise gibt es unbekannte Sicherheitsrisiken für die Remotecodeausführung.
CA2362: Ein unsicheres DataSet- oder DataTable-Element in einem automatisch generierten, serialisierbaren Typ kann für Angriffe durch Remotecodeausführung anfällig sein. Wenn nicht vertrauenswürdige Eingaben mit BinaryFormatter deserialisiert werden und das deserialisierte Objektdiagramm ein DataSet oder DataTableenthält, kann ein Angreifer eine schädliche Nutzlast erstellen, die einen Remotecodeausführungsangriff ermöglicht.
CA3001: Code auf SQL-Injection-Schwachstellen überprüfen Achten Sie beim Arbeiten mit nicht vertrauenswürdigen Eingabe- und SQL-Befehlen auf SQL-Einfügungsangriffe. Ein SQL-Einfügungsangriff kann schädliche SQL-Befehle ausführen und die Sicherheit und Integrität Ihrer Anwendung beeinträchtigen.
CA3002: Überprüfen von Code für XSS-Sicherheitsrisiken Achten Sie bei der Arbeit mit nicht vertrauenswürdigen Eingaben von Webanforderungen auf Websiteübergreifende Skriptingangriffe (XSS). Ein XSS-Angriff fügt nicht vertrauenswürdige Eingaben in die Roh-HTML-Ausgabe ein, sodass der Angreifer schädliche Skripts ausführen oder Inhalte in Ihrer Webseite böswillig ändern kann.
CA3003: Review code for file path injection vulnerabilities (Überprüfen von Code auf Sicherheitsrisiken durch Einschleusungen über einen Dateipfad) Achten Sie beim Arbeiten mit nicht vertrauenswürdigen Eingaben von Webanforderungen darauf, beim Angeben von Pfaden zu Dateien benutzergesteuerte Eingaben zu verwenden.
CA3004: Code auf Sicherheitsrisiken in Bezug auf Informationsweitergabe überprüfen Durch die Offenlegung von Ausnahmeinformationen erhalten Angreifer Einblicke in die Internen Ihrer Anwendung, die Angreifern dabei helfen können, andere Sicherheitsrisiken auszunutzen.
CA3006: Überprüfung des Codes auf Schwachstellen bei der Prozessbefehlseinschleusung Achten Sie bei der Arbeit mit nicht vertrauenswürdigen Eingaben auf Befehleinjektionsangriffe. Ein Befehlseinfügungsangriff kann böswillige Befehle auf dem zugrunde liegenden Betriebssystem ausführen und die Sicherheit und Integrität Ihres Servers beeinträchtigen.
CA3007: Überprüfen des Codes auf offene Weiterleitungsanfälligkeiten Achten Sie beim Arbeiten mit nicht vertrauenswürdigen Eingaben auf offene Umleitungsrisiken. Ein Angreifer kann eine offene Umleitungsanfälligkeit ausnutzen, um Ihre Website zu verwenden, um den Anschein einer legitimen URL zu erwecken, um einen ahnungslosen Besucher zu einer Phishing- oder einer anderen schädlichen Webseite umzuleiten.
CA3008: Überprüfung des Codes auf XPath-Injektionsanfälligkeiten Achten Sie beim Arbeiten mit nicht vertrauenswürdigen Eingaben auf XPath-Einfügungsangriffe. Durch das Erstellen von XPath-Abfragen mit nicht vertrauenswürdiger Eingabe kann ein Angreifer die Abfrage böswillig bearbeiten, um ein unbeabsichtigtes Ergebnis zurückzugeben und möglicherweise den Inhalt des abgefragten XML-Codes offenzulegen.
CA3009: Den Code auf XML-Injektionsschwachstellen überprüfen Achten Sie beim Arbeiten mit nicht vertrauenswürdigen Eingaben auf XML-Einfügungsangriffe.
CA3010: Überprüfung des Codes auf XAML-Einfügungsverwundbarkeiten Achten Sie beim Arbeiten mit nicht vertrauenswürdigen Eingaben auf XAML-Einfügungsangriffe. XAML ist eine Markupsprache, die die Objektinstanziierung und -ausführung direkt darstellt. Dies bedeutet, dass elemente, die in XAML erstellt wurden, mit Systemressourcen interagieren können (z. B. Netzwerkzugriff und Dateisystem-E/A).
CA3011: Code auf DLL-Injektionsanfälligkeiten überprüfen Achten Sie beim Arbeiten mit nicht vertrauenswürdigen Eingaben darauf, nicht vertrauenswürdigen Code zu laden. Wenn Ihre Webanwendung nicht vertrauenswürdigen Code lädt, kann ein Angreifer bösartige DLLs in Ihren Prozess einfügen und bösartigen Code ausführen.
CA3012: Code auf Regex-Injektion-Sicherheitsrisiken überprüfen Beachten Sie beim Arbeiten mit nicht vertrauenswürdigen Eingaben, dass Angriffe durch RegEx-Einschleusung berücksichtigt werden. Ein Angreifer kann eine Regex-Injektion verwenden, um einen regulären Ausdruck böswillig zu ändern, sodass die Regex unbeabsichtigte Ergebnisse liefert oder übermäßige CPU-Ressourcen verbraucht, was zu einem Denial-of-Service-Angriff führen kann.
CA3061: Fügen Sie kein Schema nach URL hinzu. Verwenden Sie keine unsichere Überladung der Add-Methode, da diese gefährliche externe Verweise verursachen kann.
CA3075: Unsichere DTD-Verarbeitung Wenn Sie unsichere DTDProcessing-Instanzen verwenden oder auf externe Entitätsquellen verweisen, akzeptiert der Parser möglicherweise nicht vertrauenswürdige Eingaben und offenlegt vertrauliche Informationen an Angreifer.
CA3076: Unsichere XSLT-Skriptausführung Wenn Sie extensible StyleSheet Language Transformations (XSLT) in .NET-Anwendungen unsicher ausführen, löst der Prozessor möglicherweise nicht vertrauenswürdige URI-Verweise auf, die vertrauliche Informationen für Angreifer offenlegen könnten, was zu Denial-of-Service- und websiteübergreifenden Angriffen führt.
CA3077: Unsichere Verarbeitung im API-Design, XML-Dokument und XML-Textleser Achten Sie beim Entwerfen einer von XMLDocument und XMLTextReader abgeleiteten API auf DtdProcessing. Die Verwendung unsicherer DTDProcessing-Instanzen beim Verweisen oder Auflösen externer Entitätsquellen oder das Festlegen unsicherer Werte im XML-Code kann zu einer Offenlegung von Informationen führen.
CA3147: Verbhandler mit ValidateAntiForgeryToken markieren. Achten Sie beim Entwerfen eines ASP.NET MVC-Controllers auf websiteübergreifende Anforderungsverfälschungsangriffe. Ein websiteübergreifender Anforderungsfälschungsangriff kann böswillige Anforderungen von einem authentifizierten Benutzer an Ihren ASP.NET MVC-Controller senden.
CA5350: Verwenden Sie keine schwachen kryptografischen Algorithmen Schwache Verschlüsselungsalgorithmen und Hashfunktionen werden heute aus verschiedenen Gründen verwendet, sollten jedoch nicht verwendet werden, um die Vertraulichkeit oder Integrität der zu schützenden Daten zu gewährleisten. Diese Regel wird ausgelöst, wenn sie TripleDES-, SHA1- oder RIPEMD160-Algorithmen im Code findet.
CA5351: Verwenden Sie keine fehlerhaften kryptografischen Algorithmen Fehlerhafte Kryptografiealgorithmen gelten nicht als sicher, und deren Verwendung sollte dringend abgeraten werden. Diese Regel wird ausgelöst, wenn der MD5-Hashalgorithmus oder der DES- oder RC2-Verschlüsselungsalgorithmen im Code gefunden wird.
CA5358: Nicht unsichere Verschlüsselungsmodi verwenden Unsichere Verschlüsselungsmodi nicht verwenden
CA5359: Zertifikatüberprüfung nicht deaktivieren Ein Zertifikat kann dabei helfen, die Identität des Servers zu authentifizieren. Clients sollten das Serverzertifikat überprüfen, um sicherzustellen, dass Anforderungen an den vorgesehenen Server gesendet werden. Wenn der ServerCertificateValidationCallback immer truezurückgibt, wird jedes Zertifikat überprüft.
CA5360: Keine gefährlichen Methoden bei der Deserialisierung aufrufen. Unsichere Deserialisierung ist eine Sicherheitsanfälligkeit, die auftritt, wenn nicht vertrauenswürdige Daten verwendet werden, um die Logik einer Anwendung zu missbrauchen, einen Denial-of-Service -Angriff (DoS) zu verursachen oder sogar beliebigen Code auszuführen, wenn sie deserialisiert wird. Es ist häufig möglich, dass böswillige Benutzer diese Deserialisierungsfeatures missbrauchen, wenn die Anwendung nicht vertrauenswürdige Daten deserialisiert, die unter ihrer Kontrolle sind. Hierbei geht es im Besonderen um das Aufrufen gefährlicher Methoden im Prozess der Deserialisierung. Erfolgreiche unsichere Deserialisierungsangriffe könnten es einem Angreifer ermöglichen, Angriffe wie DoS-Angriffe, Authentifizierungsumgehungen und Remotecodeausführung durchzuführen.
CA5361: Verwendung der starken Kryptografie durch Schannel nicht deaktivieren Das Festlegen Switch.System.Net.DontEnableSchUseStrongCrypto auf true schwächt die Kryptografie, die in ausgehenden Transport Layer Security (TLS)-Verbindungen verwendet wird. Schwächere Kryptografie kann die Vertraulichkeit der Kommunikation zwischen Ihrer Anwendung und dem Server beeinträchtigen und Angreifern das Abhören vertraulicher Daten erleichtern.
CA5362: Potenzieller Verweiszyklus in deserialisiertem Objektgraph Beim Deserialisieren nicht vertrauenswürdiger Daten muss jeder Code, der den deserialisierten Objektgraph verarbeitet, Verweiszyklen verarbeiten, ohne in eine Endlosschleife zu geraten. Dies umfasst sowohl Code, der Teil eines Deserialisierungsrückrufs ist, als auch Code, der das Objektdiagramm nach Abschluss der Deserialisierung verarbeitet. Andernfalls könnte ein Angreifer einen Denial-of-Service-Angriff mit schädlichen Daten ausführen, die einen Referenzzyklus enthalten.
CA5363: Deaktivieren Sie die Anforderungsüberprüfung nicht. Die Anforderungsüberprüfung ist ein Feature in ASP.NET, das HTTP-Anforderungen untersucht und bestimmt, ob sie potenziell gefährliche Inhalte enthalten, die zu Einfügungsangriffen führen können, einschließlich websiteübergreifender Skripting.
CA5364: Verwenden Sie keine veralteten Sicherheitsprotokolle Transport Layer Security (TLS) sichert die Kommunikation zwischen Computern, am häufigsten mit Hypertext Transfer Protocol Secure (HTTPS). Ältere Protokollversionen von TLS sind weniger sicher als TLS 1.2 und TLS 1.3 und sind wahrscheinlicher, dass neue Sicherheitsrisiken vorliegen. Vermeiden Sie ältere Protokollversionen, um risiken zu minimieren.
CA5365: HTTP-Headerüberprüfung nicht deaktivieren Die HTTP-Headerüberprüfung ermöglicht die Codierung der Wagenrücklauf- und Zeilenvorschubzeichen „\r“ bzw. „\n“, die sich in Antwortheadern finden. Diese Codierung kann dazu beitragen, Einfügungsangriffe zu vermeiden, die eine Anwendung ausnutzen, die nicht vertrauenswürdige Daten im Header wiedergibt.
CA5366: XmlReader zum Lesen von DataSet-XML verwenden Die Verwendung eines DataSet zum Lesen von XML mit nicht vertrauenswürdigen Daten kann gefährliche externe Verweise laden, die mithilfe einer XmlReader mit einem sicheren Resolver oder mit deaktivierter DTD-Verarbeitung eingeschränkt werden sollten.
CA5367: Typen mit Zeigerfeldern dürfen nicht serialisiert werden. Diese Regel überprüft, ob eine serialisierbare Klasse mit einem Zeigerfeld oder einer Eigenschaft vorhanden ist. Elemente, die nicht serialisiert werden können, können ein Zeiger sein, z. B. statische Elemente oder Felder, die mit NonSerializedAttributegekennzeichnet sind.
CA5368: Festlegen von ViewStateUserKey für von der Seite abgeleitete Klassen Das Festlegen der ViewStateUserKey-Eigenschaft kann Ihnen helfen, Angriffe auf Ihre Anwendung zu verhindern, indem Sie der Ansichtszustandsvariablen für einzelne Benutzer einen Bezeichner zuweisen, sodass Angreifer die Variable nicht zum Generieren eines Angriffs verwenden können. Andernfalls gibt es Sicherheitsrisiken für websiteübergreifende Anforderungsverfälschungen.
CA5369: Verwenden Sie XmlReader zur Deserialisierung. Die Verarbeitung nicht vertrauenswürdiger DTD- und XML-Schemas kann das Laden gefährlicher externer Verweise ermöglichen, die durch Verwendung eines XmlReader mit einem sicheren Resolver oder mit DEAKTIVIERTer DTD- und XML-Inlineschemaverarbeitung eingeschränkt werden sollten.
CA5370: Verwenden von XmlReader zum Validieren des Readers Die Verarbeitung nicht vertrauenswürdiger DTD- und XML-Schemas kann das Laden gefährlicher externer Verweise ermöglichen. Dieses gefährliche Laden kann mit einem XmlReader mit einem sicheren Resolver oder mit deaktivierter DTD- und XML-Inlineschemaverarbeitung eingeschränkt werden.
CA5371: Verwenden Sie XmlReader für Schemalesevorgänge. Die Verarbeitung nicht vertrauenswürdiger DTD- und XML-Schemas kann das Laden gefährlicher externer Verweise ermöglichen. Wenn Sie einen XmlReader mit einem sicheren Resolver oder mit deaktivierter DTD- und XML-Inlineschemaverarbeitung verwenden, wird der Zugriff eingeschränkt.
CA5372: Verwenden von XmlReader für XPathDocument Die Verarbeitung von XML aus nicht vertrauenswürdigen Daten kann gefährliche externe Verweise laden, die mithilfe eines XmlReader mit einem sicheren Resolver oder mit deaktivierter DTD-Verarbeitung eingeschränkt werden können.
CA5373: Verwenden Sie keine veraltete Schlüsselableitungsfunktion Diese Regel erkennt den Aufruf schwacher Schlüsselableitungsmethoden System.Security.Cryptography.PasswordDeriveBytes und Rfc2898DeriveBytes.CryptDeriveKey. System.Security.Cryptography.PasswordDeriveBytes hat einen schwachen Algorithmus PBKDF1 verwendet.
CA5374: XslTransform- nicht verwenden Diese Regel überprüft, ob System.Xml.Xsl.XslTransform im Code instanziiert wird. System.Xml.Xsl.XslTransform ist jetzt veraltet und sollte nicht verwendet werden.
CA5375: Shared Access Signature des Kontos nicht verwenden. Eine Konto-SAS kann den Zugriff auf Lese-, Schreib- und Löschvorgänge in Blobcontainern, Tabellen, Warteschlangen und Dateifreigaben delegieren, die mit einer Dienst-SAS nicht zulässig sind. Sie unterstützt jedoch keine Richtlinien auf Containerebene und hat weniger Flexibilität und Kontrolle über die gewährten Berechtigungen. Sobald böswillige Benutzer dies erhalten, wird Ihr Speicherkonto leicht kompromittiert.
CA5376: Verwenden Sie SharedAccessProtocol HttpsOnly SAS sind vertrauliche Daten, die nicht im Klartext über HTTP transportiert werden können.
CA5377: Verwenden der Zugriffsrichtlinie auf Containerebene Eine Zugriffsrichtlinie auf Containerebene kann jederzeit geändert oder widerrufen werden. Sie bietet mehr Flexibilität und Kontrolle über die gewährten Berechtigungen.
CA5378: Deaktivieren Sie ServicePointManagerSecurityProtocols nicht. Durch das Festlegen von DisableUsingServicePointManagerSecurityProtocols auf true werden die Transport Layer Security (TLS)-Verbindungen des Windows Communication Foundation (WCF) auf die Verwendung von TLS 1.0 beschränkt. Diese Version von TLS wird veraltet sein.
CA5379: Stellen Sie sicher, dass der Schlüsselableitungsfunktionsalgorithmus ausreichend stark ist Die Rfc2898DeriveBytes Klasse verwendet standardmäßig den SHA1 Algorithmus. Sie sollten den Hashalgorithmus angeben, der bei einigen Überladungen des Konstruktors mit SHA256 oder höher verwendet werden soll. Beachten Sie, dass die HashAlgorithm-Eigenschaft nur über eine get-Zugriffsmethode verfügt und keinen overridden-Modifikator hat.
CA5380: Zertifikate nicht zum Stammspeicher hinzufügen Diese Regel erkennt Code, der dem Zertifikatspeicher für vertrauenswürdige Stammzertifizierungsstellen ein Zertifikat hinzufügt. Standardmäßig ist der Zertifikatspeicher für vertrauenswürdige Stammzertifizierungsstellen mit einer Reihe öffentlicher Zertifizierungsstellen konfiguriert, die die Anforderungen des Microsoft-Stammzertifikatprogramms erfüllt haben.
CA5381: Stellen Sie sicher, dass Zertifikate nicht zum Stammspeicher hinzugefügt werden Diese Regel erkennt Code, der dem Zertifikatspeicher für vertrauenswürdige Stammzertifizierungsstellen potenziell ein Zertifikat hinzufügt. Standardmäßig ist der Zertifikatspeicher für vertrauenswürdige Stammzertifizierungsstellen mit einer Reihe von öffentlichen Zertifizierungsstellen (CAs) konfiguriert, die die Anforderungen des Microsoft-Stammzertifikatprogramms erfüllt haben.
CA5382: Sichere Cookies in ASP.NET Core verwenden Anwendungen, die über HTTPS verfügbar sind, müssen sichere Cookies verwenden, die für den Browser angeben, dass das Cookie nur mit Transport Layer Security (TLS) übertragen werden soll.
CA5383: Stellen Sie sicher, dass Sie sichere Cookies in ASP.NET Core verwenden Anwendungen, die über HTTPS verfügbar sind, müssen sichere Cookies verwenden, die für den Browser angeben, dass das Cookie nur mit Transport Layer Security (TLS) übertragen werden soll.
CA5384: Digitalen Signaturalgorithmus (DSA) nicht verwenden DSA ist ein schwacher asymmetrischer Verschlüsselungsalgorithmus.
CA5385: Verwenden Sie den RSA-Algorithmus (Rivest–Shamir–Adleman) mit ausreichender Schlüsselgröße Ein RSA-Schlüssel kleiner als 2048 Bits ist anfälliger für Brute-Force-Angriffe.
CA5386: Vermeiden Sie die Hartcodierung des SecurityProtocolType-Werts. Transport Layer Security (TLS) sichert die Kommunikation zwischen Computern, am häufigsten mit Hypertext Transfer Protocol Secure (HTTPS). Die Protokollversionen TLS 1.0 und TLS 1.1 sind veraltet, während TLS 1.2 und TLS 1.3 aktuell sind. In Zukunft ist TLS 1.2 und TLS 1.3 möglicherweise veraltet. Um sicherzustellen, dass Ihre Anwendung sicher bleibt, vermeiden Sie es, eine Protokollversion fest zu kodieren, und zielen Sie auf mindestens das .NET Framework v4.7.1 ab.
CA5387: Verwenden Sie keine schwache Schlüsselableitungsfunktion mit unzureichender Iterationsanzahl Diese Regel überprüft, ob ein kryptografischer Schlüssel von Rfc2898DeriveBytes mit einer Iterationsanzahl von weniger als 100.000 generiert wurde. Eine höhere Iterationsanzahl kann bei Wörterbuchangriffen helfen, die versuchen, den generierten kryptografischen Schlüssel zu erraten.
CA5388: Sicherstellen einer ausreichenden Iterationsanzahl bei Verwendung einer schwachen Schlüsselableitungsfunktion Diese Regel überprüft, ob ein kryptografischer Schlüssel von Rfc2898DeriveBytes mit einer Iterationsanzahl generiert wurde, die unter 100.000 liegt. Eine höhere Iterationsanzahl kann bei Wörterbuchangriffen helfen, die versuchen, den generierten kryptografischen Schlüssel zu erraten.
CA5389: Fügen Sie den Pfad des Archivelements nicht zum Pfad des Zieldateisystems hinzu. Der Dateipfad kann relativ sein und kann zum Dateisystemzugriff außerhalb des erwarteten Dateisystemzielpfads führen, was zu böswilligen Konfigurationsänderungen und zur Remotecodeausführung über die Lay-and-Wait-Technik führt.
CA5390: Verwenden Sie keinen hartcodierten Verschlüsselungsschlüssel Damit ein symmetrischer Algorithmus erfolgreich ist, muss der geheime Schlüssel nur für den Absender und den Empfänger bekannt sein. Wenn ein Schlüssel hartcodiert ist, wird er leicht erkannt. Selbst bei kompilierten Binärdateien ist es für böswillige Benutzer einfach, sie zu extrahieren. Sobald der private Schlüssel kompromittiert ist, kann der Chiffretext direkt entschlüsselt und nicht mehr geschützt werden.
CA5391: Verwenden von Antiforgery-Token in ASP.NET Core MVC-Controllern Die Behandlung einer POST-, PUT-, PATCH- oder DELETE-Anfrage, ohne das Antiforgery-Token zu validieren, kann anfällig für Cross-Site-Request-Forgery-Angriffe sein. Ein websiteübergreifender Anforderungsfälschungsangriff kann böswillige Anforderungen von einem authentifizierten Benutzer an Ihren ASP.NET Core MVC-Controller senden.
CA5392: DefaultDllImportSearchPaths-Attribut für P/Invokes verwenden. Standardmäßig testen P/Invoke-Funktionen mit DllImportAttribute eine Reihe von Verzeichnissen, einschließlich des aktuellen Arbeitsverzeichnisses für die zu ladende Bibliothek. Dies kann ein Sicherheitsproblem für bestimmte Anwendungen sein, was zu DLL-Entführung führen kann.
CA5393: Verwenden Sie keinen unsicheren Wert für den DllImportSearchPath Es könnte eine schädliche DLL in den Standard-DLL-Suchverzeichnissen und Assemblyverzeichnissen geben. Oder je nachdem, von wo ihre Anwendung ausgeführt wird, könnte eine schädliche DLL im Verzeichnis der Anwendung vorhanden sein.
CA5394: Verwenden Sie keine unsichere Zufälligkeit Die Verwendung eines kryptografisch schwachen Pseudo-Zufallszahlengenerators kann es einem Angreifer ermöglichen, vorherzusagen, welcher sicherheitsrelevante Wert generiert wird.
CA5395: Fehlendes HttpVerb-Attribut für Aktionsmethoden Alle Aktionsmethoden, mit denen Daten erstellt, bearbeitet, gelöscht oder anderweitig geändert werden, müssen mit dem Antiforgery-Attribut vor websiteübergreifenden Fälschungsangriffen geschützt werden. Das Ausführen eines GET-Vorgangs sollte ein sicherer Vorgang sein, der keine Nebenwirkungen aufweist und die gespeicherten Daten nicht ändert.
CA5396: Festlegen von "HttpOnly" auf "true" für HttpCookie Um eine mehrschichtige Verteidigung zu gewährleisten, sollten sicherheitsrelevante HTTP-Cookies als "HttpOnly" gekennzeichnet sein. Dies weist darauf hin, dass Webbrowser Scriptzugriffe auf Cookies nicht zulassen sollten. Injizierte bösartige Skripts sind eine häufige Möglichkeit, Cookies zu stehlen.
CA5397: Verwenden Sie keine veralteten SslProtocols-Werte Transport Layer Security (TLS) sichert die Kommunikation zwischen Computern, am häufigsten mit Hypertext Transfer Protocol Secure (HTTPS). Ältere Protokollversionen von TLS sind weniger sicher als TLS 1.2 und TLS 1.3 und sind wahrscheinlicher, dass neue Sicherheitsrisiken vorliegen. Vermeiden Sie ältere Protokollversionen, um risiken zu minimieren.
CA5398: Vermeiden Sie hartcodierte SslProtocols-Werte Transport Layer Security (TLS) sichert die Kommunikation zwischen Computern, am häufigsten mit Hypertext Transfer Protocol Secure (HTTPS). Die Protokollversionen TLS 1.0 und TLS 1.1 sind veraltet, während TLS 1.2 und TLS 1.3 aktuell sind. In Zukunft ist TLS 1.2 und TLS 1.3 möglicherweise veraltet. Um sicherzustellen, dass Ihre Anwendung sicher bleibt, vermeiden Sie die Hardcodierung einer Protokollversion.
CA5399: Deaktivieren Sie unbedingt die Überprüfung der HttpClient-Zertifikatsperrliste Ein widerrufenes Zertifikat ist nicht mehr vertrauenswürdig. Es könnte von Angreifern verwendet werden, die böswillige Daten übergeben oder vertrauliche Daten in der HTTPS-Kommunikation stehlen.
CA5400: Sicherstellen, dass die Überprüfung der HttpClient-Zertifikatsperrliste nicht deaktiviert ist Ein widerrufenes Zertifikat ist nicht mehr vertrauenswürdig. Es könnte von Angreifern verwendet werden, die böswillige Daten übergeben oder vertrauliche Daten in der HTTPS-Kommunikation stehlen.
CA5401: CreateEncryptor nicht mit Nicht-Standard-Initialisierungsvektoren verwenden Symmetrische Verschlüsselung sollte immer einen nicht wiederholbaren Initialisierungsvektor verwenden, um Wörterbuchangriffe zu verhindern.
CA5402: CreateEncryptor mit Standard-Initialisierungsvektoren verwenden Symmetrische Verschlüsselung sollte immer einen nicht wiederholbaren Initialisierungsvektor verwenden, um Wörterbuchangriffe zu verhindern.
CA5403: Keine Hartcodierung von Zertifikaten Der parameter data oder rawData eines X509Certificate oder X509Certificate2 Konstruktors ist hartcodiert.
CA5404: Tokenüberprüfungen nicht deaktivieren TokenValidationParameters Eigenschaften, die die Tokenüberprüfung steuern, sollten nicht auf falsefestgelegt werden.
CA5405: Tokenvalidierung in Delegaten nicht immer überspringen Der AudienceValidator oder LifetimeValidator zugewiesene Rückruf gibt immer true zurück.