Sicherheitsregeln

Sicherheitsregeln unterstützen sicherere Bibliotheken und Anwendungen. Diese Regeln tragen dazu bei, Sicherheitslücken in Ihrem Programm zu vermeiden. Wenn Sie eine dieser Regeln deaktivieren, sollten Sie den Grund dafür im Code deutlich angeben und außerdem den für Ihr Entwicklungsprojekt zuständigen Sicherheitsbeauftragten informieren.

In diesem Abschnitt

Regel Beschreibung
CA2100: SQL-Abfragen auf Sicherheitsrisiken überprüfen. Eine Methode legt die System.Data.IDbCommand.CommandText-Eigenschaft mithilfe einer Zeichenfolge fest, die aus einem Zeichenfolgenargument für die Methode erstellt wird. Diese Regel setzt voraus, dass das Zeichenfolgenargument Benutzereingaben enthält. Eine aus Benutzereingaben erstellte SQL-Befehlszeichenfolge ist anfällig für SQL-Injection-Angriffe.
CA2109: Sichtbare Ereignishandler überprüfen. Eine öffentliche oder geschützte Ereignisbehandlungsmethode wurde erkannt. Ereignisbehandlungsmethoden sollten nur dann verfügbar gemacht werden, wenn dies absolut notwendig ist.
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: Verhindern, dass Ausnahmen bei Beschädigungen verarbeitet werden. Ausnahmen bei Beschädigungen (Corrupted State Exceptions, CSE) weisen auf eine Speicherbeschädigung innerhalb des Prozesses hin. Diese abzufangen, statt einen Absturz des Prozesses zuzulassen, führt zu Sicherheitsrisiken, falls ein Angreifer einen Exploit in den beschädigten Speicherbereich einschleusen kann.
CA2300: Nicht den unsicheren BinaryFormatter zur Deserialisierung verwenden Unsichere Deserialisierer sind beim Deserialisieren nicht vertrauenswürdiger Daten anfällig. Ein Angreifer könnte den serialisierten Daten unerwartete Datentypen hinzufügen, um Objekte mit schädlichen Auswirkungen einschleusen.
CA2301: BinaryFormatter.Deserialize nicht ohne Festlegung von BinaryFormatter.Binder aufrufen Unsichere Deserialisierer sind beim Deserialisieren nicht vertrauenswürdiger Daten anfällig. Ein Angreifer könnte den serialisierten Daten unerwartete Datentypen hinzufügen, um Objekte mit schädlichen Auswirkungen einschleusen.
CA2302: Festlegung von BinaryFormatter.Binder vor dem Aufruf von BinaryFormatter.Deserialize sicherstellen Unsichere Deserialisierer sind beim Deserialisieren nicht vertrauenswürdiger Daten anfällig. Ein Angreifer könnte den serialisierten Daten unerwartete Datentypen hinzufügen, um Objekte mit schädlichen Auswirkungen einschleusen.
CA2305: Unsicheren Deserialisierer nicht verwenden: LosFormatter Unsichere Deserialisierer sind beim Deserialisieren nicht vertrauenswürdiger Daten anfällig. Ein Angreifer könnte den serialisierten Daten unerwartete Datentypen hinzufügen, um Objekte mit schädlichen Auswirkungen einschleusen.
CA2310: Unsicheren Deserialisierer nicht verwenden: NetDataContractSerializer Unsichere Deserialisierer sind beim Deserialisieren nicht vertrauenswürdiger Daten anfällig. Ein Angreifer könnte den serialisierten Daten unerwartete Datentypen hinzufügen, um Objekte mit schädlichen Auswirkungen einschleusen.
CA2311: Nicht deserialisieren, ohne zuerst NetDataContractSerializer.Binder festzulegen Unsichere Deserialisierer sind beim Deserialisieren nicht vertrauenswürdiger Daten anfällig. Ein Angreifer könnte den serialisierten Daten unerwartete Datentypen hinzufügen, um Objekte mit schädlichen Auswirkungen einschleusen.
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 den serialisierten Daten unerwartete Datentypen hinzufügen, um Objekte mit schädlichen Auswirkungen einschleusen.
CA2315: Unsicheren Deserialisierer nicht verwenden: ObjectStateFormatter Unsichere Deserialisierer sind beim Deserialisieren nicht vertrauenswürdiger Daten anfällig. Ein Angreifer könnte den serialisierten Daten unerwartete Datentypen hinzufügen, um Objekte mit schädlichen Auswirkungen einschleusen.
CA2321: Nicht mit JavaScriptSerializer und SimpleTypeResolver deserialisieren Unsichere Deserialisierer sind beim Deserialisieren nicht vertrauenswürdiger Daten anfällig. Ein Angreifer könnte den serialisierten Daten unerwartete Datentypen hinzufügen, um Objekte mit schädlichen Auswirkungen einschleusen.
CA2322: Vor dem Deserialisieren sicherstellen, dass JavaScriptSerializer nicht mit SimpleTypeResolver initialisiert ist Unsichere Deserialisierer sind beim Deserialisieren nicht vertrauenswürdiger Daten anfällig. Ein Angreifer könnte den serialisierten Daten unerwartete Datentypen hinzufügen, um Objekte mit schädlichen Auswirkungen einschleusen.
CA2326: Keine anderen TypeNameHandling-Werte als None (Keine) verwenden Unsichere Deserialisierer sind beim Deserialisieren nicht vertrauenswürdiger Daten anfällig. Ein Angreifer könnte den serialisierten Daten unerwartete Datentypen hinzufügen, um Objekte mit schädlichen Auswirkungen einschleusen.
CA2327: Keine unsichere JsonSerializerSettings-Klasse verwenden Unsichere Deserialisierer sind beim Deserialisieren nicht vertrauenswürdiger Daten anfällig. Ein Angreifer könnte den serialisierten Daten unerwartete Datentypen hinzufügen, um Objekte mit schädlichen Auswirkungen einschleusen.
CA2328: Sicherstellen, dass JsonSerializerSettings sicher ist Unsichere Deserialisierer sind beim Deserialisieren nicht vertrauenswürdiger Daten anfällig. Ein Angreifer könnte den serialisierten Daten unerwartete Datentypen hinzufügen, um Objekte mit schädlichen Auswirkungen einschleusen.
CA2329: Nicht mit JsonSerializer mit unsicherer Konfiguration deserialisieren Unsichere Deserialisierer sind beim Deserialisieren nicht vertrauenswürdiger Daten anfällig. Ein Angreifer könnte den serialisierten Daten unerwartete Datentypen hinzufügen, um Objekte mit schädlichen Auswirkungen einschleusen.
CA2330: Sicherstellen, dass JsonSerializer eine sichere Konfiguration bei der Deserialisierung verwendet Unsichere Deserialisierer sind beim Deserialisieren nicht vertrauenswürdiger Daten anfällig. Ein Angreifer könnte den serialisierten Daten unerwartete Datentypen hinzufügen, um Objekte mit schädlichen Auswirkungen einschleusen.
CA2350: Sicherstellen, dass die Eingabe von DataTable.ReadXml() vertrauenswürdig ist Beim Deserialisieren einer DataTable mit nicht vertrauenswürdigen Eingaben kann ein Angreifer schädliche Eingaben erstellen, um einen Denial-of-Service-Angriff auszuführen. Möglicherweise liegen unbekannte Sicherheitsrisiken bei der Remotecodeausführung von Code vor.
CA2351: Sicherstellen, dass die Eingabe von DataSet.ReadXml() vertrauenswürdig ist Beim Deserialisieren einer DataSet mit nicht vertrauenswürdigen Eingaben kann ein Angreifer schädliche Eingaben erstellen, um einen Denial-of-Service-Angriff auszuführen. Möglicherweise liegen unbekannte Sicherheitsrisiken bei der Remotecodeausführung von Code vor.
CA2352: Unsichere DataSet- oder DataTable-Elemente in einem serialisierbaren Typ können anfällig für Angriffe durch Remotecodeausführung sein Eine mit SerializableAttribute markierte Klasse oder Struktur enthält ein DataSet- oder DataTable-Feld bzw. eine entsprechende Eigenschaft und weist kein GeneratedCodeAttribute auf.
CA2353: Unsichere DataSet- oder DataTable-Elemente in einem serialisierbaren Typ Eine mit einem XML-Serialisierungsattribut oder einem Datenvertragsattribut markierte Klasse oder Struktur enthält ein DataSet- oder DataTable-Feld bzw. eine entsprechende 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 enthält Parameter, die auf ein DataSet oder eine DataTable verweisen können.
CA2361: Sicherstellen, dass die automatisch generierte Klasse mit DataSet.ReadXml() nicht mit nicht vertrauenswürdigen Daten verwendet wird Beim Deserialisieren einer DataSet mit nicht vertrauenswürdigen Eingaben kann ein Angreifer schädliche Eingaben erstellen, um einen Denial-of-Service-Angriff auszuführen. Möglicherweise liegen unbekannte Sicherheitsrisiken bei der Remotecodeausführung von Code vor.
CA2362: Ein unsicheres DataSet- oder DataTable-Element in einem automatisch generierten, serialisierbaren Typ kann für Angriffe durch Remotecodeausführung anfällig sein Wenn eine nicht vertrauenswürdige Eingabe mit BinaryFormatter deserialisiert wird und der deserialisierte Objektgraph ein DataSet oder eine DataTable enthält, kann ein Angreifer eine schädliche Payload erstellen, um einen Angriff mit Remotecodeausführung zu starten.
CA3001: Review code for SQL injection vulnerabilities (Überprüfen von Code auf Sicherheitsrisiken durch Einschleusung von SQL-Befehlen) Achten Sie beim Arbeiten mit nicht vertrauenswürdigen Eingaben und SQL-Befehlen besonders auf mögliche Angriffe durch Einschleusung von SQL-Befehlen. Ein Angriff durch Einschleusung von SQL-Befehlen kann schädliche SQL-Befehle ausführen und so die Sicherheit und Integrität Ihrer Anwendung gefährden.
CA3002: Review code for XSS vulnerabilities (Überprüfen von Code auf Sicherheitsrisiken durch XSS) Achten Sie beim Arbeiten mit nicht vertrauenswürdigen Eingaben aus Webanforderungen besonders auf mögliche XSS-Angriffe (Cross-Site Scripting). Ein XSS-Angriff schleust nicht vertrauenswürdige Eingaben in die unformatierte HTML-Ausgabe ein, sodass ein Angreifer schädliche Skripts ausführen oder den Inhalt Ihrer Webseite in böswilliger Absicht ändern kann.
CA3003: Review code for file path injection vulnerabilities (Überprüfen von Code auf Sicherheitsrisiken durch Einschleusungen über einen Dateipfad) Seien Sie beim Arbeiten mit nicht vertrauenswürdigen Eingaben aus Webanforderungen besonders vorsichtig, wenn Sie beim Angeben von Pfaden zu Dateien benutzergesteuerte Eingaben verwenden.
CA3004: Review code for information disclosure vulnerabilities (Überprüfen von Code auf Sicherheitsrisiken bei der Veröffentlichung von Informationen) Die Offenlegung von Ausnahmeinformationen bietet Angreifern Einblicke in die Interna Ihrer Anwendung, die diesen Angreifern wiederum bei der Suche nach weiteren Sicherheitslücken helfen können.
CA3006: Review code for process command injection vulnerabilities (Überprüfen von Code auf Sicherheitsrisiken durch Einschleusung von Prozessbefehlen) Achten Sie beim Arbeiten mit nicht vertrauenswürdigen Eingaben besonders auf mögliche Angriffe durch Befehlseinschleusung. Ein Angriff durch Einschleusen von Befehlen kann schädliche Befehle im zugrunde liegenden Betriebssystem ausführen und so die Sicherheit und Integrität des Servers gefährden.
CA3007: Review code for open redirect vulnerabilities (Überprüfen von Code auf Sicherheitsrisiken durch offene Umleitungen) Achten Sie beim Arbeiten mit nicht vertrauenswürdigen Eingaben besonders auf Sicherheitsrisiken durch eine offene Weiterleitung. Ein Angreifer kann das Sicherheitsrisiko einer offenen Weiterleitung ausnutzen, um Ihre Website so zu nutzen, dass sie den Anschein einer legitimen URL erweckt, einen ahnungslosen Besucher jedoch auf eine Phishing- oder anderweitig schädliche Website weiterleitet.
CA3008: Review code for XPath injection vulnerabilities (Überprüfen von Code auf Sicherheitsrisiken durch Einschleusungen von XPath-Befehlen) Achten Sie beim Arbeiten mit nicht vertrauenswürdigen Eingaben besonders auf mögliche Angriffe durch XPath-Einschleusung. Die Erstellung von XPath-Abfragen unter Verwendung nicht vertrauenswürdiger Eingaben kann es einem Angreifer ermöglichen, die Abfrage böswillig zu manipulieren, um ein unbeabsichtigtes Ergebnis zurückzugeben und möglicherweise den Inhalt des abgefragten XML-Codes offenzulegen.
CA3009: Review code for XML injection vulnerabilities (Überprüfen von Code auf Sicherheitsrisiken durch Einschleusungen von XML-Befehlen) Achten Sie beim Arbeiten mit nicht vertrauenswürdigen Eingaben besonders auf mögliche Angriffe durch XML-Einschleusung.
CA3010: Review code for XAML injection vulnerabilities (Überprüfen von Code auf Sicherheitsrisiken durch Einschleusungen von XAML-Befehlen) Achten Sie beim Arbeiten mit nicht vertrauenswürdigen Eingaben besonders auf mögliche Angriffe durch XAML-Einschleusung. XAML ist eine Markupsprache, die Objektinstanziierung und -ausführung direkt darstellt. Das bedeutet, dass in XAML erstellte Elemente mit Systemressourcen interagieren können (z. B. Netzwerkzugriff und Dateisystem-E/A).
CA3011: Review code for DLL injection vulnerabilities (Überprüfen von Code auf Sicherheitsrisiken durch Einschleusungen von DLL) Achten Sie beim Arbeiten mit nicht vertrauenswürdigen Eingaben besonders darauf, dass kein nicht vertrauenswürdiger Code geladen werden kann. Wenn Ihre Webanwendung nicht vertrauenswürdigen Code lädt, kann ein Angreifer möglicherweise schädliche DLLs in Ihren Prozess einschleusen und schädlichen Code ausführen.
CA3012: Review code for regex injection vulnerabilities (Überprüfen von Code auf Sicherheitsrisiken durch Einschleusungen von RegEx) Achten Sie beim Arbeiten mit nicht vertrauenswürdigen Eingaben besonders auf mögliche Angriffe durch RegEx-Einschleusung. Ein Angreifer kann die RegEx-Einschleusung verwenden, um einen regulären Ausdruck böswillig so zu ändern, dass dieser mit unbeabsichtigten Ergebnissen übereinstimmt oder übermäßig viel CPU verbraucht, was zu einem Denial-of-Service-Angriff führt.
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, kann der Parser unter Umständen nicht vertrauenswürdige Eingaben akzeptieren und Angreifern vertrauliche Informationen offenlegen.
CA3076: Unsichere XSLT-Skriptausführung. Wenn Sie Extensible Stylesheet Language Transformations (XSLT) ungesichert in .NET-Anwendungen ausführen, löst der Prozessor möglicherweise nicht vertrauenswürdige URI-Verweise auf, wodurch Angreifern vertrauliche Informationen offengelegt werden könnten, was wiederum zu Denial-of-Service- und Cross-Site-Angriffen führen kann.
CA3077: Unsichere Verarbeitung in API-Design, XML-Dokument und XML-Textreader. Beim Entwerfen einer von XMLDocument und XMLTextReader abgeleiteten API sollten Sie DtdProcessing berücksichtigen. Das Verwenden unsicherer DTDProcessing-Instanzen beim Verweisen auf externe Entitätsquellen bzw. bei deren Auflösung oder das Festlegen unsicherer Werte in XML-Code kann zum Offenlegen von Informationen führen.
CA3147: Verbhandler mit ValidateAntiForgeryToken markieren. Achten Sie beim Entwerfen eines ASP.NET MVC-Controllers besonders auf mögliche Angriffe durch websiteübergreifende Anforderungsfälschung. Mit einem websiteübergreifenden Anforderungsfälschungsangriff können schädliche Anforderungen von einem authentifizierten Benutzer an Ihren ASP.NET MVC-Controller gesendet werden.
CA5350: Keine schwachen Kryptografiealgorithmen verwenden. Unsichere Verschlüsselungsalgorithmen und Hashfunktionen werden heute aus verschiedenen Gründen verwendet, sollten jedoch nicht verwendet werden, um die Vertrauenswürdigkeit oder Integrität der Daten, die sie schützen, zu gewährleisten. Dieser Regel wird ausgelöst, wenn im Code TripleDES-, SHA1- oder RIPEMD160-Algorithmen gefunden werden.
CA5351: Keine beschädigten kryptografischen Algorithmen verwenden Unterbrochene kryptografische Algorithmen werden nicht als sicher betrachtet; ihre Verwendung sollte unbedingt unterbunden werden. Diese Regel wird ausgelöst, wenn der MD5-Hash-Algorithmus oder DES- bzw. RC2-Verschlüsselungsalgorithmen im Code gefunden werden.
CA5358: Verwenden Sie keine unsicheren Verschlüsselungsmodi. Verwenden Sie keine unsicheren Verschlüsselungsmodi.
CA5359: Zertifikatüberprüfung nicht deaktivieren Ein Zertifikat kann die Identität des Servers authentifizieren. Clients sollten das Serverzertifikat überprüfen, um sicherzustellen, dass Anforderungen an den vorgesehenen Server gesendet werden. Wenn der ServerCertificateValidationCallback immer true zurückgibt, besteht jedes Zertifikat die Überprüfung.
CA5360: Keine gefährlichen Methoden bei der Deserialisierung aufrufen. Eine unsichere Deserialisierung ist ein Sicherheitsrisiko, das auftritt, wenn bei der Deserialisierung von Code nicht vertrauenswürdige Daten die Logik einer Anwendung missbrauchen, einen Denial-of-Service-Angriff (DoS-Angriff) verursachen oder sogar beliebigen Code ausführen. Böswillige Benutzer können diese Deserialisierungsfeatures häufig missbrauchen, wenn die Anwendung nicht vertrauenswürdige Daten deserialisiert, die sich unter der Kontrolle der Angreifer befinden. Hierbei geht es im Besonderen um das Aufrufen gefährlicher Methoden im Prozess der Deserialisierung. Ein erfolgreicher Angriff aufgrund unsicherer Deserialisierung kann es dem Angreifer ermöglichen, DoS-Angriffe auszuführen, die Authentifizierung zu umgehen und Remotecode auszuführen.
CA5361: Verwendung der starken Kryptografie durch SChannel nicht deaktivieren Das Festlegen von Switch.System.Net.DontEnableSchUseStrongCrypto auf true schwächt die Kryptografie in ausgehenden TLS-Verbindungen (Transport Layer Security). Eine schwächere Kryptografie kann die Vertraulichkeit der Kommunikation zwischen Ihrer Anwendung und dem Server gefährden und es Angreifern erleichtern, sich Zugang zu vertraulichen Daten zu verschaffen.
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 betrifft sowohl Code, der zu einem Deserialisierungsrückruf gehört, als auch Code, der den Objektgraph nach Abschluss der Deserialisierung verarbeitet. Andernfalls könnte ein Angreifer einen Denial-of-Service-Angriff mit schädlichen Daten durchführen, die einen Verweiszyklus 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 diese potenziell gefährliche Inhalte enthalten, die zu Einschleusungsangriffen wie z. B. Cross-Site Scripting führen können.
CA5364: Verwenden Sie keine veralteten Sicherheitsprotokolle. Transport Layer Security (TLS) sichert die Kommunikation zwischen Computern, meist in Verbindung mit Hypertext Transfer Protocol Secure (HTTPS). Ältere Protokollversionen von TLS sind weniger sicher als TLS 1.2 und TLS 1.3, daher ist es wahrscheinlicher, dass diese Versionen neue Sicherheitsrisiken aufweisen. Vermeiden Sie ältere Protokollversionen, um das Risiko zu minimieren.
CA5365: Überprüfung von HTTP-Headern nicht deaktivieren Die HTTP-Headerüberprüfung ermöglicht die Codierung der Wagenrücklauf- und Zeilenvorschubzeichen „\r“ bzw. „\n“, die sich in Antwortheadern finden. Mit dieser Codierung lassen sich Einschleusungsangriffe vermeiden, die eine Anwendung ausnutzen, die nicht vertrauenswürdige Daten im Header zurückgibt.
CA5366: XmlReader zum Lesen von DataSet-XML verwenden Durch Verwenden eines DataSet-Elements mit nicht vertrauenswürdigen Daten können gefährliche externe Verweise geladen werden. Dies muss mithilfe eines XmlReader-Elements mit sicherem Konfliktlöser oder deaktivierter DTD-Verarbeitung eingeschränkt werden.
CA5367: Typen mit Zeigerfeldern dürfen nicht serialisiert werden. Diese Regel überprüft, ob eine serialisierbare Klasse mit Zeigerfeld oder -Eigenschaft vorhanden ist. Member, die nicht serialisiert werden können, können Zeiger sein, beispielsweise statische Member oder Felder, die mit NonSerializedAttribute gekennzeichnet sind.
CA5368: Festlegen von ViewStateUserKey für von der Seite abgeleitete Klassen Durch Festlegen der Eigenschaft ViewStateUserKey können Sie Angriffe auf Ihre Anwendung verhindern, indem Sie der view-state-Variable für einzelne Benutzer einen Bezeichner zuweisen, damit Angreifer die Variable nicht für einen Angriff verwenden können. Andernfalls bestehen Sicherheitsrisiken durch eine websiteübergreifende Anforderungsfälschung.
CA5369: Verwenden Sie XmlReader zur Deserialisierung. Die Verarbeitung nicht vertrauenswürdiger DTD- und XML-Schemas kann das Laden gefährlicher externer Verweise ermöglichen. Dies sollte eingeschränkt werden, indem ein XmlReader-Element mit einem sicheren Konfliktlöser oder deaktivierter Inlineschemaverarbeitung für DTD und XML verwendet wird.
CA5370: Verwenden Sie XmlReader als überprüfenden Reader. Die Verarbeitung nicht vertrauenswürdiger DTD- und XML-Schemas kann das Laden gefährlicher externer Verweise ermöglichen. Dies kann eingeschränkt werden, indem ein XmlReader-Element mit einem sicheren Konfliktlöser oder deaktivierter Inlineschemaverarbeitung für DTD und XML verwendet wird.
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. Die Verwendung eines XmlReader-Elements mit einem sicheren Konfliktlöser oder deaktivierter Inlineschemaverarbeitung für DTD und XML schränkt dies ein.
CA5372: Verwenden Sie XmlReader für XPathDocument. Durch Verarbeitung von XML-Code aus nicht vertrauenswürdigen Daten können gefährliche externe Verweise geladen werden. Dies kann mithilfe eines XmlReader-Elements mit sicherem Konfliktlöser oder deaktivierter DTD-Verarbeitung eingeschränkt werden.
CA5373: Verwenden Sie keine veraltete Schlüsselableitungsfunktion. Diese Regel erkennt den Aufruf der schwachen Schlüsselableitungsmethoden System.Security.Cryptography.PasswordDeriveBytes und Rfc2898DeriveBytes.CryptDeriveKey. System.Security.Cryptography.PasswordDeriveBytes verwendete den schwachen Algorithmus PBKDF1.
CA5374: Kein XslTransform verwenden Diese Regel überprüft, ob System.Xml.Xsl.XslTransform im Code instanziiert ist. System.Xml.Xsl.XslTransform ist jetzt veraltet und sollte nicht mehr 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 allerdings keine Richtlinien auf Containerebene und bietet weniger Flexibilität und Kontrolle über die gewährten Berechtigungen. Sobald böswillige Benutzer Zugang erlangt haben, ist Ihr Speicherkonto stark gefährdet.
CA5376: SharedAccessProtocol.HttpsOnly verwenden. Bei einer SAS handelt es sich um vertrauliche Daten, die nicht im Nur-Text-Format über HTTP übertragen werden dürfen.
CA5377: Zugriffsrichtlinie auf Containerebene verwenden. Eine Zugriffsrichtlinie auf Containerebene kann jederzeit geändert oder widerrufen werden. Sie bietet mehr Flexibilität und eine bessere Kontrolle über die gewährten Berechtigungen.
CA5378: Deaktivieren Sie ServicePointManagerSecurityProtocols nicht. Durch Festlegen von DisableUsingServicePointManagerSecurityProtocols auf true werden die Transport Layer Security-Verbindungen (TLS) für Windows Communication Foundation (WCF) auf die Verwendung von TLS 1.0 beschränkt. Diese Version von TLS wird als veraltet markiert.
CA5379: Sicherstellen eines ausreichend starken Algorithmus für die Schlüsselableitungsfunktion Die Klasse Rfc2898DeriveBytes verwendet standardmäßig den Algorithmus SHA1. Sie müssen den Hashalgorithmus angeben, der in einigen Überladungen des Konstruktors mit SHA256 oder höher verwendet werden soll. Hinweis: Die Eigenschaft HashAlgorithm besitzt nur eine get-Zugriffsmethode, keinen overridden-Modifizierer.
CA5380: Fügen Sie keine Zertifikate zum Stammspeicher hinzu. Diese Regel erkennt Code, mit dem ein Zertifikat zum Zertifikatspeicher für vertrauenswürdige Stammzertifizierungsstellen hinzugefügt wird. Standardmäßig ist der Zertifikatspeicher für vertrauenswürdige Stammzertifizierungsstellen mit mehreren öffentlichen Zertifizierungsstellen konfiguriert, die die Anforderungen des Microsoft-Programms für Stammzertifikate erfüllen.
CA5381: Stellen Sie sicher, dass keine Zertifikate zum Stammspeicher hinzugefügt werden. Diese Regel erkennt Code, mit dem potenziell ein Zertifikat zum Zertifikatspeicher für vertrauenswürdige Stammzertifizierungsstellen hinzugefügt werden kann. Standardmäßig ist der Zertifikatspeicher für vertrauenswürdige Stammzertifizierungsstellen mit mehreren öffentlichen Zertifizierungsstellen konfiguriert, die die Anforderungen des Microsoft-Programms für Stammzertifikate erfüllen.
CA5382: Sichere Cookies in ASP.NET Core verwenden Über HTTPS verfügbare Anwendungen müssen sichere Cookies verwenden, die den Browser anweisen, das Cookie nur mit TLS (Transport Layer Security) zu übertragen.
CA5383: Sicherstellen, dass sichere Cookies in ASP.NET Core verwendet werden Über HTTPS verfügbare Anwendungen müssen sichere Cookies verwenden, die den Browser anweisen, das Cookie nur mit TLS (Transport Layer Security) zu übertragen.
CA5384: Digitalen Signaturalgorithmus (DSA) nicht verwenden DSA ist ein schwacher asymmetrischer Verschlüsselungsalgorithmus.
CA5385: RSA-Algorithmus (Rivest – Shamir – Adleman) mit ausreichender Schlüsselgröße verwenden Ein RSA-Schlüssel, der kleiner als 2048 Bits ist, 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, meist in Verbindung mit Hypertext Transfer Protocol Secure (HTTPS). Die Protokollversionen TLS 1.0 und TLS 1.1 sind veraltet, die Versionen TLS 1.2 und TLS 1.3 sind aktuell. TLS 1.2 und TLS 1.3 können zukünftig auch als veraltet eingestuft werden. Um zu gewährleisten, dass Ihre Anwendung jederzeit sicher ist, vermeiden Sie die Hartcodierung einer Protokollversion, und geben Sie mindestens .NET Framework v4.7.1 als Ziel an.
CA5387: Schwache Schlüsselableitungsfunktion nicht mit unzureichender Iterationsanzahl verwenden Diese Regel prüft, ob von Rfc2898DeriveBytes ein Kryptografieschlüssel mit einer Iterationsanzahl von weniger als 100.000 generiert wurde. Eine höhere Iterationsanzahl kann bei der Vermeidung von Wörterbuchangriffen helfen, bei denen versucht wird, den generierten Kryptografieschlüssel zu erraten.
CA5388: Sicherstellen einer ausreichenden Iterationsanzahl bei Verwendung einer schwachen Schlüsselableitungsfunktion Diese Regel prüft, ob von Rfc2898DeriveBytes ein Kryptografieschlüssel generiert wurde, der möglicherweise eine Iterationsanzahl von weniger als 100.000 aufweist. Eine höhere Iterationsanzahl kann bei der Vermeidung von Wörterbuchangriffen helfen, bei denen versucht wird, den generierten Kryptografieschlüssel zu erraten.
CA5389: Fügen Sie den Pfad des Archivelements nicht zum Pfad des Zieldateisystems hinzu. Der Dateipfad kann relativ sein und zu Dateisystemzugriff außerhalb des erwarteten Zielpfads im Dateisystem führen. Dies wiederum kann zu schädlichen Konfigurationsänderungen und einer Remoteausführung von Code aus dem Hinterhalt (Lay-and-Wait-Technik) führen.
CA5390: Keine Hartcodierung von Verschlüsselungsschlüsseln Damit ein symmetrischer Algorithmus funktioniert, darf der geheime Schlüssel nur dem Absender und dem Empfänger bekannt sein. Wenn ein Schlüssel hart codiert wird, lässt er sich leicht entdecken. Selbst aus kompilierten Binärdateien kann er von böswilligen Benutzern ganz einfach extrahiert werden. Sobald der private Schlüssel aufgedeckt wurde, kann der Verschlüsselungstext direkt entschlüsselt werden und ist nicht mehr geschützt.
CA5391: Fälschungssicherheitstoken in ASP.NET Core MVC-Controllern verwenden. Das Verarbeiten einer POST-, PUT-, PATCH- oder DELETE-Anforderung, ohne ein Antifälschungstoken zu validieren, kann für websiteübergreifende Anforderungsfälschungsangriffe anfällig machen. Mit einem websiteübergreifenden Anforderungsfälschungsangriff können böswillige Anforderungen von einem authentifizierten Benutzer an Ihren ASP.NET Core MVC-Controller gesendet werden.
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 bei einigen Anwendungen ein Sicherheitsproblem darstellen und zu DLL-Hijacking führen.
CA5393: Keinen unsicheren DllImportSearchPath-Wert verwenden. Die standardmäßigen DLL-Suchverzeichnisse und Assemblyverzeichnisse könnten eine schädliche DLL enthalten. Je nachdem, von wo aus Ihre Anwendung ausgeführt wird, könnte sich auch im Verzeichnis der Anwendung eine schädliche DLL befinden.
CA5394: Keine unsichere Zufälligkeitsstufe verwenden Wenn Sie einen kryptografisch schwachen Generator für Pseudozufallszahlen verwenden, kann ein Angreifer möglicherweise vorhersagen, welcher sicherheitsrelevante Wert generiert wird.
CA5395: Fehlendes HttpVerb-Attribut für Aktionsmethoden. Alle Aktionsmethoden, die Daten erstellen, bearbeiten, löschen oder anderweitig ändern, müssen mit dem antiforgery-Attribut vor Angriffen durch siteübergreifende Anforderungsfälschung geschützt werden. Die Durchführung eines GET-Vorgangs sollte eine sichere Operation sein, die keine Nebenwirkungen hat und Ihre permanenten Daten nicht ändert.
CA5396: HttpOnly für HttpCookie auf TRUE festlegen Stellen Sie im Rahmen eines mehrschichtigen Schutzes sicher, dass sicherheitsrelevante HTTP-Cookies als „HttpOnly“ gekennzeichnet werden. Damit werden Webbrowser angewiesen, den Zugriff auf die Cookies durch Skripts nicht zuzulassen. Die Einschleusung von schädlichen Skripts ist eine gängige Methode, Cookies zu stehlen.
CA5397: Verwenden Sie keine veralteten SslProtocols-Werte. Transport Layer Security (TLS) sichert die Kommunikation zwischen Computern, meist in Verbindung mit Hypertext Transfer Protocol Secure (HTTPS). Ältere Protokollversionen von TLS sind weniger sicher als TLS 1.2 und TLS 1.3, daher ist es wahrscheinlicher, dass diese Versionen neue Sicherheitsrisiken aufweisen. Vermeiden Sie ältere Protokollversionen, um das Risiko zu minimieren.
CA5398: Vermeiden Sie hartcodierte SslProtocols-Werte. Transport Layer Security (TLS) sichert die Kommunikation zwischen Computern, meist in Verbindung mit Hypertext Transfer Protocol Secure (HTTPS). Die Protokollversionen TLS 1.0 und TLS 1.1 sind veraltet, die Versionen TLS 1.2 und TLS 1.3 sind aktuell. TLS 1.2 und TLS 1.3 können zukünftig auch als veraltet eingestuft werden. Um die Sicherheit Ihrer Anwendung dauerhaft zu gewährleisten, vermeiden Sie die Hartcodierung der Protokollversion.
CA5399: Überprüfung der HttpClient-Zertifikatsperrliste definitiv deaktivieren Ein widerrufenes Zertifikat ist nicht mehr vertrauenswürdig. Es könnte von Angreifern zum Übergeben von schädlichen Daten oder zum Stehlen vertraulicher Daten in der HTTPS-Kommunikation verwendet werden.
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 zum Übergeben von schädlichen Daten oder zum Stehlen vertraulicher Daten in der HTTPS-Kommunikation verwendet werden.
CA5401: CreateEncryptor nicht mit Nicht-Standard-Initialisierungsvektoren verwenden Bei der symmetrischen Verschlüsselung muss immer ein nicht wiederholbarer Initialisierungsvektor verwendet werden, um Wörterbuchangriffe zu verhindern.
CA5402: CreateEncryptor mit Standard-Initialisierungsvektoren verwenden Bei der symmetrischen Verschlüsselung muss immer ein nicht wiederholbarer Initialisierungsvektor verwendet werden, um Wörterbuchangriffe zu verhindern.
CA5403: Keine Hartcodierung von Zertifikaten Der data- oder rawData-Parameter eines X509Certificate- oder X509Certificate2-Konstruktors ist hartcodiert.
CA5404: Token-Validierungsprüfungen nicht deaktivieren TokenValidationParameters Eigenschaften, die die Token-Validierung steuern, sollten nicht auf false gesetzt werden.
CA5405: Tokenvalidierung in Delegaten nicht immer überspringen Der AudienceValidator oder LifetimeValidator zugewiesene Rückruf gibt immer true zurück.