Primeros pasos con la seguridad

Introducción de alto nivel a la seguridad de la información

Es un instinto humano básico evaluar el riesgo y aceptar o tomar algún tipo de acción sobre ese riesgo. Esta es la esencia de la seguridad, que es el cuerpo de conocimientos que proporciona un marco en torno a este instinto.

La seguridad define tres conceptos clave en un paradigma triangular: confidencialidad, integridad y disponibilidad (el paradigma CIA).

Si bien es común que la sociedad crea que la seguridad se trata simplemente de proteger la confidencialidad, como desarrollador no se hace nada que no se incluya en algún lugar bajo el estandarte de la seguridad. Por ejemplo, el código se escribe para agregar funciones al software (disponibilidad), para mantener seguras las credenciales (confidencialidad) o para garantizar que la función más simple produzca un resultado consistente y correcto (integridad).

Los tres conceptos a menudo están en desacuerdo por su naturaleza. Imagine que la información de una empresa esté disponible a través de una extranet. Esta disponibilidad abre vectores de ataque que podrían comprometer la confidencialidad de los datos. Del mismo modo, una empresa con demandas onerosas de confidencialidad obstaculizará el deseo de la empresa de poner los datos a disposición de los clientes y socios. O tal vez querían que los datos estuvieran disponibles tan rápido que el desarrollo del sitio se aceleró y provocó filtraciones de datos entre los usuarios, una falta de integridad de los datos.

A raíz de esto, quienquiera o lo que sea que tenga software desarrollado tiene diferentes valores de la CIA. Imagine que un sitio web minorista puede valorar la disponibilidad sobre la integridad o la confidencialidad, mientras que un banco probablemente valorará la confidencialidad sobre la disponibilidad y la integridad. Esto no quiere decir que no se valoren todos en cada caso, sino que cada escenario conlleva diferentes ponderaciones de estos valores en función de los riesgos subyacentes.

En el mundo real, la tríada de la CIA a menudo se agrega con hasta 3 factores adicionales, que forman el hexágono parkeriano: posesión o control, autenticidad y utilidad, y para modelos transaccionales, no repudio. Entonces, como puede ver, no existe un modelo simple que se ajuste a todos los escenarios.

Como desarrollador, la “buena seguridad” consiste en conocer el equilibrio adecuado entre lo que se protege y cómo protegerlo, y esto es muy diferente según el tipo de datos involucrados y los problemas que resuelve el software.

Introducción

La seguridad es un campo muy general y amplio, y toca todos los aspectos del desarrollo, implementación, soporte, entre otras áreas. Según el (ISC)2, hay 10 dominios e incluyen seguridad física, además de los aspectos de “Software”. La intención de la seguridad de la información es proteger la confidencialidad, integridad y disponibilidad de la información. Varios profesionales de la seguridad también han agregado otros aspectos a estos atributos, pero en general, estos parecen ser los más populares. Otro aspecto de la seguridad es que la medida para proteger alguna información no debe costar más que el valor de la información que se protege.

Al principio

Durante el diseño, el arquitecto debe observar qué partes del sistema necesitan acceso restringido y qué partes pueden estar menos protegidas. Por ejemplo, todos pueden tener acceso de lectura a la página web pública de la empresa, pero solo las personas autorizadas pueden editar el contenido.

Para ayudar con las decisiones a tomar y detectar debilidades en el diseño, se debe crear un modelo de amenazas como se documenta por ejemplo aquí en OWASP. Este modelo de amenazas es invaluable cuando se diseña una aplicación segura, ya que arroja luz sobre diferentes perspectivas del sistema en desarrollo, como los activos en cuestión, los niveles de confianza, los puntos de entrada y los flujos de datos. Para que pueda detectar fácilmente las debilidades y los posibles escenarios de ataque para su aplicación.

Un modelo de amenaza es algo que también utilizan los pentesters y hackers serios en la primera fase de una prueba o ataque: recopilar información y juntarla para detectar posibles debilidades.