¿Cuáles son los problemas de seguridad en el lenguaje C ++?

A2A

  • Uno de los mayores problemas de seguridad con los programas C y C ++ es el desbordamiento del búfer.

Hay muchos tipos de ataques de desbordamiento de búfer (incluidos los ataques de aplastamiento de pila y de montón ).
Se produce un desbordamiento del búfer cuando escribe un conjunto de valores (generalmente una cadena de caracteres) en un búfer de longitud fija y escribe al menos un valor fuera de los límites de ese búfer (generalmente más allá de su final). Se puede producir un desbordamiento del búfer al leer la entrada del usuario en un búfer, pero también puede ocurrir durante otros tipos de procesamiento en un programa.

Les presento una lista de vulnerabilidades de seguridad:

  • Desbordamiento de pila

Desbordamiento de búfer en la pila
Sobrescribir la dirección del remitente
Localización de la posición de la dirección del remitente

  • Desbordamiento de montón

Asignación de memoria gestionada por una lista doblemente vinculada
Desbordamiento de búfer en el montón
Pasos para liberar y unir bloques de memoria
Liberación de bloques de memoria asignados
Mezclando borrar y borrar []

  • Problemas de enteros en C / C ++

Tipos de problemas de enteros
Representación de enteros negativos.
Representación entera usando el complemento de dos
Rangos enteros
La regla de promoción de enteros en C / C ++
Promoción entera de enteros con y sin signo

  • Error de cadena de formato Printf
  • Otras vulnerabilidades de seguridad comunes

Indización de matriz: ¡detecta el error!
Error Unicode

  • Defectos varios

Un ejemplo de fuga de información
Errores de serialización (TOCTTOU)
Archivos temporales / a C ++ TOCTOU vulnerabilidad
Riesgos por mecanismos de señalización.

  • Archivo de riesgos de E / S

Vulnerabilidad transversal del directorio
Vulnerabilidad de enlace simbólico