Documentos de Académico
Documentos de Profesional
Documentos de Cultura
De acuerdo con el informe de Klocwork 2004 se indica que las principales causas de
vulnerabilidades son las siguientes:
Las aplicaciones son amenazadas y atacadas, no solo en su fase de operación, sino que también en todas las fases de su ciclo de vida
Desarrollo: Un programador puede alterar de forma CVSS (COMMON VULNERABILITY SCORING SYSTEM) Es un conjunto de principios de diseño
intencionada el software y buenas prácticas a implantar en el
sistema que categoriza la severidad de una vulnerabilidad,
Distribución e instalación: Ocurre cuando no se protege el SDLC, para detectar, prevenir y corregir
proporcionando un estándar para comunicar las
software los defectos de seguridad en el
características y el impacto de una vulnerabilidad en el
desarrollo y adquisición de
Operación: Cualquier software que se ejecuta en una software.
aplicaciones, de forma que se obtenga
plataforma conectada a la red tiene sus vulnerabilidades software de confianza y robustos frente
minimizar al ataques maliciosos, con el objetivo de
Mantenimiento o sostenimiento: No publicación de
APD Amenazas Avanzadas Persistentes máximo los asegurar su integridad, disponibilidad y
parches de las vulnerabilidades detectadas en el momento
ataques confidencialidad.
oportuno
en la tipo sofisticado de ciberataque capa de
organizado, de rápida progresión, aplicación
diseñado específicamente para acceder y
obtener información de los sistemas de la
organización objetivo.
y, por tanto, en número de vulnerabilidades explotables, es necesario el incluir la seguridad desde principio en el ciclo de vida de desarrollo del software
(SDLC),
Vulnerabilidades y su clasificación
Fallos de diseño
Fallos de implementación Fallos de configuración
Casi todos los fallos que se producen en un software provienen de fallos de implementación y diseño, pero solamente algunos resultan ser
vulnerabilidades de seguridad.
Exploit
Medidas: las organizaciones afectadas toman medidas para mitigar las posibles
pérdidas.
Búsqueda:
Actualización:
PRINCIPIOS DE DISEÑO DE SEGURIDAD DE SOFTWARE
Defensa en profundidad: considerada como una estrategia de protección, consiste en introducir múltiples capas de seguridad, que permiten reducir el
impacto, o que el sistema se vea comprometido.
Aplicación:
Controles: cortafuegos, ids, ips, análisis estático de código, validación de entrada, política de contraseñas.
Presentación:
Controles: cifrado de datos sensibles, sistema de prevención de perdida de datos (DLP), RBAC
Sesión:
Amenazas: bypass de autenticación, spoofing, robo de credenciales, divulgación de datos, ataques de fuerza bruta.
Controles: control de acceso, sesión única y aleatoria, generación de ID, cifrado de transmisión y almacenamiento, niveles de bloqueo de cuentas.
Transporte:
Red:
Controles: cortafuegos de filtrado de paquetes, acl, kerberos, ssh, idp,ips, ipsec, siem , monitoreo de trafico de red (broadcast)
Enlace:
Amenazas: spoofing de dirección mac, bypass de vlan, errores de spanning tree, ataques inalámbricos
Controles: filtrado mac, firewalls, segmentación de vlan, Wireless con autentificación y cifrado fuertes.
Físico:
Controles: virtualización, alta disponibilidad en red de datos y alimentación eléctrica, cctv, ids, sistema de prevención contra incendios.
Normativa:
Controles: políticas de seguridad de la información, organización de la seguridad, procedimientos y estándares, formación y conciencia en seguridad.
Verificación de la cadena de suministros mediante la comprobación del hash, código de firma, aplicados al código ejecutable mediante la validación de la
integridad de está en el momento de la entrega, la instalación o en tiempo de ejecución, para determinar:
Limitar el número de estados posibles en el software favorecer procesos deterministas sobre los no deterministas, evitar funcionalidades innecesarias,
técnicas de sondeo en lugar de interrupciones., desacoplar los componentes y procesos para minimizar las interdependencias, no implementar
características o funciones innecesarias.
Mínimo privilegio.
principio en el que se le concede a un usuario, equipo o proceso un conjunto de restricciones o privilegios para el desempeño de sus tareas autorizadas.
La programación modular ayuda a implementar menos privilegios, además de hacer que el código sea más legible, reutilizable y fácil de mantener
Separación de privilegios:
Asignación de un subconjunto de funciones o tareas de todos los que ofrece el sistema, acceso a los datos necesarios, evitando de esta forma que todas las
entidades sean capaces de acceder a la totalidad o llevar a cabo todas las funciones de superususario.
Servidor web: el usuario final solo requiere la capacidad de leer el contenido publicado e introducir datos en los formularios HTML. El administrador, por el
contrario, tiene que ser capaz de leer, escribir y eliminar contenido y modificar el código de los formularios HTML.
Separación de dominios.
Minimizar la probabilidad de que actores maliciosos obtengan fácilmente acceso a las ubicaciones de memoria u objetos de datos del sistema.
Sistema operativo confiable, Máquinas virtuales, funciones sandboxing, sistemas unix, trusted processor modules (TPM): es el nombre de una especificación
publicada que detalla un criptoprocesador seguro que puede almacenar claves de cifrado para proteger información.
pretende reducir la probabilidad de que un ciberatacante que haya accedido a los datos del programa fácilmente pueda localizar y acceder a los archivos
ejecutables y datos de configuración de este.
La mayoría de las técnicas de separación de los datos de programa, configuración y archivos ejecutables se realizan en la plataforma de ejecución
(procesador más sistema operativo).
Utilizar plataformas con arquitectura Harvard
Datos utilizados por un script en un servidor web deben ser colocados fuera de árbol de documentos de este.
Prohibir a los programas y scripts escribir archivos en directorios escribibles como el de UNIX/TMP.
Almacenar los archivos de datos, configuración y programas ejecutables en los directorios separados del sistema de archivos.
Su objetivo es evitar vulnerabilidades aplicando una serie de principios de validación de las entradas.
Los tipos de aplicaciones que más probabilidad presenten de sufrir este tipo de ataques son las del tipo cliente-servidor, portales web y agentes proxy.
Los ataques que se pueden dar en la carencia de la comprobación de los datos son: desbordamiento de buffer, revelación de información, inyección de
comandos, inyección de código SSI, contenido mal formados, servicios web.
Para evitar este tipo de vulnerabilidades en la validación de entradas se considera: centralizar la lógica de validación de las entradas, asegurarse que la
validación de la entrada no puede ser evitada, confiar en listas blancas y filtras listas negras, validar todas las entradas de usuario, rechazar los contenidos
ejecutables en las entradas provenientes de fuentes no autorizadas, Verificar que los programas que solicitan las llamadas tienen derecho, Validar los datos
de salida.
Su objetivo es generar eventos (logs) de seguridad, para garantizar las acciones realizadas por un ciberatacante se observan y registran.
Su objetivo es reducir al mínimo la cantidad de tiempo que el componente de un software defectuoso o fallido sigue siendo incapaz de protegerse de los
ataques.
SDLC casi inmediatamente perciben una mejora en su capacidad para detectar y eliminar errores de codificación y
debilidades de diseño en el software que producen, antes de que entren en un proceso de distribución e instalación
elementos mcgraw
Cambios en el sistema con nuevos componentes de software o hardware, implica el rehacer el análisis de riesgos y revisar el código de los nuevos
componentes software.
Nuevos defectos de implementación que modifican las especificaciones o del sistema implican nuevas revisiones de código y as pruebas de
seguridad.