Reglas de seguridad
Las reglas de seguridad admiten bibliotecas y aplicaciones más seguras. Estas reglas ayudan a evitar los errores de seguridad en el programa. Si deshabilita cualquier regla de este tipo, se debe indicar el motivo claramente en el código además de informar al responsable de seguridad designado a ese proyecto de desarrollo.
En esta sección
Regla | Descripción |
---|---|
CA2100: Revisar consultas SQL para comprobar si tienen vulnerabilidades de seguridad | Un método establece la propiedad System.Data.IDbCommand.CommandText utilizando una cadena que se construye partiendo de un argumento de cadena para el método. Esta regla supone que el argumento de cadena contiene datos proporcionados por el usuario. Una cadena de comandos de SQL compilada a partir de datos proporcionados por el usuario es vulnerable a ataques de inserción de SQL. |
CA2109: Revisar los controladores de eventos visibles | Se detectó un método de control de eventos público o protegido. No se deberían exponer los métodos de control de eventos a menos que sea absolutamente necesario. |
CA2119: Sellar los métodos que satisfacen las interfaces privadas | Un tipo público heredable proporciona una implementación de método reemplazable de una interfaz interna (de tipo "Friend" en Visual Basic). Para corregir una infracción de esta regla, impida que el método se invalide fuera del ensamblado. |
CA2153: Evitar el control de excepciones de estado dañadas | Lasexcepciones de estado dañado (CSE) indican que la memoria está dañada en el proceso. Detectar estos problemas y evitar el bloqueo del proceso puede provocar vulnerabilidades de seguridad si un atacante puede colocar una vulnerabilidad de seguridad en la región de memoria dañada. |
CA2300: No usar el deserializador no seguro BinaryFormatter | Los deserializadores no seguros son vulnerables al deserializar datos que no son de confianza. Un atacante podría modificar los datos serializados para incluir tipos inesperados para insertar objetos con efectos secundarios malintencionados. |
CA2301: No llamar a BinaryFormatter.Deserialize sin establecer primero BinaryFormatter.Binder | Los deserializadores no seguros son vulnerables al deserializar datos que no son de confianza. Un atacante podría modificar los datos serializados para incluir tipos inesperados para insertar objetos con efectos secundarios malintencionados. |
CA2302: Asegurarse de que BinaryFormatter.Binder está establecido antes de llamar a BinaryFormatter.Deserialize | Los deserializadores no seguros son vulnerables al deserializar datos que no son de confianza. Un atacante podría modificar los datos serializados para incluir tipos inesperados para insertar objetos con efectos secundarios malintencionados. |
CA2305: No usar el deserializador no seguro LosFormatter | Los deserializadores no seguros son vulnerables al deserializar datos que no son de confianza. Un atacante podría modificar los datos serializados para incluir tipos inesperados para insertar objetos con efectos secundarios malintencionados. |
CA2310: No usar el deserializador no seguro NetDataContractSerializer | Los deserializadores no seguros son vulnerables al deserializar datos que no son de confianza. Un atacante podría modificar los datos serializados para incluir tipos inesperados para insertar objetos con efectos secundarios malintencionados. |
CA2311: No deserializar sin establecer primero NetDataContractSerializer.Binder | Los deserializadores no seguros son vulnerables al deserializar datos que no son de confianza. Un atacante podría modificar los datos serializados para incluir tipos inesperados para insertar objetos con efectos secundarios malintencionados. |
CA2312: Asegúrese de que se establece NetDataContractSerializer.Binder antes de deserializar | Los deserializadores no seguros son vulnerables al deserializar datos que no son de confianza. Un atacante podría modificar los datos serializados para incluir tipos inesperados para insertar objetos con efectos secundarios malintencionados. |
CA2315: No usar el deserializador no seguro ObjectStateFormatter | Los deserializadores no seguros son vulnerables al deserializar datos que no son de confianza. Un atacante podría modificar los datos serializados para incluir tipos inesperados para insertar objetos con efectos secundarios malintencionados. |
CA2321: No deserializar con JavaScriptSerializer mediante SimpleTypeResolver | Los deserializadores no seguros son vulnerables al deserializar datos que no son de confianza. Un atacante podría modificar los datos serializados para incluir tipos inesperados para insertar objetos con efectos secundarios malintencionados. |
CA2322: Asegúrese de que JavaScriptSerializer no se ha inicializado con SimpleTypeResolver antes de deserializar | Los deserializadores no seguros son vulnerables al deserializar datos que no son de confianza. Un atacante podría modificar los datos serializados para incluir tipos inesperados para insertar objetos con efectos secundarios malintencionados. |
CA2326: No usar valores TypeNameHandling que no sean None | Los deserializadores no seguros son vulnerables al deserializar datos que no son de confianza. Un atacante podría modificar los datos serializados para incluir tipos inesperados para insertar objetos con efectos secundarios malintencionados. |
CA2327: No usar valores JsonSerializerSettings no seguros | Los deserializadores no seguros son vulnerables al deserializar datos que no son de confianza. Un atacante podría modificar los datos serializados para incluir tipos inesperados para insertar objetos con efectos secundarios malintencionados. |
CA2328: Asegurarse de que los valores JsonSerializerSettings sean seguros | Los deserializadores no seguros son vulnerables al deserializar datos que no son de confianza. Un atacante podría modificar los datos serializados para incluir tipos inesperados para insertar objetos con efectos secundarios malintencionados. |
CA2329: No deserializar con JsonSerializer y una configuración no segura | Los deserializadores no seguros son vulnerables al deserializar datos que no son de confianza. Un atacante podría modificar los datos serializados para incluir tipos inesperados para insertar objetos con efectos secundarios malintencionados. |
CA2330: Asegurarse de que la configuración de JsonSerializer es segura al deserializar | Los deserializadores no seguros son vulnerables al deserializar datos que no son de confianza. Un atacante podría modificar los datos serializados para incluir tipos inesperados para insertar objetos con efectos secundarios malintencionados. |
CA2350: Asegurarse de que la entrada de DataTable.ReadXml() sea de confianza | Al deserializar un DataTable con una entrada que no es de confianza, un atacante puede crear una entrada malintencionada para realizar un ataque por denegación de servicio. Puede haber vulnerabilidades de ejecución de código remoto desconocidas. |
CA2351: Asegúrese de que la entrada de DataSet.ReadXml() sea de confianza | Al deserializar un DataSet con una entrada que no es de confianza, un atacante puede crear una entrada malintencionada para realizar un ataque por denegación de servicio. Puede haber vulnerabilidades de ejecución de código remoto desconocidas. |
CA2352: Un objeto DataSet o DataTable no seguro en un tipo serializable puede ser vulnerable a ataques de ejecución de código remoto | Una clase o estructura marcada con SerializableAttribute contiene una propiedad o un campo DataSet o DataTable, y no tiene un GeneratedCodeAttribute. |
CA2353: Objeto DataSet o DataTable no seguro en un tipo serializable | Una clase o estructura marcada con un atributo de serialización XML o un atributo de contrato de datos contiene una propiedad o un campo DataSet o DataTable. |
CA2354: Un objeto DataSet o DataTable no seguro en un gráfico de objetos deserializado puede ser vulnerable a ataques de ejecución de código remoto | La deserialización con un System.Runtime.Serialization.IFormatter serializado y el gráfico de objetos del tipo convertido pueden incluir DataSet o DataTable. |
CA2355: Objeto DataSet o DataTable no seguro en un gráfico de objetos deserializado | La deserialización con el gráfico de objetos del tipo convertido o especificado pueden incluir DataSet o DataTable. |
CA2356: Unsafe DataSet or DataTable in web deserialized object graph (DataTable o DataSet no seguro en un gráfico de objetos deserializado web) | Un método con System.Web.Services.WebMethodAttribute o System.ServiceModel.OperationContractAttribute tiene un parámetro que puede hacer referencia a DataSet o DataTable. |
CA2361: Asegurarse de que la clase autogenerada que contiene DataSet.ReadXml() no se utilice con datos que no son de confianza | Al deserializar un DataSet con una entrada que no es de confianza, un atacante puede crear una entrada malintencionada para realizar un ataque por denegación de servicio. Puede haber vulnerabilidades de ejecución de código remoto desconocidas. |
CA2362: Un elemento DataSet o DataTable no seguro en un tipo serializable autogenerado puede ser vulnerable a ataques de ejecución remota de código | Si se deserializa la entrada que no es de confianza con BinaryFormatter y el gráfico de objetos deserializados contiene DataSet o DataTable, un atacante puede crear una carga malintencionada para realizar un ataque de ejecución de código remoto. |
CA3001: Revisión de código en busca de vulnerabilidades de inyección de SQL | Al trabajar con comandos SQL y de entrada que no son de confianza, tenga en cuenta los ataques por inyección de SQL. Un ataque por inyección de SQL puede ejecutar comandos SQL malintencionados y poner en peligro la seguridad y la integridad de la aplicación. |
CA3002: Revisión de código en busca de vulnerabilidades de XSS | Al trabajar con una entrada que no es de confianza desde solicitudes web, tenga en cuenta los ataques de scripting entre sitios (XSS). Un ataque XSS inyecta entradas que no son de confianza en salidas HTML sin procesar, lo cual permite al atacante ejecutar scripts malintencionados o modificar contenido de forma malintencionada en la página web. |
CA3003: Revisión de código en busca de vulnerabilidades de inyección de rutas de acceso a archivos | Al trabajar con una entrada que no es de confianza desde solicitudes web, piense en usar entradas controladas por el usuario al especificar las rutas de acceso a los archivos. |
CA3004: Revisión de código en busca de vulnerabilidades de divulgación de información | Al revelar la información de la excepción, se ofrece a los atacantes información sobre el funcionamiento interno de la aplicación, y esto puede ayudar a los atacantes a encontrar otras vulnerabilidades para aprovechar. |
CA3006: Revisión de código en busca de vulnerabilidades de inyección de comandos de procesos | Al trabajar con una entrada que no es de confianza, tenga en cuenta los ataques por inyección de comandos. Un ataque por inyección de comandos puede ejecutar comandos malintencionados en el sistema operativo subyacente, lo que pone en peligro la seguridad y la integridad del servidor. |
CA3007: Revisión de código en busca de vulnerabilidades de redireccionamiento abierto | Al trabajar con una entrada que no es de confianza, tenga en cuenta las vulnerabilidades de redireccionamiento abierto. Un atacante puede aprovechar una vulnerabilidad de redireccionamiento abierto para usar el sitio web con el fin de dar la apariencia de una dirección URL legítima, pero por contra redirigir a un visitante que no sospecha el engaño a una página web de phishing o de otro tipo malintencionada. |
CA3008: Revisión de código en busca de vulnerabilidades de inyección de XPath | Al trabajar con una entrada que no es de confianza, tenga en cuenta los ataques por inyección de XPath. La construcción de consultas XPath mediante una entrada que no es de confianza puede permitir a un atacante manipular de forma malintencionada la consulta para devolver un resultado no querido y, posiblemente, divulgar el contenido del XML consultado. |
CA3009: Revisión de código en busca de vulnerabilidades de inyección de XML | Al trabajar con una entrada que no es de confianza, tenga en cuenta los ataques por inyección de XML. |
CA3010: Revisión de código en busca de vulnerabilidades de inyección de XAML | Al trabajar con una entrada que no es de confianza, tenga en cuenta los ataques por inyección de XAML. XAML es un lenguaje de marcado que representa directamente la creación de instancias y la ejecución de objetos. Esto significa que los elementos creados en XAML pueden interactuar con los recursos del sistema (por ejemplo, el acceso a la red y la E/S del sistema de archivos). |
CA3011: Revisión de código en busca de vulnerabilidades de inyección de DLL | Al trabajar con una entrada que no es de confianza, tenga en cuenta la carga de código que no es de confianza. Si la aplicación web carga código que no es de confianza, es posible que un atacante pueda insertar archivos DLL malintencionados en el proceso y ejecutar código malintencionado. |
CA3012: Revisión de código en busca de vulnerabilidades de inyección de expresiones regulares | Al trabajar con una entrada que no es de confianza, tenga en cuenta los ataques por inyección de regex. Un atacante puede usar la inyección de regex para modificar de forma malintencionada una expresión regular, para hacer que regex coincida con los resultados imprevistos o para hacer que regex tenga un consumo de CPU excesivo que produzca un ataque por denegación de servicio. |
CA3061: No agregar esquema por dirección URL | No use la sobrecarga no segura del método Add porque puede provocar referencias externas peligrosas. |
CA3075: Procesamiento no seguro de DTD | Si usa instancias de DTDProcessing inseguras o hace referencia a orígenes de entidades externas, el analizador podría aceptar entradas que no sean de confianza y revelar información confidencial a atacantes. |
CA3076: Ejecución del script XSLT no segura | Si ejecuta el lenguaje de transformación basado en hojas de estilo (XSLT) en aplicaciones .NET de forma insegura, el procesador podría resolver referencias URI que no sean de confianza y que podrían revelar información confidencial a atacantes, dando lugar a ataques por denegación de servicio y entre sitios. |
CA3077: Procesamiento no seguro en el diseño de una API, documento XML y lector de texto XML | Al diseñar una API derivada de XMLDocument y XMLTextReader, tenga en cuenta la propiedad DtdProcessing. El uso de instancias de DTDProcessing inseguras al hacer referencia a orígenes de entidades externas o resolverlos, o la definición de valores inseguros en el lenguaje XML puede provocar la divulgación de información. |
CA3147: Marcar los controladores de verbo con ValidateAntiForgeryToken | Al diseñar un controlador ASP.NET MVC, tenga en cuenta los ataques de falsificación de solicitudes entre sitios. Un ataque al de falsificación de solicitud entre sitios puede enviar solicitudes malintencionadas desde un usuario autenticado a un controlador ASP.NET MVC. |
CA5350: No usar algoritmos criptográficos no seguros | Las funciones hash y los algoritmos de cifrado débiles se usan hoy en día para numerosos propósitos, pero no se recomiendan para garantizar la confidencialidad o la integridad de los datos que se protegen. Esta regla se desencadena cuando se encuentran los algoritmos TripleDES, SHA1 o RIPEMD160 en el código. |
CA5351: No usar algoritmos criptográficos dañados | Los algoritmos criptográficos rotos no se consideran seguros y debe desalentarse su uso. Esta regla se desencadena cuando encuentra el algoritmo hash MD5 o los algoritmos de cifrado DES o RC2 en el código. |
CA5358: No usar modos de cifrado inseguro | No usar modos de cifrado inseguro |
CA5359: No deshabilitar la validación de certificado | Un certificado puede ayudar a autenticar la identidad del servidor. Los clientes deben validar el certificado del servidor para asegurarse de que las solicitudes se envían al servidor previsto. Si ServerCertificateValidationCallback siempre devuelve true , cualquier certificado pasará la validación. |
CA5360: No llamar a métodos peligrosos durante la deserialización | La deserialización no segura es una vulnerabilidad que se produce cuando se usan datos que no son de confianza para realizar un uso indebido de la lógica de una aplicación, provocar un ataque por denegación de servicio (DoS) o incluso ejecutar código arbitrario cuando se deserializa. A menudo, es posible que usuarios malintencionados utilicen indebidamente estas características de deserialización cuando la aplicación está deserializando datos que no son de confianza que están bajo su control. En concreto, la invocación de métodos peligrosos en el proceso de deserialización. Los ataques de deserialización no segura realizados correctamente pueden permitir que un atacante lleve a cabo ataques como ataques DoS, omisiones de autenticación y ejecución remota de código. |
CA5361: No deshabilitar el uso de cifrado seguro de SChannel | Establecer Switch.System.Net.DontEnableSchUseStrongCrypto en true debilita la criptografía usada en las conexiones de seguridad de la capa de transporte (TLS) salientes. Una criptografía más débil puede poner en peligro la confidencialidad de la comunicación entre la aplicación y el servidor, facilitando a los atacantes la interceptación de información confidencial. |
CA5362: Ciclo de referencia potencial en gráfico de objetos deserializados | Si se deserializan los datos que no son de confianza, el procesamiento de código del gráfico de objetos deserializados debe controlar los ciclos de referencia sin entrar en bucles infinitos. Esto incluye código que forma parte de una devolución de llamada de deserialización y código que procesa el gráfico de objetos una vez completada la deserialización. De otro modo, un atacante podría realizar un ataque por denegación de servicio con datos malintencionados que contuvieran un ciclo de referencia. |
CA5363: No deshabilitar la validación de solicitudes | La validación de solicitudes es una característica de ASP.NET que examina solicitudes HTTP y determina si contienen contenido potencialmente peligroso que pueda generar ataques de inyección, incluido el scripting entre sitios. |
CA5364: No usar protocolos de seguridad en desuso | La seguridad de la capa de transporte (TLS) protege la comunicación entre equipos, normalmente con el protocolo HTTPS. Las versiones de protocolo anteriores de TLS son menos seguras que TLS 1.2 y TLS 1.3 y es más probable que tengan nuevas vulnerabilidades. Evite las versiones anteriores del protocolo, para minimizar el riesgo. |
CA5365: No deshabilitar la comprobación de encabezados HTTP | La comprobación de encabezados HTTP permite codificar el retorno de carro y los caracteres de nueva línea, \r y \n, que se encuentran en los encabezados de respuesta. Esta codificación puede ayudar a evitar ataques de inyección que aprovechan una aplicación que repite datos que no son de confianza contenidos en el encabezado. |
CA5366: Utilizar XmlReader para el XML de lectura de DataSet | Mediante el uso de DataSet para leer código XML con datos en los que no se confía, se pueden cargar referencias externas peligrosas, que se deben restringir usando XmlReader con una resolución segura o con el procesamiento de DTD deshabilitado. |
CA5367: No serializar los tipos con campos de puntero | Esta regla comprueba si hay una clase serializable con una propiedad o un campo de puntero. Los miembros que no se pueden serializar pueden ser un puntero, como los miembros estáticos o los campos marcados con NonSerializedAttribute. |
CA5368: Establecer ViewStateUserKey para clases derivadas de página | El establecimiento de la propiedad ViewStateUserKey puede ayudarle a evitar ataques en la aplicación al permitirle asignar un identificador a la variable de estado de vista de usuarios individuales para que los atacantes no puedan usar la variable para generar un ataque. De lo contrario, habrá vulnerabilidades en la falsificación de solicitudes entre sitios. |
CA5369: Usar XmlReader para deserializar | El procesamiento de esquemas XML y DTD que no son de confianza puede habilitar la carga de referencias externas peligrosas, que se deben restringir mediante un XmlReader con un solucionador seguro o con el procesamiento de esquemas en línea XML y DTD deshabilitado. |
CA5370: Usar XmlReader para validar el lector | El procesamiento de esquemas XML y DTD que no son de confianza puede habilitar la carga de referencias externas peligrosas. Esta carga peligrosa se puede restringir mediante el uso de un XmlReader con un solucionador seguro o con el procesamiento de esquemas en línea XML y DTD deshabilitado. |
CA5371: Usar XmlReader para leer el esquema | El procesamiento de esquemas XML y DTD que no son de confianza puede habilitar la carga de referencias externas peligrosas. El uso de un XmlReader con un solucionador seguro o con el procesamiento de esquemas en línea XML y DTD deshabilitado lo restringe. |
CA5372: Usar XmlReader para XPathDocument | El procesamiento de XML a partir de datos que no son de confianza puede cargar referencias externas peligrosas, que se pueden restringir mediante un XmlReader con un solucionador seguro o con el procesamiento de DTD deshabilitado. |
CA5373: No usar la función de derivación de clave obsoleta | Esta regla detecta la invocación de métodos de derivación de claves débiles System.Security.Cryptography.PasswordDeriveBytes y Rfc2898DeriveBytes.CryptDeriveKey . System.Security.Cryptography.PasswordDeriveBytes usaba un algoritmo débil PBKDF1. |
CA5374: No utilizar XslTransform | Esta regla comprueba si se crean instancias de System.Xml.Xsl.XslTransform en el código. System.Xml.Xsl.XslTransform ahora está obsoleto y no debe usarse. |
CA5375: No usar la firma de acceso compartido de la cuenta | Una SAS de cuenta puede delegar el acceso para leer, escribir y eliminar operaciones en contenedores de blobs, tablas, colas y recursos compartidos de archivos que no están permitidos con SAS de servicio. Sin embargo, no es compatible con las directivas de nivel de contenedor y tiene menos flexibilidad y control sobre los permisos que se conceden. Una vez que los usuarios malintencionados la obtengan, la cuenta de almacenamiento estará en peligro fácilmente. |
CA5376: Usar HttpsOnly con SharedAccessProtocol | SAS es información confidencial que no se puede transportar en texto sin formato en HTTP. |
CA5377: Usar una directiva de acceso de nivel de contenedor | Una directiva de acceso de nivel de contenedor se puede modificar o revocar en cualquier momento. Proporciona mayor flexibilidad y control sobre los permisos que se conceden. |
CA5378: No deshabilitar ServicePointManagerSecurityProtocols | Establecer DisableUsingServicePointManagerSecurityProtocols en true limita las conexiones de seguridad de la capa de transporte (TLS) de Windows Communication Framework (WCF) al uso de TLS 1.0. Esa versión de TLS quedará en desuso. |
CA5379: Ensure key derivation function algorithm is sufficiently strong (Asegurar que el algoritmo de función de derivación de claves es suficientemente seguro) | De forma predeterminada, la clase Rfc2898DeriveBytes usa el algoritmo SHA1. Debe especificar el algoritmo hash que se utilizará en algunas sobrecargas del constructor con SHA256 o superior. Tenga en cuenta que la propiedad HashAlgorithm solo tiene un descriptor de acceso get y no tiene un modificador overridden . |
CA5380: No agregar certificados al almacén raíz | Esta regla detecta código que agrega un certificado al almacén de certificados de entidades de certificación raíz de confianza. De forma predeterminada, el almacén de certificados de entidades de certificación raíz de confianza se configura con un conjunto de entidades de certificación públicas que cumplen los requisitos del Programa de certificados raíz de Microsoft. |
CA5381: Asegurar que no se agregan certificados al almacén raíz | Esta regla detecta código que puede agregar un certificado al almacén de certificados de entidades de certificación raíz de confianza. De forma predeterminada, el almacén de certificados de entidades de certificación raíz de confianza se configura con un conjunto de entidades de certificación (CA) públicas que cumplen los requisitos del Programa de certificados raíz de Microsoft. |
CA5382: Usar cookies seguras en ASP.NET Core | Las aplicaciones disponibles a través de HTTPS deben usar cookies seguras, que indican al navegador que la cookie solo se debe transmitir mediante seguridad de la capa de transporte (TLS). |
CA5383: Asegurarse de usar cookies seguras en ASP.NET Core | Las aplicaciones disponibles a través de HTTPS deben usar cookies seguras, que indican al navegador que la cookie solo se debe transmitir mediante seguridad de la capa de transporte (TLS). |
CA5384: No usar el algoritmo de firma digital (DSA) | DSA es un algoritmo de cifrado asimétrico débil. |
CA5385: Usar un algoritmo de Rivest-Shamir-Adleman (RSA) con un tamaño de clave suficiente | Una clave RSA de menos de 2048 bits es más vulnerable a los ataques por fuerza bruta. |
CA5386: Evitar codificar el valor SecurityProtocolType de forma rígida | La seguridad de la capa de transporte (TLS) protege la comunicación entre equipos, normalmente con el protocolo HTTPS. Las versiones de protocolo TLS 1.0 y TLS 1.1 están en desuso, mientras que las versiones TLS 1.2 y TLS 1.3 están actualizadas. En el futuro, TLS 1.2 y TLS 1.3 pueden quedar en desuso. Para asegurarse de que la aplicación sigue siendo segura, evite codificar una versión del protocolo y tenga como objetivo al menos .NET Framework 4.7.1. |
CA5387: No usar una función de derivación de claves débiles con un recuento de iteraciones insuficiente | Esta regla comprueba si se generó una clave criptográfica Rfc2898DeriveBytes con un recuento de iteraciones inferior a 100 000. Un recuento de iteraciones mayor puede ayudar a mitigar los ataques de diccionario que intentan adivinar la clave criptográfica generada. |
CA5388: Garantizar un recuento de iteraciones suficiente al usar una función de derivación de claves débiles | Esta regla comprueba si Rfc2898DeriveBytes generó una clave criptográfica con un recuento de iteraciones inferior a 100 000. Un recuento de iteraciones mayor puede ayudar a mitigar los ataques de diccionario que intentan adivinar la clave criptográfica generada. |
CA5389: No agregar la ruta de acceso del elemento de archivo a la ruta de acceso del sistema de archivos de destino | La ruta de acceso de archivo puede ser relativa y puede dar lugar a un acceso al sistema de archivos fuera de la ruta de destino del sistema de archivos esperada, con una generación de cambios de configuración malintencionados y la ejecución remota de código mediante la técnica conocida como "lay-and-wait". |
CA5390: No codificar la clave de cifrado de forma rígida | Para que un algoritmo simétrico se realice correctamente, solo el remitente y el receptor deben conocer la clave secreta. Cuando una clave está codificada de forma rígida, se detecta fácilmente. Incluso con los archivos binarios compilados, es fácil que los usuarios malintencionados logren la extracción. Una vez que la clave privada está en peligro, el texto cifrado se puede descifrar directamente y ya no está protegido. |
CA5391: Usar tokens antifalsificación en los controladores de ASP.NET Core MVC | El control de una solicitud POST , PUT , PATCH o DELETE sin validar un token antifalsificación puede ser vulnerable a ataques de falsificación de solicitud entre sitios. Un ataque de falsificación de solicitud entre sitios puede enviar solicitudes malintencionadas desde un usuario autenticado a un controlador de ASP.NET Core MVC. |
CA5392: Usar el atributo DefaultDllImportSearchPaths para P/Invoke | De forma predeterminada, las funciones P/Invoke que usan DllImportAttribute sondean un número de directorios, incluido el directorio de trabajo actual de la biblioteca que se va a cargar. Puede tratarse de un problema de seguridad para ciertas aplicaciones, que conducirá al secuestro de DLL. |
CA5393: No usar un valor de DllImportSearchPath no seguro | Podría haber un archivo DLL malintencionado en los directorios de ensamblado y los directorios de búsqueda DLL predeterminados. O, en función de dónde se ejecute la aplicación, podría haber un archivo DLL malintencionado en el directorio de la aplicación. |
CA5394: No usar aleatoriedad no segura | El uso de un generador de números pseudoaleatorios no seguro criptográficamente puede permitir que un atacante prediga qué valor de seguridad se generará. |
CA5395: Falta el atributo HttpVerb para los métodos de acción | Todos los métodos de acción que crean, editan, eliminan o modifican de algún otro modo los datos deben protegerse con el atributo antifalsificación de los ataques de falsificación de solicitudes entre sitios. Realizar una operación GET debería ser una operación segura sin efectos secundarios, que no modifica los datos persistentes. |
CA5396: Establecer HttpOnly en true para HttpCookie | Como medida de defensa en profundidad, asegúrese de que las cookies HTTP confidenciales de seguridad estén marcadas como HttpOnly. Esto indica que los navegadores web deben impedir que los scripts accedan a las cookies. Los scripts malintencionados insertados son una forma habitual de robar cookies. |
CA5397: No usar valores SslProtocols en desuso | La seguridad de la capa de transporte (TLS) protege la comunicación entre equipos, normalmente con el protocolo HTTPS. Las versiones de protocolo anteriores de TLS son menos seguras que TLS 1.2 y TLS 1.3 y es más probable que tengan nuevas vulnerabilidades. Evite las versiones anteriores del protocolo, para minimizar el riesgo. |
CA5398: Evitar valores SslProtocols codificados de forma rígida | La seguridad de la capa de transporte (TLS) protege la comunicación entre equipos, normalmente con el protocolo HTTPS. Las versiones de protocolo TLS 1.0 y TLS 1.1 están en desuso, mientras que las versiones TLS 1.2 y TLS 1.3 están actualizadas. En el futuro, TLS 1.2 y TLS 1.3 pueden quedar en desuso. Para asegurarse de que la aplicación sigue siendo segura, evite codificar de forma rígida una versión del protocolo. |
CA5399: Deshabilitar definitivamente la comprobación de la lista de revocación de certificados HttpClient | Un certificado revocado deja de ser de confianza. Podría ser utilizado por los atacantes para pasar algunos datos malintencionados o robar datos confidenciales en la comunicación HTTPS. |
CA5400: Garantizar que la comprobación de la lista de revocación de certificados HttpClient no está deshabilitada | Un certificado revocado deja de ser de confianza. Podría ser utilizado por los atacantes para pasar algunos datos malintencionados o robar datos confidenciales en la comunicación HTTPS. |
CA5401: No usar CreateEncryptor con un vector de inicialización no predeterminado | La clave de cifrado simétrica debe usar siempre un vector de inicialización que no se repita para evitar los ataques por diccionario. |
CA5402: Usar CreateEncryptor con el vector de inicialización predeterminado | La clave de cifrado simétrica debe usar siempre un vector de inicialización que no se repita para evitar los ataques por diccionario. |
CA5403: No codificar el certificado de forma rígida | El parámetro data o rawData de un constructor X509Certificate o X509Certificate2 está codificado de forma rígida. |
CA5404: No deshabilitar las comprobaciones de validación de tokens | Las propiedades de TokenValidationParameters que controlan la validación de tokens no deben establecerse en false . |
CA5405: No omitir siempre la validación de tokens en delegados | La devolución de llamada asignada a AudienceValidator o LifetimeValidator siempre devuelve true . |
Colaborar con nosotros en GitHub
El origen de este contenido se puede encontrar en GitHub, donde también puede crear y revisar problemas y solicitudes de incorporación de cambios. Para más información, consulte nuestra guía para colaboradores.