it-swarm-es.com

¿A qué prácticas de seguridad deberías conocer al escribir software?

¿Qué diferentes tipos de seguridad existen? ¿Por qué y cuándo deberían ser implementados?

Ejemplo: Prevención de inyección SQL

4
Tamara Wijsman

Prevención desbordamiento de tampón

a Desbordamiento del búfer , o Buffer Overrun , es una anomalía donde un programa , mientras escribe datos a un búfer, invierte el límite del búfer y sobrescribe la memoria adyacente. Este es un caso especial de violación de la seguridad de la memoria.

Los desbordamientos de tampón se pueden activar por entradas que están diseñadas para ejecutar el código, o alterar la forma en que funciona el programa. Esto puede resultar en un comportamiento errático del programa, incluidos los errores de acceso a la memoria, los resultados incorrectos, un choque o una violación de la seguridad del sistema. Por lo tanto, son la base de muchas vulnerabilidades de software y pueden ser explotadas maliciosamente ...

No puedo contar explotaciones que se basan en esto.

5
DavRob60

No soy un experto, pero en mi experiencia, hay varios vectores de ataques conocidos para los sistemas:

Datos de usuario no invalíados

Este es el mecanismo de inyección de búferes clásicos, inyección de SQL, enlace por descarga y es causado por una planificación o educación insuficientes en prácticas de codificación segura. Es importante asegurarse de que los desarrolladores entiendan cómo ¡cualquiera El código inseguro se puede aprovechar para explotar un ataque de día cero en una computadora. Solo porque su sitio web no hace nada particularmente secreto/importante, no significa que el acceso de la raíz en su servidor web no pueda dañar las otras partes de la organización.

¡Seguridad débil

Esto puede ser una mezcla de infraestructura de seguridad, política o solo contraseñas malas. La contraseña más popular del mundo es 'contraseña1', ya que la mayoría de los proveedores de correo electrónico comenzaron a insistir en las contraseñas alfanuméricas, anteriormente fue 'contraseña'. Si un ataque basado en el diccionario puede adivinar la contraseña de los usuarios, la política fue insuficiente.

backgasors

Algunos programadores emprendedores dejan las puertas traseras de acceso rápido en el código en caso de que necesiten saltar y "arreglar" el sistema. Si tiene alguno de estos, deliberado o de otra manera, su sistema es una bomba de tiempo de tictac.

Qué hacer al respecto

  1. Aquí hay una selección útil de episodios de podcast que discuten el tema: http://www.se-radio.net/?s=security&submit=find
  2. Lea las mejores prácticas, por ejemplo, http://www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3daps&field-keywords=writing+secure+code&x=0&y=
  3. Obtenga su código de seguridad/penetración de código.
  4. Manténgase al día con las amenazas actuales y las estrategias de mitigación a través de blogs y artículos en línea: http://www.cert.org/sse/
4
JBRWilkinson

Aplicaciones web:

Basado en el número de ataques: vea las estadísticas por Verizon , OWASP , [~ # ~] whid [~ # ~ ~] y otros: la cosa más importante que puede hacer para mejorar la seguridad de una aplicación web es Implementar la validación de entrada sólida . No confíe en nada, el cliente/navegador lo envíe. Esto podría clasificar mucho su problema de inyección de SQL y ayudará en una serie de otras áreas, incluido el desbordamiento de campo/búfer.

2
Rory Alsop

Depende completamente del tipo de aplicación, lo que podría lograr una explotación potencial y el entorno esperado.

Si está ejecutando en un entorno, asume que está a salvo, podría discutir pocos a ninguno.

Si está escribiendo una aplicación web que está expuesta públicamente, o una aplicación que involucra una API expuesta públicamente, tendría que pensar a través de los escenarios probables como el desfiguración, las presentaciones falsas, las explotaciones de autenticación, obteniendo acceso a los datos que no le pertenecen, etc.

Si está construyendo una aplicación que almacena datos localmente, es posible que deba preocuparse por la seguridad de esos datos, manteniéndolo separado entre los usuarios en un sistema multiusuario, etc.

IMHO No hay ninguna preocupación de seguridad que siempre sean aplicables en cada situación.

1
Bill