Compartir a través de


Procedimientos recomendados para la seguridad en C++

Este tema contiene información sobre las herramientas de seguridad y las prácticas recomendadas. El uso de estos recursos y herramientas no hace a las aplicaciones inmunes a los ataques, pero sí menos vulnerables.

Características de seguridad de Visual C++

Esta sección trata sobre características de seguridad integradas en el compilador y vinculador de Visual C++.

  • /GS (Comprobación de seguridad del búfer)
    Esta opción del compilador indica al compilador que inserte código de detección de saturación en las funciones que presentan algún riesgo de seguridad. Cuando se detecta una saturación, se detiene la ejecución. Esta opción está activada de forma predeterminada.

  • /SAFESEH (La imagen tiene controladores de excepciones seguros)
    Esta opción del vinculador, indica al vinculador que incluya en la imagen de salida una tabla que contenga la dirección de cada controlador de excepciones. En tiempo de ejecución, el sistema operativo utiliza esta tabla para asegurarse de que sólo se ejecuten controladores de excepciones legítimos. Esto ayuda a evitar la ejecución de controladores de excepciones incluidos por un ataque malintencionado en tiempo de ejecución. Esta opción se encuentra deshabilitada de forma predeterminada.

  • /NXCOMPAT, /NXCOMPAT (compatible con la prevención de ejecución de datos)
    Estas opciones del compilador y el vinculador habilitan la compatibilidad con la Prevención de ejecución de datos (DEP). DEP protege la CPU ante la ejecución de páginas que no son de códigos.

  • /analyze (Análisis del código de empresa)
    Esta opción del compilador activa el análisis de código que informa de posibles problemas de seguridad como saturaciones del búfer, memoria no inicializada, desreferenciación del puntero null y pérdidas de memoria. Esta opción se encuentra deshabilitada de forma predeterminada. Vea Análisis de código para obtener información general de C/C++ para obtener más información.

  • /DYNAMICBASE (Usar selección aleatoria del diseño del espacio de direcciones)
    Esta opción del vinculador permite compilar una imagen ejecutable que se puede cargar en diferentes ubicaciones de la memoria al comienzo de la ejecución. Esta opción también hace que la ubicación de la pila en la memoria sea menos predecible.

CRT con seguridad mejorada

La Biblioteca en tiempo de ejecución de C (CRT) se ha ampliado para incluir versiones seguras de funciones que presentan un riesgo de seguridad. (La función de copia de cadena strcpy no comprobada, por ejemplo). Las versiones anteriores, no seguras, de estas funciones han quedado obsoletas, por lo que su uso produce advertencias en tiempo de compilación. Se recomienda usar las versiones seguras de estas funciones CRT en lugar de suprimir las advertencias de compilación. Vea Security Features in the CRT para obtener más información.

Biblioteca SafeInt

SafeInt Library ayuda a evitar los desbordamientos de enteros y otros errores explotables que se podrían producir cuando la aplicación realiza operaciones matemáticas. La biblioteca SafeInt incluye SafeInt Class, SafeIntException Class y varias funciones SafeInt Functions.

La clase SafeInt protege ante el desbordamiento de enteros y los ataques de división por cero. Permite controlar las comparaciones entre los valores de tipos diferentes y proporciona dos directivas de control de errores. La directiva predeterminada es para que la clase SafeInt produzca una excepción de clase SafeIntException que indique por qué no se puede completar una operación matemática. La segunda directiva es para que la clase SafeInt detenga la ejecución de programas. También puede definir una directiva personalizada.

Cada función SafeInt protege una operación matemática ante un error explotable. Puede utilizar dos tipos diferentes de parámetros sin tener que convertirlos a mismo tipo. Utilice la clase SafeInt para proteger varias operaciones matemáticas.

Iteradores comprobados

Un iterador comprobado es un iterador que aplica límites del contenedor. De forma predeterminada, cuando un iterador comprobado está fuera de los límites, genera una excepción y finaliza la ejecución de programas. Un iterador comprobado proporciona otros niveles de respuesta que dependen de valores asignados al preprocesador, como _SECURE_SCL_THROWS y _ITERATOR_DEBUG_LEVEL. Por ejemplo, en _ITERATOR_DEBUG_LEVEL=2, un iterador comprobado proporciona comprobaciones de corrección completa en modo de depuración, de las que se puede disponer mediante aserciones. Vea Checked Iterators para obtener más información.

Análisis de código para código administrado

Análisis de código para código administrado, también conocido como FxCop, es una herramienta que comprueba si los ensamblados cumplen las instrucciones de diseño de Microsoft .NET Framework. FxCop analiza el código y los metadatos incluidos en cada ensamblado para comprobar defectos en las áreas siguientes:

  • Diseño de la biblioteca

  • Localización

  • Convenciones de nomenclatura

  • Rendimiento

  • Seguridad

El análisis de código para código administrado se incluye en Visual Studio Application Lifecycle Management, y también se puede descargar desde la dirección https://www.gotdotnet.com/team/fxcop/.

Comprobador de aplicaciones para Windows

Disponible como parte del kit de herramientas de compatibilidad de aplicaciones, Application Verifier (AppVerifier) es una herramienta que puede ayudar a los desarrolladores a identificar posibles problemas de seguridad, compatibilidad con aplicaciones y estabilidad.

AppVerifier supervisa cómo una aplicación utiliza el sistema operativo. Inspecciona el sistema de archivos, el Registro, la memoria y las API mientras se ejecuta la aplicación y recomienda correcciones de código fuente para los problemas que detecta.

El comprobador permite hacer lo siguiente:

  • Verificar posibles errores de compatibilidad de aplicaciones producidos por errores de programación comunes.

  • Examinar una aplicación para ver si tiene problemas relacionados con la memoria.

  • Probar la conformidad de una aplicación con los requisitos de los programas de logotipo actuales como los programas con el logotipo Windows 7 Software y Windows Server 2008 R2.

  • Identificar los problemas de seguridad potenciales de una aplicación.

El Kit de herramientas de compatibilidad de aplicaciones está disponible en la página "Compatibilidad de las aplicaciones" del sitio web TechNet.

Características de seguridad de .NET Framework

Configurar directivas de seguridad describe instrucciones y herramientas para ajustar las directivas de seguridad de .NET Framework.

Cuentas de usuario de Windows

El uso de cuentas de usuario de Windows que pertenecen al grupo Administradores expone a los desarrolladores (y, por extensión, a los clientes) a riesgos de seguridad. Vea Ejecutar como miembro del grupo de usuarios para obtener más información.

Aumentar la seguridad mediante el Control de cuentas de usuario en Windows Vista

El control de cuentas de usuario (UAC) es una característica de Windows Vista para limitar los privilegios de las cuentas de usuario. Para obtener más información, consulte Cómo el control de cuentas de usuario (UAC) afecta a la aplicación.

Vea también

Referencia

System.Security

Conceptos

Cómo el control de cuentas de usuario (UAC) afecta a la aplicación

Otros recursos

Proteger aplicaciones