Condividi tramite


Regole di sicurezza

Le regole di sicurezza supportano librerie e applicazioni più sicure. Queste regole consentono di prevenire i difetti di sicurezza nel programma. Se si disabilita una di queste regole, è necessario contrassegnare chiaramente il motivo nel codice e informare anche il responsabile della sicurezza designato per il progetto di sviluppo.

In questa sezione

Regola Descrizione
CA2100: Controllare la vulnerabilità della sicurezza nelle query SQL Un metodo imposta la proprietà System.Data.IDbCommand.CommandText usando una stringa compilata da un argomento stringa nel metodo. La regola presuppone che l'argomento stringa contenga l'input dell'utente. Una stringa di comando SQL compilata da un input dell'utente è vulnerabile agli attacchi intrusivi nel codice SQL,
CA2109: Controllare i gestori di eventi visibili È stato rilevato un metodo di gestione eventi pubblico o protetto. I metodi di gestione eventi non devono essere esposti se non assolutamente necessario.
CA2119: Impostare come sealed i metodi che soddisfano interfacce private Un tipo pubblico ereditabile fornisce un'implementazione di metodo sottoponibile a override di un'interfaccia interna (Friend in Visual Basic). Per correggere una violazione di questa regola, impedire che venga eseguito l'override del metodo esternamente all'assembly.
CA2153: Evitare la gestione delle eccezioni in stato danneggiato Leeccezioni in stato danneggiato (CSE, Corrupted State Exception) indicano che sono presenti danni nella memoria del processo. Se si prova a intercettare tali eccezioni, invece di lasciare che il processo venga arrestato in modo anomalo, può portare a vulnerabilità di sicurezza nel caso in cui un utente malintenzionato riesca a inserire un exploit nell'area della memoria danneggiata.
CA2300: Non usare un deserializzatore non sicuro BinaryFormatter I deserializzatori non sicuri sono vulnerabili durante la deserializzazione dei dati non attendibili. Un utente malintenzionato potrebbe modificare i dati serializzati in modo da includere tipi imprevisti per inserire oggetti con effetti collaterali dannosi.
CA2301: Non chiamare BinaryFormatter.Deserialize senza prima impostare BinaryFormatter.Binder I deserializzatori non sicuri sono vulnerabili durante la deserializzazione dei dati non attendibili. Un utente malintenzionato potrebbe modificare i dati serializzati in modo da includere tipi imprevisti per inserire oggetti con effetti collaterali dannosi.
CA2302: Assicurarsi che BinaryFormatter.Binder sia impostato prima di chiamare BinaryFormatter.Deserialize I deserializzatori non sicuri sono vulnerabili durante la deserializzazione dei dati non attendibili. Un utente malintenzionato potrebbe modificare i dati serializzati in modo da includere tipi imprevisti per inserire oggetti con effetti collaterali dannosi.
CA2305: Non usare il deserializzatore non sicuro LosFormatter I deserializzatori non sicuri sono vulnerabili durante la deserializzazione dei dati non attendibili. Un utente malintenzionato potrebbe modificare i dati serializzati in modo da includere tipi imprevisti per inserire oggetti con effetti collaterali dannosi.
CA2310: Non usare un deserializzatore non sicuro NetDataContractSerializer I deserializzatori non sicuri sono vulnerabili durante la deserializzazione dei dati non attendibili. Un utente malintenzionato potrebbe modificare i dati serializzati in modo da includere tipi imprevisti per inserire oggetti con effetti collaterali dannosi.
CA2311: Non deserializzare senza prima impostare NetDataContractSerializer.Binder I deserializzatori non sicuri sono vulnerabili durante la deserializzazione dei dati non attendibili. Un utente malintenzionato potrebbe modificare i dati serializzati in modo da includere tipi imprevisti per inserire oggetti con effetti collaterali dannosi.
CA2312: Assicurarsi che NetDataContractSerializer.Binder sia impostato prima della deserializzazione I deserializzatori non sicuri sono vulnerabili durante la deserializzazione dei dati non attendibili. Un utente malintenzionato potrebbe modificare i dati serializzati in modo da includere tipi imprevisti per inserire oggetti con effetti collaterali dannosi.
CA2315: Non usare objectStateFormatter deserializer non sicuro I deserializzatori non sicuri sono vulnerabili durante la deserializzazione dei dati non attendibili. Un utente malintenzionato potrebbe modificare i dati serializzati in modo da includere tipi imprevisti per inserire oggetti con effetti collaterali dannosi.
CA2321: Non deserializzare con JavaScriptSerializer usando simpleTypeResolver I deserializzatori non sicuri sono vulnerabili durante la deserializzazione dei dati non attendibili. Un utente malintenzionato potrebbe modificare i dati serializzati in modo da includere tipi imprevisti per inserire oggetti con effetti collaterali dannosi.
CA2322: Assicurarsi che JavaScriptSerializer non sia inizializzato con SimpleTypeResolver prima della deserializzazione I deserializzatori non sicuri sono vulnerabili durante la deserializzazione dei dati non attendibili. Un utente malintenzionato potrebbe modificare i dati serializzati in modo da includere tipi imprevisti per inserire oggetti con effetti collaterali dannosi.
CA2326: Non usare i valori TypeNameHandling diversi da Nessuno I deserializzatori non sicuri sono vulnerabili durante la deserializzazione dei dati non attendibili. Un utente malintenzionato potrebbe modificare i dati serializzati in modo da includere tipi imprevisti per inserire oggetti con effetti collaterali dannosi.
CA2327: Non usare JsonSerializer non sicuro Impostazioni I deserializzatori non sicuri sono vulnerabili durante la deserializzazione dei dati non attendibili. Un utente malintenzionato potrebbe modificare i dati serializzati in modo da includere tipi imprevisti per inserire oggetti con effetti collaterali dannosi.
CA2328: Assicurarsi che JsonSerializer Impostazioni siano protetti I deserializzatori non sicuri sono vulnerabili durante la deserializzazione dei dati non attendibili. Un utente malintenzionato potrebbe modificare i dati serializzati in modo da includere tipi imprevisti per inserire oggetti con effetti collaterali dannosi.
CA2329: Non deserializzare con JsonSerializer usando una configurazione non sicura I deserializzatori non sicuri sono vulnerabili durante la deserializzazione dei dati non attendibili. Un utente malintenzionato potrebbe modificare i dati serializzati in modo da includere tipi imprevisti per inserire oggetti con effetti collaterali dannosi.
CA2330: Assicurarsi che JsonSerializer abbia una configurazione sicura durante la deserializzazione I deserializzatori non sicuri sono vulnerabili durante la deserializzazione dei dati non attendibili. Un utente malintenzionato potrebbe modificare i dati serializzati in modo da includere tipi imprevisti per inserire oggetti con effetti collaterali dannosi.
CA2350: Verificare che l'input di DataTable.ReadXml()sia attendibile Quando si deserializza un oggetto DataTable con input non attendibile, un utente malintenzionato può creare input dannoso per eseguire un attacco Denial of Service. Potrebbero verificarsi vulnerabilità sconosciute per l'esecuzione del codice remoto.
CA2351: Verificare che l'input di DataSet.ReadXml()sia attendibile Quando si deserializza un oggetto DataSet con input non attendibile, un utente malintenzionato può creare input dannoso per eseguire un attacco Denial of Service. Potrebbero verificarsi vulnerabilità sconosciute per l'esecuzione del codice remoto.
CA2352: Unsafe DataSet o DataTable in un tipo serializzabile può essere vulnerabile agli attacchi di esecuzione del codice remoto Una classe o uno struct contrassegnato con SerializableAttribute contiene un campo o una DataSet proprietà o DataTable e non dispone di un oggetto GeneratedCodeAttribute.
CA2353: Unsafe DataSet o DataTable in tipo serializzabile Una classe o uno struct contrassegnato con un attributo di serializzazione XML o un attributo del contratto dati contiene un campo o DataTable una DataSet proprietà o .
CA2354: Unsafe DataSet o DataTable nell'oggetto grafico deserializzato può essere vulnerabile all'attacco di esecuzione del codice remoto La deserializzazione con un System.Runtime.Serialization.IFormatter oggetto serializzato e l'oggetto grafico del tipo sottoposto a cast può includere un DataSet oggetto o DataTable.
CA2355: Unsafe DataSet o DataTable in un oggetto grafico deserializzato Deserializzazione quando il grafico a oggetti del tipo sottoposto a cast o specificato può includere un DataSet oggetto o DataTable.
CA2356: Unsafe DataSet o DataTable in web deserialized object graph Un metodo con un System.Web.Services.WebMethodAttribute oggetto o System.ServiceModel.OperationContractAttribute ha un parametro che può fare riferimento a un DataSet oggetto o DataTable.
CA2361: Verificare che la classe generata automaticamente contenente DataSet.ReadXml() non venga usata con dati non attendibili Quando si deserializza un oggetto DataSet con input non attendibile, un utente malintenzionato può creare input dannoso per eseguire un attacco Denial of Service. Potrebbero verificarsi vulnerabilità sconosciute per l'esecuzione del codice remoto.
CA2362: Unsafe DataSet o DataTable in un tipo serializzabile generato automaticamente può essere vulnerabile agli attacchi di esecuzione del codice remoto Quando si deserializzare l'input non attendibile con BinaryFormatter e l'oggetto grafico deserializzato contiene un DataSet oggetto o DataTable, un utente malintenzionato può creare un payload dannoso per eseguire un attacco di esecuzione del codice remoto.
CA3001: Esaminare il codice per individuare le vulnerabilità di sql injection Quando si lavora con i comandi SQL e di input non attendibili, tenere presente gli attacchi SQL injection. Un attacco SQL injection può eseguire comandi SQL dannosi, compromettendo la sicurezza e l'integrità dell'applicazione.
CA3002: Esaminare il codice per le vulnerabilità XSS Quando si usa l'input non attendibile dalle richieste Web, tenere presente gli attacchi XSS (Cross-Site Scripting). Un attacco XSS inserisce input non attendibile nell'output HTML non elaborato, consentendo all'utente malintenzionato di eseguire script dannosi o di modificare il contenuto nella pagina Web.
CA3003: Esaminare il codice per individuare le vulnerabilità di inserimento del percorso del file Quando si usa l'input non attendibile dalle richieste Web, tenere presente l'uso dell'input controllato dall'utente quando si specificano i percorsi dei file.
CA3004: Esaminare il codice per individuare le vulnerabilità di divulgazione di informazioni La divulgazione delle informazioni sulle eccezioni offre agli utenti malintenzionati informazioni dettagliate sugli interni dell'applicazione, che possono aiutare gli utenti malintenzionati a trovare altre vulnerabilità da sfruttare.
CA3006: Esaminare il codice per individuare le vulnerabilità di inserimento dei comandi di processo Quando si lavora con l'input non attendibile, tenere presente gli attacchi di inserimento dei comandi. Un attacco command injection può eseguire comandi dannosi nel sistema operativo sottostante, compromettendo la sicurezza e l'integrità del server.
CA3007: Esaminare il codice per individuare vulnerabilità di reindirizzamento aperte Quando si lavora con l'input non attendibile, tenere presente le vulnerabilità di reindirizzamento aperte. Un utente malintenzionato può sfruttare una vulnerabilità di reindirizzamento aperto per usare il sito Web per dare l'aspetto di un URL legittimo, ma reindirizzare un visitatore insospettabile a una pagina Web dannosa o di phishing.
CA3008: Esaminare il codice per le vulnerabilità di inserimento XPath Quando si lavora con l'input non attendibile, tenere presente gli attacchi di inserimento XPath. La creazione di query XPath usando un input non attendibile può consentire a un utente malintenzionato di modificare la query per restituire un risultato imprevisto ed eventualmente divulgare il contenuto del codice XML sottoposto a query.
CA3009: Esaminare il codice per individuare le vulnerabilità di inserimento XML Quando si usa l'input non attendibile, tenere presente gli attacchi XML injection.
CA3010: Esaminare il codice per individuare le vulnerabilità di inserimento XAML Quando si lavora con l'input non attendibile, tenere presente gli attacchi xaml injection. XAML è un linguaggio di markup che rappresenta direttamente la creazione di istanze di oggetti e la relativa esecuzione. Ciò significa che gli elementi creati in XAML possono interagire con le risorse di sistema (ad esempio, l'accesso alla rete e l'I/O del file system).
CA3011: Esaminare il codice per individuare le vulnerabilità di inserimento delle DLL Quando si usa l'input non attendibile, tenere presente il caricamento di codice non attendibile. Se l'applicazione Web carica codice non attendibile, un utente malintenzionato potrebbe essere in grado di inserire DLL dannose nel processo ed eseguire codice dannoso.
CA3012: Esaminare il codice per individuare vulnerabilità regex injection Quando si lavora con l'input non attendibile, tenere presente gli attacchi regex injection. Un utente malintenzionato può usare l'inserimento regex per modificare in modo dannoso un'espressione regolare, per rendere la corrispondenza regolare risultati imprevisti o per fare in modo che l'espressione regolare utilizzi una CPU eccessiva con conseguente attacco Denial of Service.
CA3061: Non aggiungere lo schema in base all'URL Non usare l'overload unsafe del metodo Add perché può causare riferimenti esterni pericolosi.
CA3075: Elaborazione DTD non protetta Se si usano istanze di DTDProcessing non protette o si fa riferimento a origini di entità esterne, il parser può accettare un input non attendibile e divulgare informazioni riservate a utenti malintenzionati.
CA3076: Esecuzione di script XSLT non protetta Se si eseguono le trasformazioni XSLT (Extensible StyleSheet Language Transformations) nelle applicazioni .NET in modo non sicuro, il processore potrebbe risolvere riferimenti URI non attendibili che potrebbero divulgare informazioni riservate agli utenti malintenzionati, causando attacchi Denial of Service e Cross-Site.
CA3077: Elaborazione non sicura in progettazione API, documenti XML e lettori di testo XML Quando si progetta un'API derivata da XMLDocument e XMLTextReader, tenere presente DtdProcessing. Se si usano istanze di DTDProcessing non protette per fare riferimento o risolvere origini di entità esterne oppure per impostare valori non protetti nel codice XML, si può causare la divulgazione di informazioni.
CA3147: Contrassegnare i gestori verbi con ValidateAntiForgeryToken Quando si progetta un controller MVC ASP.NET, tenere presente gli attacchi di richiesta intersito falsi. Un attacco di richiesta intersito può inviare richieste dannose da un utente autenticato al controller MVC ASP.NET.
CA5350: non usare algoritmi di crittografia vulnerabili Oggi si usano algoritmi di crittografia e funzioni hash deboli per diversi motivi, ma non dovrebbero essere usati per garantire la riservatezza o l'integrità dei dati che proteggono. Questa regola si attiva quando vengono rilevati algoritmi TripleDES, SHA1 o RIPEMD160 nel codice.
CA5351: Non usare algoritmi di crittografia interrotti Gli algoritmi di crittografia violati non sono considerati sicuri e il loro uso è fortemente sconsigliato. Questa regola si attiva quando nel codice vengono rilevati l'algoritmo hash MD5 oppure gli algoritmi di crittografia DES o RC2.
CA5358: Non usare modalità di crittografia non sicure Non usare modalità crittografia non sicure
CA5359: Non disabilitare la convalida del certificato Un certificato consente di autenticare l'identità del server. I client devono convalidare il certificato del server per assicurarsi che le richieste vengano inviate al server desiderato. Se ServerCertificateValidationCallback restituisce truesempre , qualsiasi certificato passerà la convalida.
CA5360: Non chiamare metodi pericolosi nella deserializzazione La deserializzazione non sicura è una vulnerabilità che si verifica quando i dati non attendibili vengono usati per abusare della logica di un'applicazione, infliggere un attacco Denial of Service (DoS) o persino eseguire codice arbitrario al momento della deserializzazione. È spesso possibile che gli utenti malintenzionati abusino di queste funzionalità di deserializzazione quando l'applicazione deserializza i dati non attendibili sotto il loro controllo. In particolare, richiamare metodi pericolosi nel processo di deserializzazione. Gli attacchi di deserializzazione non sicuri potrebbero consentire a un utente malintenzionato di eseguire attacchi come attacchi DoS, bypass di autenticazione ed esecuzione remota del codice.
CA5361: Non disabilitare l'uso di SChannel di crittografia avanzata L'impostazione Switch.System.Net.DontEnableSchUseStrongCrypto di per indebolire true la crittografia usata nelle connessioni TLS (Transport Layer Security) in uscita. La crittografia più debole può compromettere la riservatezza della comunicazione tra l'applicazione e il server, rendendo più semplice l'intercettazione dei dati sensibili da parte degli utenti malintenzionati.
CA5362: Ciclo di riferimento potenziale nel grafico di oggetti deserializzati Se deserializzare i dati non attendibili, qualsiasi codice che elabora l'oggetto grafico deserializzato deve gestire i cicli di riferimento senza passare a cicli infiniti. Sono inclusi sia il codice che fa parte di un callback di deserializzazione che elabora l'oggetto grafico dopo il completamento della deserializzazione. In caso contrario, un utente malintenzionato potrebbe eseguire un attacco Denial of Service con dati dannosi contenenti un ciclo di riferimento.
CA5363: Non disabilitare la convalida delle richieste La convalida delle richieste è una funzionalità di ASP.NET che esamina le richieste HTTP e determina se contengono contenuto potenzialmente pericoloso che può causare attacchi injection, incluso lo scripting intersito.
CA5364: Non usare protocolli di sicurezza deprecati Transport Layer Security (TLS) protegge la comunicazione tra computer, in genere con PROTOCOLLO HTTPS (Hypertext Transfer Protocol Secure). Le versioni precedenti del protocollo TLS sono meno sicure di TLS 1.2 e TLS 1.3 e hanno maggiori probabilità di avere nuove vulnerabilità. Evitare versioni precedenti del protocollo per ridurre al minimo i rischi.
CA5365: Non disabilitare il controllo dell'intestazione HTTP Il controllo dell'intestazione HTTP abilita la codifica dei caratteri ritorno a capo e di nuova riga, \r e \n, presenti nelle intestazioni di risposta. Questa codifica consente di evitare attacchi injection che sfruttano un'applicazione che restituisce dati non attendibili contenuti nell'intestazione.
CA5366: Usare XmlReader per DataSet Read XML L'uso di un DataSet oggetto per leggere XML con dati non attendibili può caricare riferimenti esterni pericolosi, che devono essere limitati usando un XmlReader oggetto con un sistema di risoluzione sicuro o con l'elaborazione DTD disabilitata.
CA5367: Non serializzare i tipi con campi puntatore Questa regola controlla se è presente una classe serializzabile con un campo o una proprietà puntatore. I membri che non possono essere serializzati possono essere un puntatore, ad esempio membri statici o campi contrassegnati con NonSerializedAttribute.
CA5368: Imposta ViewStateUserKey per le classi derivate dalla pagina L'impostazione della ViewStateUserKey proprietà consente di evitare attacchi all'applicazione consentendo di assegnare un identificatore alla variabile di stato di visualizzazione per singoli utenti in modo che gli utenti malintenzionati non possano usare la variabile per generare un attacco. In caso contrario, ci saranno vulnerabilità per la richiesta intersito falso.
CA5369: Usare XmlReader per deserializzare L'elaborazione di DTD e XML Schema non attendibili può consentire il caricamento di riferimenti esterni pericolosi, che devono essere limitati tramite xmlReader con un sistema di risoluzione sicuro o con LTD e l'elaborazione dello schema inline XML disabilitata.
CA5370: Usare XmlReader per convalidare il lettore L'elaborazione di DTD e XML Schema non attendibili può consentire il caricamento di riferimenti esterni pericolosi. Questo caricamento pericoloso può essere limitato usando un XmlReader con un resolver sicuro o con LTD e l'elaborazione dello schema inline XML disabilitata.
CA5371: Usare XmlReader per la lettura dello schema L'elaborazione di DTD e XML Schema non attendibili può consentire il caricamento di riferimenti esterni pericolosi. L'uso di un XmlReader con un sistema di risoluzione sicuro o con LDD e l'elaborazione dello schema inline XML disabilitata limita questa operazione.
CA5372: Usare XmlReader per XPathDocument L'elaborazione xml da dati non attendibili può caricare riferimenti esterni pericolosi, che possono essere limitati usando un XmlReader con un sistema di risoluzione sicuro o con l'elaborazione DTD disabilitata.
CA5373: Non usare la funzione di derivazione della chiave obsoleta Questa regola rileva la chiamata di metodi System.Security.Cryptography.PasswordDeriveBytes di derivazione chiave debole e Rfc2898DeriveBytes.CryptDeriveKey. System.Security.Cryptography.PasswordDeriveBytes utilizzato un algoritmo debole PBKDF1.
CA5374: Non usare XslTransform Questa regola controlla se System.Xml.Xsl.XslTransform viene creata un'istanza nel codice. System.Xml.Xsl.XslTransform è ora obsoleto e non deve essere usato.
CA5375: Non usare la firma di accesso condiviso dell'account Una firma di accesso condiviso dell'account può delegare l'accesso alle operazioni di lettura, scrittura ed eliminazione in contenitori BLOB, tabelle, code e condivisioni file non consentite con una firma di accesso condiviso del servizio. Tuttavia, non supporta i criteri a livello di contenitore e ha meno flessibilità e controllo sulle autorizzazioni concesse. Una volta che gli utenti malintenzionati lo ottengono, l'account di archiviazione verrà compromesso facilmente.
CA5376: Usare SharedAccessProtocol HttpsOnly La firma di accesso condiviso è dati sensibili che non possono essere trasportati in testo normale su HTTP.
CA5377: Usare i criteri di accesso a livello di contenitore I criteri di accesso a livello di contenitore possono essere modificati o revocati in qualsiasi momento. Offre maggiore flessibilità e controllo sulle autorizzazioni concesse.
CA5378: Non disabilitare ServicePointManagerSecurityProtocols L'impostazione di DisableUsingServicePointManagerSecurityProtocols su true limita le connessioni TLS (Transport Layer Security) di Windows Communication Framework (WCF) all'uso di TLS 1.0. Tale versione di TLS sarà deprecata.
CA5379: Verificare che l'algoritmo della funzione di derivazione della chiave sia sufficientemente forte Per impostazione predefinita, la Rfc2898DeriveBytes classe usa l'algoritmo SHA1 . È necessario specificare l'algoritmo hash da usare in alcuni overload del costruttore con SHA256 o versione successiva. Si noti che HashAlgorithm la proprietà ha solo una get funzione di accesso e non dispone di un overridden modificatore.
CA5380: Non aggiungere certificati all'archivio radice Questa regola rileva il codice che aggiunge un certificato nell'archivio certificati Autorità di certificazione radice attendibili. Per impostazione predefinita, l'archivio certificati Autorità di certificazione radice attendibili è configurato con un set di ca pubbliche che soddisfano i requisiti del programma di certificazione radice Microsoft.
CA5381: Assicurarsi che i certificati non vengano aggiunti all'archivio radice Questa regola rileva il codice che potenzialmente aggiunge un certificato nell'archivio certificati Autorità di certificazione radice attendibili. Per impostazione predefinita, l'archivio certificati Autorità di certificazione radice attendibili è configurato con un set di autorità di certificazione pubbliche (CA) che soddisfano i requisiti del Programma di certificazione radice Microsoft.
CA5382: Usare cookie sicuri in ASP.NET Core Le applicazioni disponibili su HTTPS devono usare cookie sicuri, che indicano al browser che il cookie deve essere trasmesso solo tramite Transport Layer Security (TLS).
CA5383: Assicurarsi di usare cookie sicuri in ASP.NET Core Le applicazioni disponibili su HTTPS devono usare cookie sicuri, che indicano al browser che il cookie deve essere trasmesso solo tramite Transport Layer Security (TLS).
CA5384: Non usare l'algoritmo di firma digitale (DSA) DSA è un algoritmo di crittografia asimmetrica debole.
CA5385: Usare l'algoritmo Rivest–Shamir–Adleman (RSA) con dimensioni sufficienti della chiave Una chiave RSA inferiore a 2048 bit è più vulnerabile agli attacchi di forza bruta.
CA5386: Evitare il valore SecurityProtocolType hardcoding Transport Layer Security (TLS) protegge la comunicazione tra computer, in genere con PROTOCOLLO HTTPS (Hypertext Transfer Protocol Secure). Le versioni del protocollo TLS 1.0 e TLS 1.1 sono deprecate, mentre TLS 1.2 e TLS 1.3 sono correnti. In futuro, TLS 1.2 e TLS 1.3 potrebbero essere deprecati. Per garantire che l'applicazione rimanga sicura, evitare di impostare come hardcoding una versione del protocollo e di avere come destinazione almeno .NET Framework v4.7.1.
CA5387: Non usare la funzione di derivazione chiave debole con numero di iterazioni insufficienti Questa regola controlla se una chiave crittografica è stata generata da Rfc2898DeriveBytes con un numero di iterazioni inferiore a 100.000. Un numero di iterazioni superiore può contribuire a mitigare gli attacchi di dizionario che tentano di indovinare la chiave crittografica generata.
CA5388: Assicurarsi che il numero di iterazioni sufficiente quando si usa la funzione di derivazione chiave debole Questa regola controlla se una chiave crittografica è stata generata da Rfc2898DeriveBytes con un numero di iterazioni inferiore a 100.000. Un numero di iterazioni superiore può contribuire a mitigare gli attacchi di dizionario che tentano di indovinare la chiave crittografica generata.
CA5389: Non aggiungere il percorso dell'elemento di archivio al percorso del file system di destinazione Il percorso del file può essere relativo e può portare all'accesso al file system all'esterno del percorso di destinazione del file system previsto, causando modifiche di configurazione dannose ed esecuzione remota del codice tramite tecnica di lay-and-wait.
CA5390: Non impostare la chiave di crittografia hardcoded Affinché un algoritmo simmetrico abbia esito positivo, la chiave privata deve essere nota solo al mittente e al ricevitore. Quando una chiave è hardcoded, viene facilmente individuata. Anche con i file binari compilati, è facile per gli utenti malintenzionati estrarlo. Una volta compromessa la chiave privata, il testo crittografato può essere decrittografato direttamente e non è più protetto.
CA5391: Usare token antiforgery nei controller MVC di ASP.NET Core La gestione di una POSTrichiesta , PUT, PATCHo DELETE senza convalidare un token antiforgery può essere vulnerabile agli attacchi falsi di richiesta intersito. Un attacco di richiesta intersito può inviare richieste dannose da un utente autenticato al controller ASP.NET Core MVC.
CA5392: Usare l'attributo DefaultDllImportSearchPaths per P/Invokes Per impostazione predefinita, le funzioni P/Invoke usano DllImportAttribute il probe di una serie di directory, inclusa la directory di lavoro corrente per il caricamento della libreria. Può trattarsi di un problema di sicurezza per determinate applicazioni, causando il dirottamento della DLL.
CA5393: Non usare unsafe Valore DllImportSearchPath Potrebbe essere presente una DLL dannosa nelle directory di ricerca dll predefinite e nelle directory di assembly. In alternativa, a seconda della posizione da cui viene eseguita l'applicazione, potrebbe essere presente una DLL dannosa nella directory dell'applicazione.
CA5394: Non usare casualità non sicura L'uso di un generatore di numeri pseudo-casuali con crittografia debole può consentire a un utente malintenzionato di prevedere quale valore sensibile alla sicurezza verrà generato.
CA5395: Attributo HttpVerb mancante per i metodi di azione Tutti i metodi di azione che creano, modificano, eliminano o modificano i dati devono essere protetti con l'attributo antiforgery dagli attacchi di richiesta intersito falsi. L'esecuzione di un'operazione GET deve essere un'operazione sicura che non ha effetti collaterali e non modifica i dati persistenti.
CA5396: Impostare HttpOnly su true per HttpCookie Come misura avanzata di difesa, assicurarsi che i cookie HTTP sensibili alla sicurezza siano contrassegnati come HttpOnly. Ciò indica che i Web browser non devono consentire agli script di accedere ai cookie. Gli script dannosi inseriti sono un modo comune per rubare i cookie.
CA5397: Non usare valori SslProtocols deprecati Transport Layer Security (TLS) protegge la comunicazione tra computer, in genere con PROTOCOLLO HTTPS (Hypertext Transfer Protocol Secure). Le versioni precedenti del protocollo TLS sono meno sicure di TLS 1.2 e TLS 1.3 e hanno maggiori probabilità di avere nuove vulnerabilità. Evitare versioni precedenti del protocollo per ridurre al minimo i rischi.
CA5398: evitare valori SslProtocols hardcoded Transport Layer Security (TLS) protegge la comunicazione tra computer, in genere con PROTOCOLLO HTTPS (Hypertext Transfer Protocol Secure). Le versioni del protocollo TLS 1.0 e TLS 1.1 sono deprecate, mentre TLS 1.2 e TLS 1.3 sono correnti. In futuro, TLS 1.2 e TLS 1.3 potrebbero essere deprecati. Per garantire che l'applicazione rimanga sicura, evitare di impostare come hardcoding una versione del protocollo.
CA5399: Disabilitare sicuramente il controllo dell'elenco di revoche di certificati HttpClient Un certificato revocato non è più attendibile. Può essere usato dagli utenti malintenzionati che passano alcuni dati dannosi o rubano dati sensibili nella comunicazione HTTPS.
CA5400: Verificare che il controllo dell'elenco di revoche di certificati HttpClient non sia disabilitato Un certificato revocato non è più attendibile. Può essere usato dagli utenti malintenzionati che passano alcuni dati dannosi o rubano dati sensibili nella comunicazione HTTPS.
CA5401: Non usare CreateEncryptor con iv non predefinito La crittografia simmetrica deve usare sempre un vettore di inizializzazione non ripetibile per impedire attacchi a dizionario.
CA5402: Usare CreateEncryptor con l'iv predefinito La crittografia simmetrica deve usare sempre un vettore di inizializzazione non ripetibile per impedire attacchi a dizionario.
CA5403: Non impostare un certificato hardcoded Il data parametro o rawData di un X509Certificate costruttore o X509Certificate2 è hardcoded.
CA5404: Non disabilitare i controlli di convalida dei token TokenValidationParameters Le proprietà che controllano la convalida del token non devono essere impostate su false.
CA5405: Non ignorare sempre la convalida dei token nei delegati Il callback assegnato a AudienceValidator o LifetimeValidator restituisce truesempre .