Guía CSSLP - Dominio 3 - Diseño de Software Seguro
Guía CSSLP - Dominio 3 - Diseño de Software Seguro
Guía CSSLP - Dominio 3 - Diseño de Software Seguro
Una de las fases más importantes del SDLC es la fase de diseño. Durante esta fase, las
especificaciones de software se traducen en planos arquitectónicos que se pueden codificar
durante la fase de implementación (o codificación) que sigue. Cuando esto sucede, es
necesario que la traducción incluya principios de diseño seguro. También es importante
asegurarse de que los requisitos que garantizan la seguridad del software están diseñados
en el software en la fase de diseño. Si bien escribir código seguro es importante para la
garantía del software, la mayoría de los problemas de seguridad del software se han
atribuido a un diseño inseguro o incompleto. Clases completas de vulnerabilidades que no
son sintácticas o relacionadas con el código, como fallas semánticas o de lógica
empresarial, están relacionadas con problemas de diseño. La evaluación de la superficie de
ataque utilizando modelos de amenazas y el modelado de casos de uso indebido (que se
tratan en el capítulo Requisitos de software seguro), la identificación de controles y la
priorización basada en el riesgo para el negocio son todos procesos esenciales de garantía
de software que deben realizarse durante la fase de diseño del desarrollo de software. En
este capítulo, cubriremos los principios y procesos de diseño seguro, y aprenderemos sobre
diferentes arquitecturas y tecnologías, que se pueden aprovechar para aumentar la
seguridad en el software. Terminaremos este capítulo entendiendo la necesidad y la
importancia de realizar revisiones arquitectónicas del diseño de software desde una
perspectiva de seguridad.
Temas
● Procesos de diseño
○ Evaluación de superficie de ataque
○ Modelado de amenazas
○ Identificación de control
○ Priorización de control
○ Documentación
● Consideraciones de diseño
○ Métodos de cifrado, hash y recuperación
○ Autenticación multifactor y registro
○ Principios de diseño de seguridad
○ Interconectividad
○ Interfaces de gestión de seguridad
○ Gestión de identidad
● Arquitectura
○ Computación distribuida
○ Arquitectura orientada a servicios
○ Aplicaciones de Internet enriquecidas
○ Computación generalizada
○ Integración con arquitecturas existentes
○ Software como servicio
● Tecnologías
○ Autenticación y gestión de identidad
○ Gestión de credenciales (por ejemplo, X.509 y SSO)
○ Control de flujo (por ejemplo, proxies, firewalls, middleware)
○ Auditoría (por ejemplo, syslog, IDS e IPS)
○ Protección de datos (por ejemplo, DLP, cifrado y seguridad de la base de
datos)
○ Entorno informático (por ejemplo, lenguajes de programación, virtualización y
sistemas operativos
○ Gestión de derechos digitales (DRM)
○ Integridad (por ejemplo, firma de código)
● Revisión técnica de diseño y arquitectura (por ejemplo, revisión de puntos de interfaz
y diagrama de implementación)
Objetivos
Como CSSLP, se espera que:
Este capítulo cubrirá cada uno de estos objetivos en detalle. Es imperativo que comprenda
completamente los objetivos y esté familiarizado con cómo aplicarlos al software que su
empresa crea o adquiere.
El software que está diseñado correctamente mejora la calidad del software. Además de los
aspectos funcionales y de calidad del software, existen otros requisitos que deben tenerse
en cuenta en su diseño. Algunos de estos otros requisitos incluyen requisitos de privacidad,
globalización, localización y seguridad. En el capítulo Conceptos de software seguro,
aprendimos que el software puede cumplir con todos los requisitos de calidad y aún ser
inseguro, lo que justifica la necesidad de diseñar explícitamente el software teniendo en
cuenta la seguridad.
IBM Systems Sciences Institute, en su trabajo de investigación sobre la implementación de
inspecciones de software, determinó que era casi cien veces más caro corregir errores de
seguridad una vez que el software está en producción que cuando se está diseñando. El
tiempo necesario para solucionar los problemas identificados es más corto cuando el
software aún se encuentra en la fase de diseño. Los ahorros de costos son sustanciales ya
que hay una interrupción mínima o nula en las operaciones comerciales. Además de los
beneficios de ahorro de tiempo y costos antes mencionados, existen varios otros beneficios
de diseñar la seguridad al principio del SDLC. Algunos de estos incluyen los siguientes:
Si bien puede parecer que muchos errores de seguridad están relacionados con una
programación insegura, la mayoría de los errores de seguridad también se basan en la
arquitectura. La línea de demarcación entre cuando un error de seguridad del software se
basa en una arquitectura incorrecta o cuando se debe a una implementación insegura no
siempre es muy clara, ya que el error en sí mismo puede ser el resultado de una falla en la
arquitectura y en la implementación. En la etapa de diseño, dado que no se escribe ningún
código, nos preocupan principalmente los problemas de diseño relacionados con la garantía
del software. En el resto de este capítulo y libro, nos referiremos a los defectos de diseño y
arquitectura que pueden resultar en errores como "fallas" y a las construcciones de
codificación / implementación que pueden causar una brecha en la seguridad como
"errores".
No es tan importante saber qué errores de seguridad constituyen una falla y cuáles un error,
pero es importante comprender que tanto las fallas como los errores deben identificarse y
abordarse de manera adecuada. El modelado de amenazas y las revisiones de diseño de
arquitectura segura, que cubriremos más adelante en este capítulo, son útiles en la
detección de arquitectura (fallas) y problemas de implementación (compras), aunque estos
últimos están determinados principalmente por revisiones de código y ejercicios de prueba
de penetración después de la implementación. Los defectos de la lógica empresarial que se
mencionaron anteriormente son principalmente un problema de diseño. No son fácilmente
detectables al revisar el código. Los escáneres y los sistemas de detección de intrusos
(IDS) no pueden detectarlos, y los firewalls de la capa de aplicación son inútiles en su
protección contra ellos. El descubrimiento de fallas de diseño no sintácticas en las
operaciones lógicas del software es posible gracias a las revisiones de arquitectura y diseño
de seguridad. Las revisiones de arquitectura y diseño de seguridad que utilizan los
resultados de la evaluación de la superficie de ataque, el modelado de amenazas y el
modelado de casos de uso indebido son muy útiles para garantizar que el software no solo
funcione como se espera, sino que no infrinja ninguna política de seguridad al hacerlo. Las
fallas lógicas también se conocen como problemas semánticos. Los defectos son amplias
clases de vulnerabilidades, que a veces también pueden incluir errores de codificación
sintáctica. La validación de entrada insuficiente y la gestión inadecuada de errores y
sesiones son predominantemente defectos arquitectónicos que se manifiestan como errores
de codificación.
Además de diseñar para la funcionalidad del software, también se debe realizar el diseño
para los principios y principios de seguridad. En el capítulo anterior, aprendimos sobre
varios tipos de requisitos de seguridad. En la fase de diseño, consideraremos cómo se
pueden incorporar estos requisitos en la arquitectura y composición del software. En esta
sección, cubriremos cómo se pueden diseñar los requisitos de seguridad identificados y qué
decisiones de diseño se deben tomar en función de las necesidades comerciales.
Comenzaremos con cómo diseñar el software para abordar los elementos de seguridad
básicos de confidencialidad, integridad, disponibilidad, autenticación, autorización y
auditoría, y luego veremos ejemplos de cómo diseñar los principios de diseño seguro
cubiertos en los Conceptos de software seguro. capítulo.
Diseño de confidencialidad
Desde el momento en que se genera la clave hasta el momento en que se elimina por
completo (o se destruye), es necesario protegerla. El mecanismo de intercambio, en sí
mismo, debe ser seguro para que la clave no se revele cuando se comparte la clave.
Cuando la clave se almacena en archivos de configuración o en un módulo de seguridad de
hardware (HSM) como el chip Trusted Platform Modules (TPM) para una mayor seguridad,
debe protegerse mediante mecanismos de control de acceso, seguridad TPM, cifrado y
arranque seguro. mecanismos, que cubriremos en el capítulo Implementación, operaciones,
mantenimiento y eliminación de software.
Algoritmos simétricos
Los algoritmos simétricos se caracterizan por utilizar una única clave para las operaciones
de cifrado y descifrado que se comparte entre el remitente y el receptor. Esto también se
conoce con otros nombres, como criptografía de clave privada, criptografía de clave
compartida o algoritmo de clave secreta. El remitente y el receptor no necesitan ser
humanos todo el tiempo. En el mundo empresarial actual de la informática, los remitentes y
receptores pueden ser aplicaciones o software dentro o fuera de la empresa.
Algoritmos asimétricos
En la criptografía de clave asimétrica, en lugar de utilizar una única clave para las
operaciones de cifrado y descifrado, se utilizan dos claves que están relacionadas
matemáticamente entre sí. Una de las dos claves debe mantenerse en secreto y se conoce
como clave privada, mientras que la otra clave se revela a cualquier persona con quien se
necesiten comunicaciones y transacciones seguras. La clave que se muestra públicamente
a todos se conoce como clave pública. También es importante que sea computacionalmente
inviable derivar la clave privada de la clave pública. Aunque existe una clave privada y una
clave pública en la criptografía de clave asimétrica, se la conoce comúnmente como
criptografía de clave pública.
Tanto la clave privada como la pública se pueden utilizar para el cifrado y el descifrado. Sin
embargo, si un mensaje está cifrado con una clave pública, solo la clave privada
correspondiente puede descifrar ese mensaje. Lo mismo ocurre cuando un mensaje se cifra
con una clave privada. Ese mensaje solo se puede descifrar mediante la clave pública
correspondiente. Esto hace posible que la criptografía de clave asimétrica proporcione
garantía de confidencialidad y de no repudio.
Si Jill quiere enviar un mensaje a Jack y él necesita estar seguro de que nadie más que Jill
le envió el mensaje, Jill puede cifrar el mensaje con su clave privada y Jack usará su clave
pública correspondiente para descifrar el mensaje. Un compromiso en la clave privada de
las partes involucradas puede dar lugar a amenazas de confidencialidad y no repudio. Por
tanto, es de vital importancia proteger el secreto de la clave privada.
Certificados digitales
Cualquiera puede utilizar los certificados digitales para verificar la autenticidad del
certificado en sí, ya que contiene el certificado digital de la autoridad certificadora.
Los certificados de validación extendida (EV) son para mejorar la confianza del usuario y
reducir las amenazas de ataques de phishing. Con el predominio de la informática en línea,
la necesidad de una mayor garantía de identidad en línea y representación de identidades
en línea en el navegador dio lugar a un tipo especial de certificado X.509. Estos se conocen
como certificados de validación extendida (EV). A diferencia de los certificados
tradicionales, que protegen la información solo entre un remitente y un receptor, los
certificados EV también brindan garantía de que los sitios o servidores remotos a los que los
usuarios se conectan son legítimos. Los certificados EV se someten a una validación más
extensa de la identidad del propietario antes de su emisión e identifican a los propietarios de
los sitios a los que se conectan los usuarios y, por lo tanto, abordan los ataques MITM. La
Figura 3.7 ilustra un ejemplo de un certificado de servidor SSL de validación extendida
digital que proporciona información sobre la CA, su validez e información de huellas
dactilares.
Los certificados de editor de software se utilizan para firmar software que se distribuirá
en Internet. Es importante tener en cuenta que estos certificados no garantizan
necesariamente que el código firmado sea seguro para su ejecución, sino que tienen una
función meramente informativa e informan al usuario del software que el certificado está
firmado por una CA de un editor de software de confianza.
Más adelante en este capítulo, aprenderemos sobre los certificados digitales en el contexto
de la infraestructura de clave pública (PKI) y la infraestructura de gestión de privilegios
(PMI). Se trata en la sección Gestión de certificados en Tecnologías.
Firmas digitales
Los certificados contienen en ellos las firmas digitales de las CA que verificaron y emitieron
los certificados digitales. Una firma digital es distinta de un certificado digital. Es similar a la
firma de un individuo en su función, que es autenticar la identidad del remitente del
mensaje, pero en su formato es electrónico. Las firmas digitales no solo proporcionan
verificación de identidad, sino que también garantizan que los datos o el mensaje no hayan
sido manipulados, ya que la firma digital que se utiliza para firmar el mensaje no puede ser
imitada fácilmente por alguien a menos que se vea comprometida. También proporciona no
repudio.
Hay varias consideraciones de diseño que deben tenerse en cuenta al elegir técnicas
criptográficas. Por lo tanto, es imperativo comprender primero los requisitos comerciales
relacionados con la protección de información confidencial o privada. Cuando se
comprenden estos requisitos, se puede elegir un diseño apropiado que se utilizará para
implementar de forma segura el software. Si hay una necesidad de comunicaciones seguras
en las que nadie más que el remitente y el receptor deben conocer un mensaje oculto, se
puede considerar la esteganografía en el diseño. Si es necesario proteger los derechos de
autor y la propiedad intelectual, las técnicas de marca de agua digital son útiles. Si es
necesario garantizar la confidencialidad de los datos en el procesamiento, tránsito,
almacenamiento y archivos, se pueden utilizar técnicas de cifrado o hash.
Diseño de integridad
Los valores de sal son bytes aleatorios que se pueden usar con la función hash para evitar
colisiones y prevenir ataques de diccionario prediseñado. Consideremos lo siguiente: Es
probable que dos usuarios dentro de una gran empresa tengan la misma contraseña. Tanto
John como Jessie tienen la misma contraseña, "tiger123" para iniciar sesión en su cuenta
bancaria. Cuando la contraseña se hash utilizando la misma función hash, debe producir el
mismo valor hash que se muestra en la Figura 3.9. La contraseña, "tiger123" se codifica
mediante la función hash MD5 para generar un valor de hash de tamaño fijo,
"68FAC1CEE85FFE11629781E545400C65".
Aunque los nombres de usuario son diferentes, cuando la contraseña es hash, puede
provocar ataques de suplantación, ya que genera el mismo resultado, donde John puede
iniciar sesión como Jessie o viceversa. Aunque técnicamente, esto no se considera una
colisión hash ya que la entrada es la misma, tales fallas de diseño se pueden mitigar
usando una sal. Al agregar bytes aleatorios (salt) al texto sin formato original antes de
pasarlo a través de la función hash, la salida que se genera para la misma entrada se hace
diferente. Esto mitiga los problemas de seguridad discutidos anteriormente. Se recomienda
utilizar un valor de sal que sea único y aleatorio para cada usuario. Cuando el valor de sal
es "1234ABC" para John y "9876XYZ" para Jessie, la misma contraseña, "tiger123" da
como resultado diferentes valores hash como se muestra en la Figura 3.10.
Algunas de las funciones hash más comunes son MD2, MD4 y MD5, todas diseñadas por
Ronald Rivest; la familia Secure Hash Algorithms (SHA-0, SHA-1, SHA-y SHA-2) diseñada
por NSA y publicada por NIST para complementar las firmas digitales y HAVAL. La serie de
algoritmos Ronald Rivest MD genera una salida de tamaño fijo de 128 bits y se ha
demostrado que no está completamente libre de colisiones. La familia de funciones hash
SHA-0 y SHA-1 generaron una salida fija de tamaño de 160 bits. La familia SHA-2 de
funciones hash incluye SHA-224 y SHA-256, que generan una salida de tamaño de 256 bits
y SHA-384 y SHA-512 que generan una salida de tamaño de 512 bits. HAVAL se distingue
por ser una función hash que puede producir hashes en longitudes variables (128 bits - 256
bits). HAVAL también es flexible para permitir que los usuarios indiquen el número de
rondas (3-5) que se utilizarán para generar el hash para mayor seguridad. Como regla
general, cuanto mayor sea la longitud de bits del valor hash admitido, mayor será la
protección proporcionada, lo que hace que el factor de trabajo del criptoanálisis sea
significativamente mayor. Por tanto, al diseñar el software, es importante tener en cuenta la
longitud de bits del valor hash que se admite. La Tabla 3.2 tabula las diferentes longitudes
de los valores hash que son compatibles con algunas funciones hash comunes.
Otro aspecto importante al elegir la función hash para su uso dentro del software es
averiguar si la función hash ya se ha roto y se considera inadecuada para su uso. La
función hash MD5 es un ejemplo que el CERT de EE. UU. Del Departamento de Seguridad
Nacional (DHS) considera criptográficamente roto. DHS promueve el cambio a la familia
SHA de funciones hash.
Integridad referencial
Aunque hay dos usuarios con el mismo nombre y apellido, "John Smith", el Customer_ID es
único y puede identificar la fila correcta en la base de datos. Los clientes también están
vinculados a sus pedidos mediante su Customer_ID, que es la clave externa en la tabla
ORDER. De esta forma, no es necesario duplicar toda la información del cliente en la tabla
de PEDIDO. La eliminación de duplicados en las tablas se realiza mediante un proceso
llamado Normalización, que se trata más adelante en este capítulo. Cuando se necesita
consultar la base de datos para recuperar todos los pedidos del cliente John Smith cuyo
Customer_ID es 1, se devuelven dos pedidos (Order_ID 101 y 103). En este caso, la tabla
principal es la tabla CUSTOMER y la tabla secundaria es la tabla ORDER. Order_ID es la
clave principal en la tabla ORDER, que, a su vez, se establece como la clave externa en la
tabla ORDER_DETAIL. Para conocer los detalles del pedido realizado por el cliente Mary
Johnson cuyo Customer_ID es 3, podemos recuperar los tres productos que solicitó
haciendo referencia a las relaciones de clave principal y clave externa. En este caso,
además de que la tabla CUSTOMER es el padre de la tabla ORDER, la tabla ORDER, en sí
misma, es padre de la tabla secundaria ORDER_DETAIL.
La integridad referencial asegura que los datos no se queden en un estado huérfano. Esto
significa que si el cliente Mary Johnson se elimina de la tabla CUSTOMER en la base de
datos, todos los detalles de su pedido y pedido correspondientes también se eliminan de las
tablas ORDER y ORDER_DETAIL respectivamente. Esto se conoce como eliminaciones en
cascada. Si no lo hace, los registros estarán presentes en las tablas ORDER y
ORDER_DETAILS como huérfanos con una referencia a un cliente que ya no existe en la
tabla CUSTOMER principal. Cuando se diseña la integridad referencial, se puede configurar
para eliminar todos los registros secundarios cuando se elimina el registro principal o para
no permitir la operación de eliminación de un cliente (registro principal) que tiene pedidos
(registros secundarios), a menos que todos los registros secundarios los registros se
eliminan primero. Lo mismo ocurre en el caso de las actualizaciones. Si por alguna
necesidad comercial, se cambia el Customer_ID de Mary Johnson en la tabla principal
(CUSTOMER), todos los registros posteriores en la tabla secundaria (ORDER) también
deben actualizarse para reflejar el cambio. Esto se conoce como actualizaciones en
cascada.
Las decisiones para normalizar datos en valores atómicos (no duplicados) y establecer
claves primarias y claves externas y sus relaciones, actualizaciones y eliminaciones en
cascada, para asegurar la integridad referencial son consideraciones de diseño importantes
que aseguran la integridad de los datos o la información.
Bloqueo de recursos
Además del hash y la integridad referencial, el bloqueo de recursos se puede utilizar para
asegurar la integridad de los datos o la información. Cuando no se permiten dos
operaciones simultáneas en el mismo objeto (digamos un registro en la base de datos),
porque una de las operaciones bloquea ese registro para que no permita cambios en él,
hasta que completa su operación, se denomina bloqueo de recursos. Si bien esto
proporciona garantía de integridad, es fundamental comprender que si la protección de
bloqueo de recursos no está diseñada correctamente, puede provocar posibles
interbloqueos y la posterior denegación de servicio (DoS). El punto muerto es una condición
cuando dos operaciones compiten entre sí para cambiar el estado de un objeto compartido
y cada una está esperando que la otra libere el objeto compartido que está bloqueado.
Al diseñar software, es necesario considerar los mecanismos de protección que garantizan
que los datos o la información no hayan sido alterados de manera no autorizada o por una
persona o proceso no autorizado, y los mecanismos deben incorporarse en la composición
general del software.
Diseño de disponibilidad
Es necesario prestar especial atención al software y la replicación de datos para que el MTD
y el RTO estén ambos dentro de niveles aceptables. Un solo punto de falla se caracteriza
por no tener capacidades de redundancia y esto puede afectar indeseablemente a los
usuarios finales cuando ocurre una falla. Al replicar datos, bases de datos y software en
múltiples sistemas informáticos, se hace posible cierto grado de redundancia. Esta
redundancia también ayuda a proporcionar un medio para reducir la carga de trabajo en
cualquier sistema en particular.
Diseño de escalabilidad
Cada copia del software o sistema generalmente se denomina nodo, cuando se habla de
escalabilidad.
La escala horizontal significa que se agregan nodos más nuevos al nodo existente.
Un ejemplo de escalamiento horizontal sería instalar copias adicionales del mismo software
o agregar un servidor de caché proxy a la implementación existente de servidores web y de
aplicaciones de uno a dos o más. Se recomienda que se determinen los límites de
escalabilidad del hardware y que el software o sistema esté diseñado para escalabilidad en
lugar de capacidad de hardware. Debe tenerse en cuenta que, si bien el almacenamiento en
caché mejora el rendimiento al reducir el número de viajes de ida y vuelta a los servidores
backend, debe diseñarse cuidadosamente para reducir la probabilidad de problemas de
integridad y divulgación de datos. Si los datos confidenciales se almacenan en caché en el
servidor de caché o en el cliente, pueden dar lugar a la divulgación, si no están protegidos
criptográficamente. Si los datos que se modifican se almacenan en caché antes de realizar
el cambio, pueden producirse problemas de integridad de los datos. El diseño de software
seguro también debe determinar y tener en cuenta la configuración de Tiempo de vida (TTL)
para la caché para que la caché no se almacene indefinidamente después de que haya
transcurrido el tiempo de la ventana de caché. La regla general es que cuanto más críticos
sean los datos en caché, menor será el tiempo que se debe configurar para que se retengan
en el caché.
Diseño de autenticación
Diseño de autorización
Cuando se utilizan roles para la autorización, el diseño debe garantizar que no haya roles
en conflicto que eludan el principio de separación de funciones. Por ejemplo, un usuario no
puede desempeñar un papel de cajero y también un papel de auditor para una transacción
financiera. Además, las decisiones de diseño son para asegurar que solo el conjunto
mínimo de derechos se otorgue explícitamente al usuario o recurso, lo que respalda el
privilegio mínimo. Por ejemplo, a los usuarios de la cuenta de grupo "Invitado" o "Todos"
solo se les debe permitir derechos de lectura y no se debe permitir ninguna otra operación.
Diseño de responsabilidad
Aunque a menudo se pasa por alto, se ha demostrado que el diseño para auditoría es
extremadamente importante en caso de una infracción, principalmente con fines forenses,
por lo que debe tenerse en cuenta en el diseño del software desde el principio. Los datos de
registro deben incluir los aspectos de "quién", "qué", "dónde" y "cuándo" de las operaciones
del software. Como parte del "quién", es importante no olvidar a los actores no humanos,
como los procesos y servicios por lotes o los demonios.
Los datos confidenciales nunca deben registrarse en forma de texto sin formato. Digamos
que los requisitos exigen registrar los intentos de autenticación fallidos. Entonces es
importante verificar con la empresa si es necesario registrar la contraseña que se
proporciona cuando falla la autenticación. Si los requisitos exigen explícitamente que se
registre la contraseña después de una autenticación fallida, entonces es importante diseñar
el software para que la contraseña no se registre en texto sin formato. Los usuarios a
menudo escriben mal sus contraseñas y el registro de esta información puede conducir a
una posible violación de la confidencialidad y comprometer la cuenta. Por ejemplo, si el
software está diseñado para registrar la contraseña en texto plano y el usuario Scott cuya
contraseña es "tigre" la escribe mal como "tigwr", alguien que tenga acceso a los registros
puede adivinar fácilmente la contraseña del usuario.
El diseño también debe tener en cuenta los mecanismos de protección del propio tronco; y
el mantenimiento de la cadena de custodia de los troncos garantizará que los troncos sean
admisibles en los tribunales. La validación de la integridad de los registros se puede lograr
mediante el hash de las imágenes de antes y después de los registros y verificando sus
valores de hash. La auditoría junto con otros controles de seguridad, como la autenticación,
puede proporcionar un no repudio. Es preferible diseñar el software para registrar
automáticamente el principal autenticado y la marca de tiempo del sistema, y no dejar que lo
defina el usuario, para evitar posibles problemas de integridad. Por ejemplo, utilizando
Request. ServerVariables [LOGON_USER] en una aplicación web IIS o la función del
sistema getDate () incorporada de T-SQL en SQL Server es preferible a pasar un nombre
principal definido por el usuario o una marca de tiempo.
Privilegios mínimos
Las buenas prácticas de ingeniería de software aseguran que los módulos de software sean
altamente cohesivos y estén débilmente acoplados al mismo tiempo. Esto significa que las
dependencias entre módulos serán débiles (débilmente acopladas) y cada módulo será
responsable de realizar una función discreta (altamente cohesiva).
Cuando el diseño divide la funcionalidad del software en dos o más condiciones, todas las
cuales deben cumplirse antes de que se pueda completar una operación, se denomina
separación de funciones. El uso de claves divididas para la funcionalidad criptográfica es un
ejemplo de separación de funciones en el software. Se necesitan claves para las
operaciones de cifrado y descifrado. En lugar de almacenar una clave en una única
ubicación, dividir una clave y almacenar las partes en diferentes ubicaciones, con una parte
en el registro del sistema y la otra en un archivo de configuración, proporciona más
seguridad. El diseño del software debe tener en cuenta las ubicaciones para almacenar
claves, así como los mecanismos para protegerlas.
Defensa en profundidad
Fail secure es el principio de seguridad que garantiza que el software funcione de manera
confiable cuando se ataca y se recupere rápidamente en un estado normal de negocio y
seguro en caso de falla de diseño o implementación. Su objetivo es mantener la resistencia
(confidencialidad, integridad y disponibilidad) del software estableciendo un estado seguro
de forma predeterminada. La seguridad ante fallos es principalmente una consideración de
diseño de disponibilidad, aunque también proporciona confidencialidad e integridad. Es
compatible con el diseño y los aspectos predeterminados de la iniciativa SD3, lo que implica
que el software o sistema es seguro por diseño, seguro por defecto y seguro por
implementación. En el contexto de la seguridad del software, "a prueba de fallas" se puede
usar indistintamente con "a prueba de fallas", que se observa comúnmente en la seguridad
física.
Algunos ejemplos de diseño seguro contra fallas en software incluyen los siguientes:
En el dominio de Secure Software Concepts, notamos que uno de los desafíos para la
implementación de la seguridad es el compromiso que ocurre entre la usabilidad del
software y las características de seguridad que deben diseñarse e integrarse. Con la noble
intención de aumentar la usabilidad de los desarrolladores de software a menudo diseñan y
codifican con más funcionalidad de la necesaria. Esta funcionalidad adicional se conoce
comúnmente como "campanas y silbidos". Un buen indicador de qué características del
software son “campanas y silbidos” innecesarios es revisar la matriz de trazabilidad de
requisitos (RTM) que se genera durante la fase de recopilación de requisitos del proyecto de
desarrollo de software. Las características de campanas y silbatos nunca serán parte del
RTM. Si bien dicha funcionalidad adicional puede aumentar la experiencia del usuario y la
usabilidad del software, aumenta la superficie de ataque y es contraria a la economía de los
mecanismos, el principio de diseño seguro, que establece que cuanto más complejo es el
diseño del software, es más probable que exista vulnerabilidades. Un diseño más simple
implica programas fáciles de entender, menor superficie de ataque y menos enlaces débiles.
Con una superficie de ataque reducida, hay menos oportunidades de fallas y cuando
ocurren fallas, el tiempo necesario para comprender y solucionar los problemas también es
menor. Los beneficios adicionales de la economía de mecanismos incluyen la facilidad para
comprender la lógica del programa y los flujos de datos y menos inconsistencias. La
economía del mecanismo en términos simples también se conoce como el principio KISS
(Keep It Simple Stupid) y, en algunos casos, como el principio de complejidad innecesaria.
La programación modular no solo respalda el principio de privilegio mínimo, sino que
también respalda el principio de economía de mecanismos.
Mediación completa
Si bien esto no es tan frecuente hoy como solía ser, problemas de diseño similares todavía
son evidentes en el software. No verificar los derechos de acceso cada vez que un sujeto
solicita acceso a objetos viola el principio de mediación completa. La mediación completa es
un principio de seguridad que establece que las solicitudes de acceso deben ser mediadas
cada vez, cada vez, para que la autoridad no se eluda en solicitudes posteriores. Impone
una vista de todo el sistema del control de acceso. Recordar los resultados de la verificación
de autoridad, como se hace cuando las credenciales de autenticación se almacenan en
caché, puede aumentar el rendimiento; sin embargo, el principio de mediación completa
requiere que los resultados de una verificación de autoridad se examinen con escepticismo
y se actualicen sistemáticamente ante el cambio. Por lo tanto, el almacenamiento en caché
puede conducir a un mayor riesgo de seguridad de omisión de autenticación, secuestro de
sesión y ataques de reproducción, y ataques de intermediario (MITM). Por lo tanto, debe
evitarse, si es posible, diseñar el software para que se base únicamente en el
almacenamiento en caché basado en cookies de las credenciales de autenticación del lado
del cliente.
Diseño abierto
Por lo tanto, el diseño del software debe tener en cuenta la necesidad de dejar el diseño
abierto pero mantener la implementación de los mecanismos de protección independiente
del diseño. Además, si bien la seguridad a través de la oscuridad puede aumentar el factor
de trabajo que necesita un atacante y proporcionar cierto grado de defensa en profundidad,
no debería ser el mecanismo de seguridad único y principal del software. Se recomienda
aprovechar los estándares de la industria examinados públicamente, probados y probados,
en lugar de desarrollar a medida el propio mecanismo de protección. Por ejemplo, los
algoritmos de cifrado, como el Estándar de cifrado avanzado (AES) y el Estándar de cifrado
de datos triple (3DES), son examinados públicamente y han sido sometidos a análisis,
pruebas y revisiones de seguridad elaborados por la comunidad de seguridad de la
información. El funcionamiento interno de estos algoritmos está abierto a cualquier revisor, y
la revisión pública puede arrojar luz sobre cualquier debilidad potencial. La clave que se
utiliza en la implementación de estos algoritmos probados es lo que debe mantenerse en
secreto.
Algunos de los aspectos fundamentales del principio de diseño abierto son los siguientes:
Los mecanismos menos comunes es el principio de seguridad por el cual los mecanismos
comunes a más de un usuario o proceso están diseñados para no ser compartidos. Dado
que los mecanismos compartidos, especialmente aquellos que involucran variables
compartidas, representan una ruta de información potencial, los mecanismos que son
comunes a más de un usuario y de los que dependen todos los usuarios deben
minimizarse. El diseño debe compartimentar o aislar el código (funciones) por roles de
usuario, ya que esto aumenta la seguridad del software al limitar la exposición. Por ejemplo,
en lugar de tener una función o biblioteca que se comparte entre miembros con roles de
supervisor y no supervisor, se recomienda tener dos funciones distintas, cada una de las
cuales cumple su rol respectivo.
Aceptabilidad psicológica
Uno de los principales desafíos para lograr que los usuarios adopten la seguridad es que
sienten que la seguridad suele ser muy compleja. Con un aumento en los ataques a las
contraseñas, muchas empresas resolvieron implementar reglas de contraseña seguras,
como la necesidad de tener contraseñas alfanuméricas y de mayúsculas y minúsculas que
deben tener una longitud determinada. Además, estas contraseñas complejas a menudo
deben cambiarse periódicamente. Si bien esto redujo la probabilidad de forzar o adivinar
contraseñas, se observó que los usuarios tenían dificultades para recordar contraseñas
complejas. Por lo tanto, anularon el efecto que las fuertes reglas de contraseñas trajeron al
anotar sus contraseñas y pegarlas debajo de sus escritorios y, en algunos casos, incluso en
las pantallas de sus computadoras. Este es un ejemplo de mecanismos de protección de la
seguridad que no eran psicológicamente aceptables y, por lo tanto, no eran efectivos.
Los usuarios no deben tener una carga adicional como resultado de la seguridad y los
mecanismos de protección no deben hacer que el acceso al recurso sea más difícil que si
los mecanismos de seguridad no estuvieran presentes. La accesibilidad y la usabilidad no
deben verse obstaculizadas por los mecanismos de seguridad, ya que de lo contrario, los
usuarios optarán por apagar o eludir los mecanismos, neutralizando o anulando cualquier
protección diseñada.
Es posible que haya escuchado el dicho: "Una cadena es tan fuerte como sus eslabones
más débiles". Este principio de seguridad establece que la resistencia de su software contra
los intentos de piratas informáticos dependerá en gran medida de la protección de sus
componentes más débiles, ya sea el código, el servicio o una interfaz. Una avería en el
eslabón más débil resultará en una infracción de seguridad.
Otro enfoque de este concepto relacionado con la seguridad es que "una cadena es tan
débil como sus eslabones más fuertes". Independientemente del enfoque que se adopte, lo
importante es tener en cuenta que al diseñar software, se debe prestar especial atención
para que no haya componentes explotables.
Es importante reconocer que es posible que no sea posible diseñar para cada uno de estos
principios de seguridad en su totalidad dentro de su software, y que pueden ser necesarias
decisiones de compensación sobre la medida en que estos principios pueden diseñarse.
Por ejemplo, si bien el SSO puede mejorar la experiencia del usuario y aumentar la
aceptabilidad psicológica, contradice el principio de mediación completa, por lo que es
necesaria una decisión comercial para determinar hasta qué punto el SSO está diseñado en
el software o para determinar que ni siquiera es una opción. considerar. Las
consideraciones de diseño de SSO también deben tener en cuenta la necesidad de
garantizar que no haya un solo punto de falla y que se tomen las medidas de mitigación
adecuadas y en profundidad. Además, implementar una mediación completa mediante la
verificación de los derechos y privilegios de acceso, cada vez y siempre, puede tener un
impacto grave en el rendimiento del software. Por lo tanto, este aspecto del diseño debe
considerarse y tenerse en cuenta cuidadosamente, junto con otras estrategias de defensa
en profundidad, para mitigar la vulnerabilidad sin disminuir la experiencia del usuario o la
aceptabilidad psicológica. El principio del mecanismo menos común puede parecer
contradictorio con el principio de aprovechar los componentes existentes, por lo que es
necesario tener en cuenta un diseño cuidadoso para equilibrar los dos, en función de las
necesidades y requisitos comerciales, sin reducir la seguridad del software. Si bien la
aceptabilidad psicológica requeriría que los usuarios sean notificados del error del usuario,
se deben tener consideraciones de diseño cuidadosas para garantizar que los errores y
excepciones se manejen explícitamente y de naturaleza no detallada para que no se revele
la información de configuración interna del sistema. El principio de los mecanismos menos
comunes puede parecer diametralmente opuesto al principio de aprovechar los
componentes existentes, y se puede argumentar que centralizar la funcionalidad en los
componentes comerciales que se pueden reutilizar es análogo a poner todos los huevos en
una canasta, lo cual es cierto. Sin embargo, las estrategias adecuadas de defensa en
profundidad deben tenerse en cuenta en el diseño al elegir aprovechar los componentes
existentes.
Además de las consideraciones de diseño de seguridad del software central que se trataron
anteriormente, existen otras consideraciones de diseño que deben tenerse en cuenta al
crear software. Estos incluyen los siguientes:
*Diseño de interfaz
*Interconectividad
Diseño de interfaz
Interfaz de usuario
Si estas API no son seguras, pueden permitir a los piratas informáticos explotar el software.
Esto es de particular importancia, especialmente en soluciones de software como servicio
(SaaS) como en el caso de la computación en la nube y en las aplicaciones de redes
sociales. La publicación de las principales amenazas para la computación en la nube de
Cloud Security Alliance (CSA) enumera las interfaces y API inseguras, en segundo lugar,
solo superadas por el abuso y el uso nefasto de los recursos de la computación en la nube.
Los proveedores de servicios en la nube exponen interfaces o API para que sus inquilinos
(clientes / clientes) y socios utilicen y gestionen el aprovisionamiento, la orquestación y la
supervisión. La seguridad de los servicios en la nube está directamente relacionada con la
seguridad de las API que exponen. Los sitios de redes sociales como Facebook y Twitter
también exponen el acceso a su funcionalidad utilizando API y cuando diseña aplicaciones
que aprovechan o interactúan con estas API, es imperativo asegurarse de que estas API no
puedan ser explotadas, poniendo su aplicación en riesgo.
Las interfaces de administración de seguridad (SMI) son aquellas interfaces que se utilizan
para configurar y administrar la seguridad del software en sí. Estas son interfaces
administrativas con altos niveles de privilegios. Los SMI se utilizan para tareas de
aprovisionamiento de usuarios, como agregar usuarios, eliminar usuarios, habilitar o
deshabilitar cuentas de usuario, así como otorgar derechos y privilegios a roles, cambiar la
configuración de seguridad, configurar los ajustes del registro de auditoría y pistas de
auditoría, registro de excepciones, etc. Un ejemplo de SMI son las pantallas de
configuración que se utilizan para administrar la configuración de seguridad de un enrutador
doméstico. La Figura 3.15 muestra el SMI para un enrutador doméstico D-Link.
Desde el punto de vista de la seguridad, es fundamental que estas SMI también se modelen
como amenazas y que se diseñe la protección adecuada, ya que estas interfaces
generalmente no se capturan explícitamente en los requisitos. A menudo se observa que
son el eslabón más débil, ya que se pasan por alto cuando se modelan las amenazas al
software.
Las consecuencias de violar una interfaz administrativa suelen ser graves porque el
atacante termina ejecutándose con privilegios elevados. Un compromiso de un SMI puede
llevar a un compromiso total, divulgación y amenazas de alteración y destrucción, además
de permitir que los atacantes los utilicen como puertas traseras para instalar malware
(troyanos, rootkits, spyware, adware, etc.). No solo deben implementarse fuertes controles
de protección para proteger SMI, sino que estos deben ser capturados explícitamente en los
requisitos, ser parte del ejercicio de modelado de amenazas y diseñarse de manera precisa
y segura. Algunos de los controles de protección recomendados para estas interfaces
sensibles y con privilegios elevados son los siguientes:
Interfaces de registro
Interconectividad
En el mundo en el que vivimos hoy en día, rara vez se desarrolla e implementa software en
un silo. La mayoría de las aplicaciones y el software comerciales están altamente
interconectados, lo que crea posibles puertas traseras para los atacantes si se diseñan sin
tener en cuenta la seguridad. El diseño del software debe tener en cuenta la consideración
del diseño para garantizar que el software sea confiable, resistente y recuperable. La
compatibilidad ascendente y descendente del software debe diseñarse explícitamente. Esto
es importante cuando se trata de delegación de confianza, inicio de sesión único (SSO),
autenticación basada en tokens y uso compartido de claves criptográficas entre
aplicaciones. Si una aplicación ascendente tiene datos cifrados utilizando una clave en
particular, debe haber un medio seguro para transferir la clave a las aplicaciones
descendentes que necesitarán descifrar los datos. Cuando se agregan datos o información
de varias fuentes, como es el caso de los Mashups, el diseño del software debe tener en
cuenta la confianza que existe o que debe establecerse entre las entidades interconectadas.
La programación modular con las características de alta cohesión y acoplamiento flexible
ayuda con el diseño de interconectividad, ya que reduce las complejas dependencias entre
los componentes conectados, manteniendo cada entidad lo más discreta y unitaria posible.
Una explicación completa de la informática RASQ está más allá del alcance de este libro,
pero un CSSLP debe conocer este concepto y sus beneficios. Aunque la puntuación RASQ
puede no ser verdaderamente indicativa de la verdadera exposición de un producto de
software a los ataques o de su estado de seguridad, puede usarse como una medida para
determinar la mejora de la calidad y seguridad del código entre versiones de software. La
idea principal es mejorar la seguridad del software reduciendo la puntuación RASQ en
versiones posteriores. Esto también se puede ampliar dentro del SDLC, en el que la
puntuación RASQ se puede calcular antes y después de la prueba del software y / o antes y
después del despliegue del software para reflejar la mejora en la calidad del código y,
posteriormente, la seguridad. Se recomienda la lectura del artículo de los investigadores
Howard, Pincus y Wing para obtener información adicional sobre RASQ.
Modelado de amenazas
Las amenazas al software son múltiples. Van desde amenazas de divulgación contra la
confidencialidad hasta amenazas de alteración contra la integridad y amenazas de
destrucción contra la disponibilidad, omisión de autenticación, escalada de privilegios,
suplantación, eliminación de archivos de registro, ataques de intermediario, secuestro y
reproducción de sesiones, inyección, scripting, desbordamiento y ataques criptográficos.
Cubriremos los tipos de ataques predominantes con más detalle en el capítulo
Implementación segura de software.
Al igual que las diversas amenazas al software, también existen varias fuentes / agentes de
amenazas. Estos pueden ser humanos o no humanos.
Los agentes de amenazas humanas van desde el usuario ignorante que causa un error
simple de usuario hasta los ciberdelincuentes organizados que pueden orquestar amenazas
infames y desastrosas a la seguridad nacional y corporativa. La Tabla 3.4 tabula los
diversos agentes de amenaza humana para el software en función de su creciente grado de
conocimiento y la extensión del daño que pueden causar.
Los malwares proliferativos, como sugieren sus nombres, tienen como objetivo propagar
sus operaciones maliciosas a otras redes, hosts y aplicaciones que están conectadas a la
víctima. Los virus y gusanos son ejemplos de malware proliferativo. Los virus y gusanos son
las formas más comunes de malware proliferativo.
Un gusano, por otro lado, funciona de manera similar a un virus, pero no necesariamente
requiere que la víctima infectada sobreviva, ya que pueden propagarse e infectar otros
sistemas, redes, hosts o aplicaciones. Los gusanos generalmente no requieren la
interacción humana para propagarse, mientras que los virus generalmente lo hacen.
Algunos ejemplos de gusanos conocidos incluyen el gusano Nimbda, el gusano Sasser, el
gusano SQL Slammer y el gusano Samy.
Los autores Hoglund y Butler en su libro “Rootkits”, definen un rootkit como “un conjunto
(kit) de programas y código que permite a un atacante mantener un acceso indetectable
permanente o consistente a“ root ”, el usuario más poderoso de una computadora. " Sin
embargo, debe reconocerse que intrínsecamente, los rootkits no son una amenaza para la
seguridad y existen varias razones válidas y legítimas para desarrollar este tipo de
tecnología. Estos incluyen el uso de rootkits para fines de resolución de problemas remotos,
situaciones de espionaje y aplicación de la ley autorizadas y consentidas y también
monitorear el comportamiento del usuario. Los rootkits se ejecutan en modo usuario o en
modo kernel. Los usuarios y programas maliciosos generalmente usan rootkits para
modificar el sistema operativo (SO) y se hacen pasar por programas legítimos, como
módulos cargables del kernel (* nix OS) o controladores de dispositivos (sistema operativo
Windows). Dado que se hacen pasar por programas legítimos, son indetectables. Estos
rootkits se pueden usar para instalar registradores de pulsaciones de teclas, modificar
archivos de registro, instalar canales encubiertos y evadir la detección y eliminación.
Los rootkits se utilizan principalmente para control remoto o para escuchas de software.
Los piratas informáticos y el software malintencionado (malware), como el software espía,
intentan explotar las vulnerabilidades del software para instalar rootkits en sistemas sin
parchear ni reforzados. Por lo tanto, es imperativo que la seguridad del software que
creamos o compramos no permita comprometer la computación confiable al convertirse en
víctimas del uso malicioso de rootkits.
Una clase especial de amenaza que aprovecha los agentes de amenazas humanos y no
humanos que prevalecen en la actualidad son las amenazas persistentes avanzadas. Las
amenazas persistentes avanzadas (Advanced Persistent Threats APT) se refieren a
ataques de piratería sofisticados que explotan el software y el sistema durante un largo
período de tiempo y, en su mayor parte, pasan desapercibidos, mientras que el agente de
amenaza (malware) se encuentra en el entorno informático de la víctima. Se dice que son
"avanzados" porque los agentes de amenaza detrás de estos ataques no son los habituales
script kiddies, sino aquellos que tienen una gama completa de técnicas de recopilación de
inteligencia y evasión de intrusiones. Se dice que son "avanzados" porque los agentes de
amenaza detrás de estos ataques no son los habituales script kiddies, sino aquellos que
tienen una gama completa de técnicas de recopilación de inteligencia y evasión de intrusos.
Se dice que son "persistentes" porque los agentes de amenazas tienen como objetivo
mantener el acceso continuo a largo plazo (persistente) al objetivo, en contraste con las
amenazas que operan como exploits rápidos de un solo golpe. Generalmente, las
amenazas de acceso persistente "lento y lento" no se detectan. Recientemente, las APT
han ganado mucha atención de los medios porque estos ataques se han dirigido a
gobiernos, empresas y activistas políticos. Cabe señalar que, si bien las APT aprovechan el
malware para realizar sus ataques, un componente importante de las APT involucra a
operadores humanos altamente capacitados, motivados, bien financiados y organizados.
Beneficios
El beneficio principal del modelado de amenazas durante la fase de diseño del proyecto es
que las fallas de diseño se pueden abordar antes de escribir una sola línea de código, lo
que reduce la necesidad de rediseñar y corregir los problemas de seguridad en el código en
un momento posterior. Una vez que se genera un modelo de amenaza, debe visitarse y
actualizarse iterativamente a medida que avanza el proyecto de desarrollo de software. En
la fase de diseño, el desarrollo de modelos de amenazas comienza cuando los equipos de
arquitectura de software identifican las amenazas al software. El equipo de desarrollo puede
utilizar el modelo de amenazas para implementar controles y escribir código seguro. Los
evaluadores pueden usar los modelos de amenazas no solo para generar casos de prueba
de seguridad, sino también para validar los controles que deben estar presentes para
mitigar las amenazas identificadas en los modelos de amenazas. Finalmente, el personal de
operaciones puede utilizar modelos de amenazas para configurar el software de forma
segura, de modo que todos los puntos de entrada y salida tengan los controles de
protección necesarios. De hecho, un modelo de amenazas holístico es aquel que ha
recibido aportaciones de representantes de los equipos de diseño, desarrollo, pruebas y
despliegue y operaciones.
Desafíos
Aunque los beneficios del modelado de amenazas son amplios, el modelado de amenazas
conlleva algunos desafíos, los más comunes de los cuales se detallan a continuación.
Modelado de amenazas:
● Puede ser un proceso que requiere mucho tiempo cuando se realiza correctamente.
● Requiere un SDLC bastante maduro.
● Requiere la capacitación de los empleados para modelar correctamente las
amenazas y abordar las vulnerabilidades.
● A menudo se considera que no es una actividad muy preferencial. Los
desarrolladores prefieren la codificación y el personal de control de calidad prefieren
las pruebas al modelado de amenazas.
● A menudo no está directamente relacionado con las operaciones comerciales y es
difícil mostrar un retorno de la inversión demostrable para los modelos de amenazas.
Prerrequisitos
Antes de profundizar en el proceso de modelado de amenazas, respondamos primero a la
pregunta sobre cuáles son algunos de los requisitos previos para el modelado de
amenazas. Para que los modelos de amenazas sean efectivos dentro de una empresa, es
fundamental cumplir las siguientes condiciones:
● La empresa debe tener políticas y estándares de seguridad de la información
claramente definidos. Sin estos instrumentos de gobierno, la adopción de modelos
de amenazas como parte integral del SDLC dentro de la empresa será un desafío.
Esto se debe a que, cuando los equipos de negocios y de desarrollo retroceden y
eligen no generar modelos de amenazas debido a los desafíos impuestos por el
triángulo de hierro, la organización de seguridad de la información no tendrá una
base sobre la cual hacer cumplir la necesidad del modelado de amenazas.
● La empresa debe conocer los requisitos normativos y de cumplimiento. Así como las
políticas y estándares de la empresa funcionan como instrumentos de gobernanza
interna, armando a la organización de seguridad de la información para hacer
cumplir el modelado de amenazas como parte del SDLC, los requisitos de
cumplimiento y regulatorios funcionan como mandatos de gobernanza externa que
deben tenerse en cuenta en el diseño de software que aborda la seguridad.
● La empresa debe tener un proceso SDLC maduro y claramente definido. Dado que
la actividad de modelado de amenazas se inicia durante la fase de diseño de un
proyecto de desarrollo de software, es importante que la empresa emplee un
enfoque estructurado para el desarrollo de software. El desarrollo ad hoc producirá
modelos de amenazas ad hoc, incompletos e inconsistentes. Además, dado que el
modelado de amenazas es un proceso iterativo y el modelo de amenazas debe
revisarse durante la fase de desarrollo y prueba del proyecto, esas fases deben
formar parte del ciclo de vida del desarrollo de software.
● La empresa tiene un plan para actuar sobre el modelo de amenazas. Las
vulnerabilidades subyacentes que podrían hacer que las amenazas (identificadas
mediante el ejercicio de modelado de amenazas) se materialicen también deben
identificarse y abordarse adecuadamente. El simple hecho de completar un ejercicio
de modelado de amenazas no sirve para proteger el software que se está
diseñando. Generar un modelo de amenaza y no actuar en consecuencia es como
comprar una máquina de ejercicios y no usarla, sino esperar ponerse en forma y
estar en forma. Es necesario actuar sobre el modelo de amenaza. En este sentido,
es imperativo que la empresa capacite a sus empleados para abordar de manera
adecuada las amenazas y vulnerabilidades identificadas. Los programas de
concientización, capacitación y educación para enseñar a los empleados cómo
modelar el software de amenazas y cómo mitigar las amenazas identificadas son
necesarios y críticos para la efectividad del ejercicio de modelado de amenazas.
Proceso
Como CSSLP, es imperativo que uno no solo comprenda los beneficios, los jugadores clave,
los desafíos y los requisitos previos en el desarrollo de un modelo de amenazas, sino que
también debe estar familiarizado con los pasos involucrados en el modelado de amenazas.
Las entradas que se pueden utilizar para identificar los objetivos de seguridad se enumeran
a continuación.
● ■■ Políticas y estándares internos de la empresa
● ■■ Normas, cumplimiento y requisitos de privacidad
● ■■ Requisitos comerciales y funcionales
La figura 3.20 muestra un árbol de ataque con un vector de ataque en su nodo raíz. Cuando
el nodo raíz es un vector de ataque, el nodo hijo de los nodos raíz es la condición no
mitigada o de vulnerabilidad. El siguiente nodo de nivel (nodo hijo de una condición no
mitigada) suele ser la condición mitigada o un control de salvaguardia que se implementará.
Figura 3.20 - Árbol de ataque: vector de ataque en el nodo raíz
También se pueden utilizar los errores de programación más peligrosos de OWASP Top 10
o CWE / SANS Top 25 como punto de partida para identificar los vectores raíz pertinentes a
su aplicación. Es un método de recopilación e identificación de posibles ataques de forma
estructurada y jerárquica. Es un método utilizado por los profesionales de la seguridad
porque permite que el equipo de modelado de amenazas analice las amenazas con mayor
detalle y profundidad. La estructura en forma de árbol proporciona un desglose descriptivo
de varios ataques que el atacante podría usar para comprometer el activo. La creación de
árboles de ataque para su empresa tiene el beneficio adicional de crear una representación
reutilizable de problemas de seguridad, que se puede usar en múltiples proyectos para
enfocar los esfuerzos de mitigación. Los desarrolladores reciben información sobre los tipos
de ataques que se pueden usar contra su software y luego implementan los controles de
protección adecuados, mientras que los equipos de prueba pueden usar los árboles de
ataque para escribir planes de prueba. Las pruebas aseguran que los controles estén en su
lugar y sean efectivos.
Objetivo Descripción
Denegación de
servicio
Cuando se utiliza una categoría de amenazas, existe un alto grado de probabilidad de que
una amenaza en particular pueda tener correlación cruzada con otras amenazas. Por
ejemplo, la elevación de privilegios puede ser el resultado de la suplantación de identidad
debido a la divulgación de información o simplemente el resultado de la falta de controles de
repudio. En tales casos, se recomienda utilizar su mejor criterio al categorizar las
amenazas. Se puede seleccionar la categoría más relevante o documentar todas las
categorías de amenazas aplicables y clasificarlas de acuerdo con la probabilidad de que la
amenaza se materialice.
Dado que es poco probable que abordar todas las amenazas identificadas sea
económicamente viable, es importante abordar las amenazas que plantean el mayor riesgo
primero, antes de abordar aquellas que tienen un impacto mínimo en las operaciones
comerciales. Los rangos de riesgo derivados de la actividad de evaluación de riesgos de
seguridad (SRA) del ejercicio de modelado de amenazas se utilizan para priorizar los
controles que deben implementarse. Los rangos de riesgo cuantitativo generalmente se
clasifican en bandas cualitativas, como Alto, Medio o Bajo, o, según la gravedad de la
amenaza, en Severidad 1, Severidad 2 y Severidad 3. Estas bandas también se conocen
como barras de errores o bandas de errores y no se limitan solo a cuestiones de seguridad.
También hay barras de insectos para mayor privacidad. Las barras de errores ayudan a
priorizar los controles que se implementarán después del diseño.
Hay varias formas de determinar cuantitativa o cualitativamente la clasificación de riesgo de
una amenaza. Estos van desde la metodología heurística Delphi simple, no científica, hasta
una clasificación de riesgo más sólida desde el punto de vista estadístico utilizando la
probabilidad de impacto y el impacto empresarial. Las tres formas comunes de clasificar las
amenazas son:
● ■■ Clasificación Delphi
● ■■ Clasificación promedio
● ■■ Clasificación de probabilidad x impacto (P x I)
Ranking de Delphi
La técnica Delphi de clasificación de riesgos es aquella en la que cada miembro del equipo
de modelado de amenazas hace su mejor estimación sobre el nivel de riesgo de una
amenaza en particular. Durante un ejercicio de clasificación de riesgos de Delphi, se
expresan opiniones individuales sobre el nivel de riesgo de una amenaza particular y las
opiniones expresadas no se cuestionan, sino que se aceptan como se indica. Las personas
identificadas para este ejercicio incluyen tanto a miembros con habilidades a un nivel
experto como a aquellos que no lo son, pero los miembros participantes solo comunican sus
opiniones a un facilitador. Esto es para evitar el dominio de personalidades fuertes que
potencialmente pueden influir en el rango de riesgo de la amenaza. El facilitador debe
proporcionar, de antemano, criterios de clasificación predefinidos (1 - Crítico, 2 - Grave, 3 -
Mínimo) junto con la lista de amenazas identificadas, para garantizar que todos los
miembros utilicen los mismos criterios de clasificación. Los criterios a menudo se basan
simplemente en el impacto potencial de la materialización de la amenaza y el proceso de
clasificación se realiza hasta que existe consenso o confianza en la forma en que se
clasifican las amenazas. Si bien este puede ser un método rápido para determinar el
consenso del potencial de riesgo de una amenaza, es posible que no brinde una imagen
completa del riesgo y debe usarse con moderación y solo junto con otras metodologías de
clasificación de riesgos. Además, los criterios de clasificación de riesgos ambiguos o
indefinidos y los diferentes puntos de vista y antecedentes de los participantes pueden
hacer que los resultados sean diversos y que el proceso en sí sea ineficiente.
Clasificación promedio
Otra metodología para clasificar el riesgo de la amenaza es calcular el promedio de valores
numéricos asignados a las categorías de clasificación de riesgo. Uno de estos marcos de
categorización de clasificación de riesgo es DREADI, que es un acrónimo de Damage
Potential, Reproducibility, Explotabilidad, Usuarios afectados y Discoverability. A cada
categoría se le asigna un rango numérico y se prefiere utilizar un rango más pequeño (como
1 a 3 en lugar de 1 a 10) para que la clasificación sea más definida, las vulnerabilidades
menos ambiguas y las categorías más significativas.
Una vez que se han asignado los valores a cada categoría, se calcula el promedio de esos
valores para dar un número de clasificación de riesgo. Matemáticamente, esto se puede
expresar como se muestra a continuación.
Figura 3.21 - Uso de una clasificación promedio para clasificar varias amenazas de
aplicaciones web.
El rango promedio y la categorización en grupos como Alto, Medio o Bajo se pueden usar
para priorizar los esfuerzos de mitigación.
Clasificación de probabilidad x impacto (P x I)
A partir de este ejemplo, podemos ver que la amenaza Cross-Site Scripting (XSS) y las
amenazas de inyección SQL son de alto riesgo, que deben mitigarse de inmediato, mientras
que las amenazas de reproducción de cookies y secuestro de sesión son de riesgo medio.
Debería haber un plan para mitigarlos lo antes posible. Las amenazas de eliminación de
registros de auditoría y CSRF tienen un rango de riesgo bajo y pueden ser aceptables. Para
priorizar los esfuerzos de estos dos elementos de alto riesgo (inyección SQL y XSS),
podemos usar el rango de riesgo calculado (P x I) o podemos usar la probabilidad de
ocurrencia (P) o el valor del impacto comercial (I). Dado que tanto la inyección SQL como
XSS tienen el mismo valor de impacto comercial de 6, podemos usar el valor de
probabilidad de ocurrencia para priorizar los esfuerzos de mitigación, eligiendo mitigar
primero XSS y luego la inyección SQL, porque el valor de probabilidad de ocurrencia para
XSS es 9, mientras que el valor de probabilidad de ocurrencia para la inyección SQL es 7.
Si bien la metodología Delphi generalmente se enfoca en el riesgo desde un punto de vista
de impacto comercial, la metodología de clasificación promedio, cuando se usa el marco
DREAD, toma en cuenta tanto el impacto comercial (Daño potencial, Usuarios afectados)
como la probabilidad de ocurrencia (Reproducibilidad, Explotabilidad y Descubribilidad); sin
embargo, debido a que se promedian los valores de impacto comercial y probabilidad de
ocurrencia de manera uniforme, el valor del rango de riesgo derivado no da una idea de la
desviación (límites inferior y superior) del promedio. Esto puede conducir a una aplicación
uniforme de los esfuerzos de mitigación a todas las amenazas, por lo que potencialmente se
aplica demasiado esfuerzo de control de mitigación en amenazas que no son realmente
ciertas o muy poco esfuerzo de control de mitigación en amenazas que son serias. La
metodología de clasificación P x I brinda información sobre el riesgo como una medida tanto
de la probabilidad de ocurrencia como del impacto comercial de forma independiente, así
como cuando se consideran en conjunto. Esto permite que el equipo de diseño tenga la
flexibilidad de reducir la probabilidad de que ocurra o aliviar el impacto comercial de forma
independiente o conjunta, una vez que haya utilizado el rango de riesgo P x I para priorizar
dónde enfocar sus esfuerzos de mitigación. Además, la metodología P x I ofrece una
imagen más precisa del riesgo. Tenga en cuenta que en la metodología de clasificación
promedio, a las amenazas de reproducción de cookies y de secuestro de sesiones se les
había asignado un riesgo medio de 2.0. Esto plantea un desafío para el equipo de diseño:
¿qué amenaza se debe considerar mitigar primero? Sin embargo, en la clasificación P x I de
las mismas amenazas, observa que la amenaza de repetición de cookies tiene una
puntuación de riesgo de 24, mientras que la amenaza de secuestro de sesión tiene una
puntuación de riesgo de 21, según la probabilidad de ocurrencia y el impacto comercial.
Esto facilita que el equipo de diseño considere mitigar la amenaza de reproducción de
cookies antes de abordar la amenaza de secuestro de sesión.
Documentar y validar
La importancia de documentar el modelo de amenazas no puede subestimarse porque el
modelado de amenazas es iterativo y, a lo largo del ciclo de vida del proyecto, los controles
de protección para abordar las amenazas identificadas en el modelo de amenazas deben
implementarse, validarse de manera adecuada y el modelo de amenazas en sí. actualizado.
Una vez documentadas las amenazas y los controles, y el riesgo residual, se debe realizar
una validación para garantizar lo siguiente:
● ■■ La arquitectura de la aplicación que se modela (diagrama) es precisa y
contextualmente actual (actualizada).
● ■■ Las amenazas se identifican en cada límite de confianza y para el elemento de
datos.
● ■■ Cada amenaza se ha considerado explícitamente y se han identificado y
mapeado los controles para mitigar, aceptar o evitar las amenazas que abordan.
● ■■ Si se acepta la amenaza, el propietario de la empresa debe determinar y aceptar
formalmente el riesgo residual de esa amenaza.
También es importante revisar el modelo de amenazas y re-validarlo, en caso de que
cambien el alcance y los atributos de la aplicación de software.
Arquitecturas
Dado que los objetivos comerciales y la tecnología cambian con el tiempo, es importante
que las arquitecturas de software sean estratégicas, holísticas y seguras. La arquitectura
debe ser estratégica, lo que significa que el diseño del software tiene en cuenta una
perspectiva a largo plazo y aborda más que solo los objetivos tácticos a corto plazo. Esto
reduce la necesidad de rediseñar el software cuando hay cambios en los objetivos
comerciales o en la tecnología. Al diseñar la arquitectura del software para que sea
altamente cohesiva y poco acoplada, el software se puede escalar con un rediseño mínimo
cuando se requieren cambios. La arquitectura también debe ser holística. Esto significa que
el diseño de software no es solo de naturaleza centrada en TI, sino que también incluye las
perspectivas de la empresa y otras partes interesadas. En una economía global, las
consideraciones locales son también una consideración arquitectónica importante. La
arquitectura holística de software también significa que tiene en cuenta no solo los aspectos
de diseño de personas, procesos y tecnología, sino también los aspectos de red, host y
aplicaciones del diseño de software. La seguridad de la implementación en las diferentes
capas del modelo de referencia de interconexión de sistemas abiertos (OSI) de ISO / IEC
7498-1: 1994 es importante para que no exista un vínculo débil entre la capa física y la capa
de aplicación. La Tabla 3.6 ilustra las diferentes capas del modelo de referencia OSI, las
amenazas potenciales en cada capa y qué control de protección o tecnología se puede
aprovechar en cada capa. El uso de IPSec en la capa de red (capa 3), la capa de sockets
seguros (SSL) en la capa de transporte (capa 4) y la gestión de derechos digitales (DRM)
en la capa de presentación (capa 6) aumenta los controles de protección que están
diseñados en la capa de aplicación (capa 7) y esto demuestra dos principios de diseño
seguro: defensa en profundidad y aprovechamiento de los componentes existentes.
Los cambios en la potencia informática del hardware han dado lugar a cambios en las
arquitecturas de software desde la arquitectura centralizada del mainframe a la arquitectura
informática altamente distribuida. Hoy en día, muchas arquitecturas distribuidas, como el
modelo Cliente / Servidor, redes peer-to-peer, arquitectura orientada a servicios (SOA),
aplicaciones de Internet enriquecidas (RIA), computación generalizada, software como
servicio (SaaS), computación en la nube y virtualización. , existen y están en aumento. En la
siguiente sección, analizaremos los diferentes tipos de arquitecturas que prevalecen en la
actualidad y cómo diseñar software para que sea seguro al usar estas arquitecturas.
Esto significa que deben evitarse las soluciones que requieren la reescritura de
aplicaciones, lenguaje de control de trabajos (JCL) de mainframe y secuencias de
comandos de infraestructura de red. El problema de la escasez de habilidades debe
abordarse empleando la educación de los usuarios y las iniciativas que hacen lucrativo un
futuro en mainframe, especialmente en relación con su cruce con nuevas aplicaciones y
plataformas abiertas más nuevas como Linux.
Aunque los servicios web se han implementado predominantemente mediante SOAP, REST
también se puede utilizar para implementar servicios web. Un servicio web RESTful se
implementa utilizando los principios REST y la API del Protocolo de transferencia de
hipertexto (HTTP). La forma en que se implementan los servicios web RESTful es como una
colección de recursos y cada servicio web RESTful:
● ■■ Tiene una dirección de recurso única o un URI base (por ejemplo, http://isc2.org/
resources /)
● ■■ Admite el tipo de medio de los datos admitidos por el servicio web (por ejemplo,
XML, JSON, etc.)
● ■■ Utiliza métodos HTTP para sus operaciones (por ejemplo, GET, PUT, POST o
DELETE)
Dado que los servicios web RESTful se ejecutan sobre el protocolo de hipertexto, son
independientes de la plataforma. El servidor puede ser un servidor Windows mientras que el
cliente puede ser una máquina Linux o un dispositivo iOS. También es independiente del
lenguaje de programación.
El beneficio de usar REST para las transiciones cliente / servidor es que promueve un
acoplamiento flexible entre los diferentes servicios, ya que REST no está fuertemente
tipado, a diferencia de SOAP. REST también se diferencia de SOAP por ser menos
hinchado, ya que no requiere un encabezado de mensaje del proveedor de servicios para
sus operaciones, pero esto podría tener mensajes de seguridad ya que la prueba del origen
de la solicitud es difícil de asegurar. REST también es más rápido que SOAP, ya que no
requiere todo el análisis (análisis XML) que SOAP necesita para que funcione. REST
también se enfoca en la legibilidad y usa sustantivos y verbos comunes (por ejemplo, GET,
PUT, POST, DELETE) para sus llamadas a métodos. Aunque hay algunas mejoras en el
rendimiento al usar REST, debe entenderse que REST no ofrece ninguna característica de
seguridad incorporada y debe implementarse con tecnologías de seguridad
complementarias para garantizar operaciones seguras. Por ejemplo, los tokens para
autenticación y SSL (HTTPS) para el cifrado de datos en el cable son necesarios para
incorporar seguridad cuando se utilizan los servicios web RESTful.
RIA también tiene algunos mecanismos de control de seguridad inherentes. Estos incluyen
la Política del Mismo Origen (SOP) y la zona de pruebas. El origen de una aplicación web
se puede determinar mediante la información del protocolo (http / https), el nombre de host y
el puerto (80/443). Si dos sitios web tienen el mismo protocolo, nombre de host e
información de puerto, o si las propiedades document.domain de dos recursos web son las
mismas, se puede decir que ambos tienen la misma fuente u origen. El objetivo de SOP es
evitar que un recurso (documento, script, applets, etc.) de una fuente interactúe y manipule
documentos en otra. La mayoría de los navegadores de hoy en día tienen seguridad SOP
incorporada y los clientes de navegador RIA heredan intrínsecamente esta protección. Las
aplicaciones de Internet enriquecidas también se ejecutan dentro de la zona de pruebas de
seguridad del navegador y no pueden acceder a los recursos del sistema, a menos que el
acceso se otorgue explícitamente. Sin embargo, las amenazas de las aplicaciones web,
como los ataques de inyección, los ataques de secuencias de comandos y el malware, son
aplicables a RIA. Con RIA, la superficie de ataque aumenta, lo que incluye al cliente que
puede ser susceptible a amenazas de seguridad. Si se elude la protección de la zona de
pruebas, las máquinas host que no están correctamente parcheadas pueden convertirse en
víctimas de amenazas de seguridad. Esto requiere la necesidad de diseñar explícitamente
mecanismos de protección de seguridad web para RIA. Asegúrese de que las decisiones de
autenticación y control de acceso no dependan de las comprobaciones de verificación del
lado del cliente. El cifrado y la codificación de datos son importantes mecanismos de
protección. Para asegurar la protección de los SOP, el diseño del software debe tener en
cuenta la determinación del origen real (o verdadero) de los datos y servicios y no solo
validar la última referencia como el punto de origen.
Para maximizar la productividad, las empresas están adoptando iniciativas Bring Your Own
Device (BYOD) y / o Choose Your Device (CYD), pero se debe reconocer que, si bien los
beneficios de la computación generalizada incluyen la capacidad de estar conectados
siempre desde cualquier lugar, desde un Desde el punto de vista de la seguridad, trae
consigo algunos desafíos que requieren atención. Esto es importante porque los empleados
dependen cada vez más de los teléfonos inteligentes y las tabletas para hacer su trabajo.
Los dispositivos que están conectados como parte de una red generalizada no solo son
susceptibles de atacarse a sí mismos, sino que también pueden usarse para orquestar
ataques contra la red a la que están conectados. Es por eso que la mediación completa,
implementada mediante la autenticación de nodo a nodo, debe ser parte del diseño de
autenticación. No se debe permitir que las aplicaciones en el dispositivo se conecten
directamente a la red backend, sino que deben autenticarse en el dispositivo y, a su vez, el
dispositivo debe autenticarse en las aplicaciones internas de la red. Se recomienda usar el
chip Trusted Platform Module (TPM) en el dispositivo en lugar de usar la dirección Media
Access Control (MAC) fácilmente falsificable para la identificación y autenticación del
dispositivo. La gestión de dispositivos móviles (MDM) está ganando mucha atención en la
actualidad, ya que permite establecer políticas que rijan el uso de aplicaciones de terceros
en dispositivos móviles. Al diseñar aplicaciones móviles para la empresa, se recomienda
aprovechar las capacidades de MDM para garantizar la confianza de las partes interesadas.
Los diseñadores de aplicaciones informáticas generalizadas deben estar familiarizados con
los mecanismos y el protocolo de protección de dispositivos móviles de nivel inferior.
Las redes y las comunicaciones inalámbricas hacen que sea relativamente más fácil
crear redes informáticas omnipresentes, en comparación con su red cableada
contrapartes. De hecho, se puede argumentar que el supuesto de que el aumento
de red inalámbrica ha tenido un impacto directamente proporcional en el predominio
de redes informáticas omnipresentes.
Para mitigar estos riesgos, el software debe diseñarse para establecer primero un
canal seguro entre los puntos finales de comunicación / transacción y si es factible,
los puntos finales deben ser validados por su autenticidad y confianza antes de
cualquier transmisión.
Redes de sensores
Computación en la nube
Las tecnologías de computación en la nube hacen posible que las empresas creen
autoservicio medible, bajo demanda, rápidamente elástico, interoperable y portátil
sistemas y aplicaciones de software que tienen amplio acceso y conectividad a un
conjunto de infraestructura y recursos compartidos.
Impulsores y beneficios
■ Costo reducido: en lugar de pagar altos costos por los recursos de hardware y
licencias de software, los inquilinos ahora pueden usar servicios en la nube y
aplicaciones bajo demanda y pagan solo por los servicios que utilizan.
■ Reducción del tiempo de comercialización: con el software ya disponible para su
uso como una inversión de servicio, tiempo y recursos (personal) para Desarrollar la
misma funcionalidad en casa se reduce. Esto, junto con menores requisitos de
formación y tiempo de prueba reducido hace es posible que las empresas
comercialicen rápidamente sus productos y servicios.
■ Integridad de las versiones de software: con el software centralizado administrado
y gestionado por el proveedor de servicios, el inquilino es no es responsable de
parches y actualizaciones de versión, asegurando así que las versiones no están
desactualizadas.
Tipos
Los cuatro tipos de nube son:
■ Nube pública
■ Nube privada
■ Nube comunitaria
■ Nube híbrida
En una nube pública, los proveedores de servicios en la nube brindan sus servicios
a múltiples inquilinos que no están relacionados. El inquilino tiene poco o ningún
control en la gestión de infraestructura, plataforma o recursos de software y está
completamente a merced de
En una nube comunitaria, existe una tenencia múltiple como es el caso de una
nube, pero los inquilinos son entidades relacionadas como en el caso de una nube
privada. En este sentido, una nube comunitaria funciona más o menos como un
"intermedio" nube. Los inquilinos tienen requisitos comunes y las capacidades de
aseguramiento son construidas sobre estos requisitos. Los beneficios y riesgos
tanto del sector público como del privado son evidentes en una nube comunitaria.
Una nube híbrida combina dos o más de los tipos de nubes mencionados
anteriormente. Los controles y mecanismos de garantía se pueden gestionar de
forma más granular. Por ejemplo, la información privada y confidencial se puede
alojar en la nube privada, mientras que los datos relacionados con la industria del
inquilino se pueden alojar y con el servicio de una nube comunitaria. Estos cuatro
tipos de nubes se representan en Figura 3.28.
Características
Acceso no autorizado
Para mitigar la posibilidad de MITM, hay reglas de contraseña adecuadas que hacen
cumplir contraseñas seguras y su administración es útil. Las contraseñas seguras
son aquellas que no son susceptibles a ataques de diccionario o aquellas que no
pueden ser adivinadas fácilmente. Gestionar de forma segura las sesiones de
usuario y el cifrado de un extremo a otro de los canales de transporte que utilizan
SSL / TLS o IPSec también ayudan a mitigar MITM ataques que pueden provocar el
secuestro y la repetición de la sesión.
API inseguras y patentadas
Interrupciones de servicio
Abuso de la nube
El estallido de nubes es el concepto en el que uno tiene que salir de una de la nube
(interna) a una nube pública (externa) para manejar las demandas elevadas y carga
de trabajo, cuando uno se queda sin recursos informáticos. Clientes potenciales en
la nube a nubes híbridas.
Tecnologías de aislamiento en la nube que hacen que el Protocolo de Internet (IP) y
los medios direcciones de control de direcciones (MAC) de infraestructuras de nube
externas en uno se usen en ese estallido de nubes. Esto debe planearse y
diseñarse cuidadosamente para garantizar que la suplantación de IP y MAC no sea
posible. La comunicación entre las nubes externas e internas deben estar seguras y
protegidas. Hardening y el sandboxing de la infraestructura es importante para que
la plataforma y las hazañas sean más difíciles de hacer.
Desafíos
Otro desafío que se evidencia en la nube está relacionado con la ciber forense. los
recopilación de evidencia física del entorno virtual en la nube, utilizando estática y
las herramientas forenses en vivo es un desafío. Esto se debe principalmente a la
rápida elasticidad característica de la nube. Los recursos (por ejemplo, espacio en
disco, memoria, etc.) que se aprovisionan a su empresa hoy pueden ser
provisionados a otra persona inquilina en el futuro, lo que hace inviable conservar
registros de auditoría que son un importante en las investigaciones cibernéticas.
Además, vale la pena mencionar que, dado que la nube influye tanto el gobierno
como la industria privada, una asociación entre estos dos sectores, pueden ser
necesarios para abordar eficazmente los desafíos y preocupaciones de seguridad
en las nubes.
Arquitectura
La figura 3.30 muestra una arquitectura de aplicación genérica para una aplicación
móvil
Tipos
SO móvil
Una cobertura completa y completa de cada sistema operativo móvil está más allá
del alcance de este libro. Sin embargo, al diseñar aplicaciones móviles, es
imperativo reconocer que el sistema operativo móvil en el que se ejecutará la
aplicación móvil, puede tener impacto significativo en la seguridad de la propia
aplicación móvil. Es importante comprender y estar familiarizado con las
capacidades y debilidades de seguridad inherentes del sistema operativo móvil para
crear seguridad dentro de la propia aplicación o usar MDM para administrar
aplicaciones de terceros en el dispositivo. Por ejemplo, iOS tiene una función
multitarea conocida como fondo. En segundo plano de iOS, iOS toma una captura
de pantalla de la aplicación antes de minimizar para que se ejecute en segundo
plano, por razones de experiencia del usuario como una animación rápida cuando
se vuelve a activar la aplicación. Sin embargo, cuando esto ocurre, es importante
asegurarse de que ningún dato sensible que se presenta en la pantalla se captura
en la captura de pantalla.
Las amenazas a las aplicaciones móviles son principalmente de los siguientes tipos.
■ Divulgación de información
■ Denegación de servicio móvil (DoS) y DoS distribuido
■ Autenticación rota
■ Eludir la autorización
■ Gestión de sesiones inadecuada
■ Inyección del lado del cliente
■ Jailbreak y Sideloading
■ Malware móvil
Divulgación de información
El tamaño de los dispositivos móviles los hace más propensos a la pérdida y al robo
físico. Esta es una de las principales razones para la divulgación de información.
Cuando es móvil las aplicaciones están diseñadas, es importante diseñar en
capacidades de "borrado remoto" para mitigar las amenazas de divulgación cuando
el dispositivo se pierde o es robado.
Además del robo del dispositivo en sí, también se roban los datos almacenados en
los dispositivos móviles (almacenamiento local del lado del cliente). Las bases de
datos locales en la mayoría de los sistemas operativos móviles no están tan
maduras como sus contrapartes de escritorio en lo que respecta a las capacidades
de garantía de confidencialidad, como el cifrado.
Las bases de datos en la nube, especialmente en las redes de hospedaje
compartido, son susceptibles a la fuga de datos debido a la falta de separación y
remanencia de datos en los recursos de hardware reaprovisionados. Lo ideal es que
no se almacenen datos confidenciales sin protección de forma local en el cliente o
en bases de datos públicas y, cuando lo estén, no se deben almacenar de forma
indefinida. Además, es importante identificar y proteger los datos confidenciales en
el dispositivo móvil.
Criptografía rota
La fuga de datos del canal lateral ocurre cuando los datos confidenciales y privados
provienen de ubicaciones como cachés web, directorios temporales, archivos de
registro, capturas de pantalla, etc.
Divulgada a personas y programas no autorizados. Estas ubicaciones inesperadas y
no comunes se denominan generalmente "canales laterales". Cierta aplicación
acciones como el fondo de iOS en aplicaciones multitarea y acciones humanas
como la ruptura de la cárcel y el registro de pulsaciones de teclas pueden llevar a la
divulgación del canal lateral de información que debe mantenerse en secreto.
Para mitigar las fugas de datos del canal lateral en la aplicación móvil, las cachés
deben estar cifradas y se deben utilizar directivas anti-caché para aplicaciones
basadas en navegador los canales de comunicación deben ser auditados para
asegurar que no haya fugas. La información confidencial, como las credenciales,
nunca debe registrarse. Sensible la información debe eliminarse de las vistas antes
de que la aplicación pase a la antecedentes como parte del proceso de creación de
antecedentes. Además, el registro de pulsaciones de teclas por campo debe estar
deshabilitado. También se recomienda depurar la aplicación móvil para comprender
los archivos que se crean, escriben o modifican cuando se ejecuta la aplicación.
Ingeniería inversa
(Descompilación, depuración, desmontaje)
Autenticación rota
Omitir la autorización
La figura 3.32 también hace algo similar, pero en lugar de abrir la aplicación en el
dispositivo y solicitar al usuario que llame al número, se abre la aplicación de Skype
y sin el consentimiento del usuario realiza la llamada al número falso.
Un control de mitigación primario contra los ataques de inyección del lado del cliente
es la entrada validación, es decir, los datos proporcionados por el usuario se
desinfectan y se vuelven inofensivos. Si la arquitectura lo admite, es recomendable
utilizar de forma segura el almacenamiento en la nube sobre las bases de datos del
lado del cliente para los requisitos de almacenamiento, lo que evita ataques de
inyección del lado del cliente en almacenes de datos. La concienciación y la
educación del usuario contribuyen en gran medida a reducir los ataques de
inyección en el lado del cliente porque un usuario que está educado para nunca
confiar en el cliente tiene menos probabilidades de ser víctima de una inyección del
lado del cliente a diferencia de uno que no lo es móvil Los probadores de
aplicaciones deben verificar y validar que todas las entradas a la aplicación estén
desinfectadas y que la salida de la aplicación se codifica en sus formas no
ejecutables. Diseñando la aplicación móvil para aprovechar las bibliotecas del
navegador que brindan desinfección, validación y se recomienda la codificación, ya
que estas bibliotecas se pueden actualizar con una validación más reciente en
reglas y todas las aplicaciones móviles que las utilizan pueden beneficiarse del
cambio, en lugar de tener que realizar cambios en cada aplicación móvil. El uso de
declaraciones preparadas y se recomiendan procedimientos almacenados para
consultar y manipular datos para que el código inyectado no se concatena
dinámicamente para convertirse en parte del sintaxis de consulta. También es
recomendable validar todos los datos que se reciben o envían a aplicaciones de
terceros y para comprobar si hay errores en la interpretación del código en tiempo
de ejecución o exploits.
Jailbreak y Sideloading
Casi todos los sistemas operativos móviles son susceptibles de ser liberados. Un
dispositivo con jailbreak es uno que se manipula y modifica para que pueda instalar
aplicaciones y software que generalmente no está autorizado por el fabricante del
dispositivo de hardware o el operador de telefonía móvil.
Por otro lado, la carga lateral se observa en sistemas operativos móviles de código
abierto, predominantemente el sistema operativo Android. La descarga lateral
permite al usuario instalar software en su dispositivo sin pasar por los métodos
oficiales de distribución de aplicaciones como el Android Market. Es un ajuste de
configuración en el sistema operativo Android que el usuario puede configurar, pero
cuando se permite la descarga lateral, tiene ciertos riesgos que ven con él.
Mientras que el jailbreak y la descarga lateral traen consigo algo de libertad, trae
con ello el potencial de riesgos mucho mayores. Los riesgos incluyen:
Las empresas deben, como parte de la estrategia MDM, prohibir el uso de jailbreak
dispositivos que se conectan e interactúan con la infraestructura de la empresa,
para mitigar el riesgo de que el malware ingrese a la red de la empresa. Si lo haces
tiene la necesidad de hacer jailbreak al dispositivo, entonces es mejor que cambie la
raíz contraseña en el dispositivo con jailbreak para que sea menos explotable por
piratas informáticos.
Malware móvil
Tecnologías
Autenticación
Gestión de identidad
(IAM) también. Los usuarios reciben derechos y privilegios (derechos) con el tiempo,
pero rara vez se revocan estos derechos cuando ya no son necesarios. Una
empresa debe participar en la revisión y aprobación del acceso a los derechos de
identidad y el proceso se conoce como certificación de acceso por razones legales y
de cumplimiento, puede ser necesario mantener una identidad digital incluso
después de que la identidad ya no esté activa, por lo que la desactivación puede ser
la única opción viable. Si este es el caso, el software que maneja el acceso de
terminación debe estar diseñado para permitir "desactivar" solamente y no permitir
verdaderas "eliminaciones" o "completar eliminación". La desactivación también
permite que la identidad permanezca como copia de seguridad en caso de que sea
necesario: sin embargo, esto puede representar una amenaza para la seguridad El
atacante podría reactivar una identidad desactivada y obtener acceso. El desactivar
las identidades se mantienen mejor en un sistema de respaldo o archivado que está
fuera de línea con acceso restringido y auditado.
Algunas de las tecnologías comunes que se utilizan para IDM son las siguientes:
Directorios
Los directorios son un requisito fundamental para IDM y se pueden aprovechar para
eliminar los silos de información de identidad mantenidos dentro de cada aplicación.
Algunos de los productos de directorio más populares son el directorio de IBM
(Tivoli), Sun ONE directorio, Oracle Internet Directory (OID), Microsoft Active
Directory, Novell eDirectory, OpenLDAP y Red Hat Directory Server.
Los roles y los derechos de los usuarios cambian con los cambios comerciales y
cuando la identidad información y privilegios vinculados a ese cambio de identidad,
estos cambios deben ser propagado a los sistemas que utilizan esa identidad.
Propagación y sincronización de los cambios de identidad del sistema de registro a
los sistemas gestionados posible mediante motores conocidos como
metadirectorios. Recursos humanos (RRHH), Cliente los sistemas de gestión de
registros (CRM) y el directorio corporativo son ejemplos de sistema de registro. Los
metadirectorios simplifican la administración de identidades. Reducen desafíos
impuestos por las actualizaciones manuales y se puede aprovechar dentro del
software para automatizar la propagación de cambios y ahorre tiempo. El diseño del
software debe incluir evaluar la seguridad de los conectores y las dependencias
entre la identidad sistemas de origen y sistemas descendentes que utilizan la
identidad. La identidad de Microsoft Lifecycle Management es un ejemplo de
metadirectorio.
Gestión de credenciales
Gestión de contraseñas
Las contraseñas nunca deben codificarse en texto claro y almacenarse en línea con
el código o guiones. Cuando se almacenan en una tabla de base de datos o en un
archivo de configuración, el hash proporciona más protección que el cifrado porque
las contraseñas originales no puede ser determinado. Aunque proporcionar un
medio para recordar contraseñas es bueno para la experiencia del usuario, desde el
punto de vista de la seguridad, no se recomienda.
Gestión de certificados
Además de utilizar PKI para la autenticación, los certificados X.509 hacen Posibles
capacidades de autorización sólidas al proporcionar Privilege Management
Infraestructura (PMI) utilizando certificados de atributos X.509, autoridades de
atributos, puertas de enlace de destino y políticas de autorización como se muestra
en la Figura 3.35.
SSO hace posible que los usuarios inicien sesión en un sistema y, después de ser
autenticados, lanzar otras aplicaciones sin tener que proporcionar su información de
identificación otra vez. Es posible almacenar las credenciales de usuario fuera de
una aplicación y reutilizar automáticamente las credenciales validadas en los
sistemas que las soliciten. Sin embargo, el SSO generalmente se implementa junto
con otras tecnologías. Las dos tecnologías comunes que hacen que el intercambio
de información de autenticación son posibles Kerberos y lenguaje de marcado de
afirmación seguro.
Control de flujo
Cortafuegos y proxies
Los diferentes tipos de firewalls que existen son filtrado de paquetes, proxy, con
estado, y firewall de la capa de aplicación. Cada tipo se trata con más detalle en
esta sección.
Filtrado de paquetes
Proxy
Los firewalls proxy actúan como intermediarios entre las redes internas de confianza
y el fuera de los que no son de confianza. Cuando un paquete llega a un firewall
proxy, el firewall termina la conexión desde la fuente y actúa como un proxy para el
destino, inspecciona el paquete para asegurarse de que es seguro antes de
reenviarlo al destino. Cuando el sistema de destino responde, el paquete se envía al
firewall proxy, que volverá a empaquetar el paquete con su propia dirección de
origen y abstraer la dirección del sistema host de destino interno. Los firewalls proxy
también toman decisiones, al igual que los cortafuegos de filtrado de paquetes. Pero
los firewalls proxy, al romper la conexión, no permite la conexión directa entre
personas no confiables y confiables sistemas. Los firewalls proxy también se
conocen como firewalls de segunda generación.
Con estado
Los firewalls con estado o los firewalls de tercera generación tienen la capacidad de
rastrear diálogos manteniendo un estado y un contexto de datos en los paquetes
dentro de una tabla de estado. diferente a cortafuegos proxy, no requieren tantos
recursos y normalmente son transparentes para el usuario.
Capa de aplicación
Debido a que los firewalls sin estado y con estado solo miran el encabezado de un
paquete y no en el contenido de datos (carga útil) contenido dentro de un paquete,
aplicación específica los ataques no serán detectados y pasarán a través de
firewalls sin estado y con estado. Esta es donde los firewalls de capa de aplicación o
los firewalls de capa 7 resultan útiles. Solicitud los firewalls de capa proporcionan
control de flujo al interceptar datos que se originan en el cliente. El tráfico
interceptado se examina en busca de amenazas potencialmente peligrosas que se
pueden ejecutar como comandos. Cuando se sospecha una amenaza, la aplicación
el firewall de capa puede tomar la acción apropiada para contener y terminar el
ataque o redirigirlo a un honeypot para recopilar datos adicionales.
Una de las dos opciones del Requisito 6.6 de PCI Data Security el estándar es tener
un firewall de aplicaciones (web) colocado entre la web aplicación y el punto final del
cliente. La otra opción es realizar la aplicación revisiones de código. Los firewalls de
aplicaciones están empezando a ganar importancia y esta tendencia se espera que
continúe porque los piratas informáticos están apuntando a la capa de aplicación.
Middleware
Auditoría (registro)
■ Violaciones de seguridad
■ Procesos comerciales críticos, por ejemplo, procesamiento de pedidos, cambio de
contraseña, etc.
■ Métricas de rendimiento, por ejemplo, tiempo de carga, tiempos de espera, etc. y
■ Eventos relacionados con el cumplimiento
Syslog
Cuando los registros deben transferirse a través de una red IP, se puede utilizar el
protocolo syslog. Syslog se utiliza para describir el protocolo, la aplicación que
recibe y envía, así como los registros. El protocolo es un protocolo cliente / servidor
en el que el cliente la aplicación transmite los registros al servidor receptor de
Syslog (comúnmente llamado demonio syslog, denotado como syslogd). Aunque
syslog usa el método sin conexión protocolo de datagramas de usuario (UDP) sin
confirmación de entrega como mecanismo de transporte, syslog puede utilizar la
transmisión orientada a la conexión protocolo de control (TCP) para asegurar o
garantizar la entrega. Entrega de registros confiables asegura que no solo el
receptor recibe correctamente los registros, sino que se reciben en el orden
correcto. Es una parte necesaria de una seguridad completa. solución y se puede
implementar mediante TCP. Se puede aumentar usando servidores de caché, pero
cuando se hace esto, la superficie de ataque incluirá el caché servidores y los
controles técnicos, administrativos y físicos adecuados deben estar en su lugar para
proteger los servidores de caché.
Los IDS no son cortafuegos, pero se pueden utilizar con uno. Los cortafuegos son
los primeros línea de red o defensa del perímetro, pero pueden ser necesarios para
permitir el tráfico para ingresar a través de ciertos puertos como el puerto 80 (http),
443 (https) o 21 (ftp). Aquí es donde los IDS pueden resultar útiles, ya que
proporcionarán protección contra tráfico malicioso y amenazas que atraviesan
firewalls. Además, los IDS son más útiles que los firewalls para detectar amenazas
internas y actividades fraudulentas que se originan dentro de los firewalls.
■ Basado en firmas: similar a cómo el antivirus detecta malware amenazas, los IDS
basados en firmas detectan amenazas buscando firmas o patrones que coinciden
con los de amenazas conocidas. La debilidad de este tipo de IDS es que las
amenazas nuevas y desconocidas, cuyas firmas aún no se conocen, o amenazas
polimórficas con el cambio de firmas no será detectado y puede evadir la intrusión
detección. Snort es muy popular y ampliamente utilizado, disponible gratuitamente,
IDS de código abierto basado en firmas para Linux y Windows Sistemas operativos.
El activo más importante de una empresa, solo superado por los activos de su
personal, es datos, y la protección de datos es importante para asegurar su
confidencialidad, integridad y disponibilidad.
La cronología de las filtraciones de datos, los informes de noticias y los requisitos
reglamentarios para proteger los datos reflejan la prevalencia y el crecimiento
continuo del robo de datos que cuestan a las empresas sumas colosales de
remediación y pérdida de marca. Cifrado de datos mitiga la divulgación de datos en
caso de robo físico y dispositivos perimetrales como ya que los firewalls pueden
proporcionar cierto grado de protección al filtrar las amenazas que están destinados
a robar datos e información dentro de la red. Mientras este tipo de filtrado de
entrada puede ser útil para proteger los datos dentro de la red, hace poco para
proteger los datos que salen de la red de la empresa. Aquí es donde la prevención
de pérdidas (DLP) es útil. DLP es la tecnología que proporciona filtración de salida,
lo que significa que evita que los datos salgan de la red. Correos electrónicos con
los archivos adjuntos que contienen información confidencial se encuentran entre
las principales fuentes de pérdida de datos cuando los datos están en movimiento.
Al escribir mal la dirección de correo electrónico del destinatario cuando compartir
información con un cliente, proveedor o socio, uno puede involuntariamente divulgar
información. Un empleado descontento puede copiar datos confidenciales en un
extremo dispositivo de punto (como un disco duro portátil o USB) y sáquelo de la
red.
Hemos cubierto las formas en que DLP puede proteger los datos que están en el
centro de salir de la red, pero en el mundo actual, hay un impulso hacia el Software
como modelo de servicio de la informática. En tales situaciones, los datos de la
empresa se almacenan en el exterior en la red de alojamiento compartido del
proveedor de servicios. Cuando esto ocurre, la protección de datos incluye la
prevención de la fuga de datos cuando los datos están en reposo o almacenados,
así como cuando se está orientando hacia y desde el proveedor de SaaS. Se
pueden utilizar mecanismos de protección de control de acceso y protección
criptográfica para evitar la fuga de datos en las implementaciones de SaaS. . SaaS
es una tendencia en maduración y se recomienda que cuando los datos se
almacenan en el exterior, la pared china adecuada existe protección de control de
acceso, basada en los privilegios autorizados del solicitante, para evitar cualquier
conflicto de intereses. La protección de seguridad de la capa de transporte alivia los
datos pérdida mientras los datos están en movimiento entre su empresa y el
proveedor de SaaS.
Virtualización
Aunque la virtualización tiene como objetivo reducir los costos y mejorar la agilidad,
sin la debida consideración de la seguridad, estos objetivos pueden no lograrse y la
seguridad del ecosistema informático general puede debilitarse. Por tanto, es
imperativo determinar la seguridad y la protección de la virtualización antes de
seleccionar productos de virtualización. Por un lado, se puede argumentar que la
virtualización aumenta la seguridad porque las máquinas virtuales están aisladas
unas de otras y dependiente de un solo servidor host, lo que hace posible abordar la
seguridad física infracciones relativamente simples en comparación con tener que
administrar varios servidores independientes. Por otro lado, se puede decir que la
virtualización aumenta el ataque superficie porque el software de virtualización
conocido como el hipervisor, como se muestra en Figura 3.36, que controla y
administra las máquinas virtuales y su acceso a recursos del host, es un software
que podría tener errores de codificación y se ejecuta con derechos de acceso
privilegiado, haciéndolo susceptible a ataques.
DRM se refiere a una amplia gama de tecnologías y estándares que están dirigidos
en la protección de la propiedad intelectual (PI) y el uso de contenido de obras
digitales utilizando controles tecnológicos. Ley de derechos de autor (cubierta en
detalle en el Software capítulo de aceptación) es un control disuasorio solo contra
alguien que desea hacer una copia de un archivo o recurso protegido (documentos,
archivos de música, películas, etc.). No puede evitar que alguien haga una copia
ilegal. Es por eso que la protección basada en tecnología es necesaria y DRM
ayuda en este esfuerzo. DRM trata de proteger las obras digitales y difiere en su
función de la ley de derechos de autor. Derechos de autor la ley funciona
permitiendo todo lo que no está prohibido. DRM a la inversa opera prohibiendo todo
lo que no está permitido.
DRM no solo proporciona protección contra copias, sino que se puede configurar de
forma granular para proporcionar derechos de uso y garantizar la autenticidad y la
integridad también. Esto es particularmente importante cuando tiene la necesidad de
compartir archivos con un tercero a través de a quien no tiene control, como un
socio comercial o un cliente, pero aún así quiere controlar el uso de los archivos.
DRM proporciona una capa de presentación (capa OSI 6) seguridad no evitando
que un usuario no autorizado vea el archivo, sino impidiendo que la parte receptora
copie, imprima o comparta el archivo, incluso aunque se le permitirá abrirlo y verlo.
Una de las formas más comunes de el uso compartido de archivos está restringido
al vincular el archivo a un identificador de hardware único alguna propiedad de
hardware que no esté duplicada en otros sistemas. Esto significa que aunque el
archivo se pueda copiar, sigue siendo inutilizable en un sistema o por un usuario no
autorizado. Este tipo de mecanismo de protección es evidente en la música
comprada en la tienda iTunes. Música comprada en iTunes Store está autorizada
para usarse en una computadora y cuando se copia a otra, no funciona a menos
que se cuente con la autorización adecuada de la nueva computadora concedida.
DRM también asegura la autenticidad e integridad del contenido de un archivo,
porque proporciona la capacidad de controlar de forma granular el uso de un
archivo.
Las tres entidades centrales de una arquitectura DRM incluyen usuarios, contenido
y derechos. La implementación de DRM es posible gracias a las relaciones que
existen entre estas tres entidades centrales. Los usuarios pueden crear y / o utilizar
contenido y están concedido derechos sobre el contenido. La entidad usuaria puede
ser cualquiera; privilegiado o no privilegiado, empleado o no, socio comercial,
proveedor, cliente, etc. No es necesario que sea humano, ya que un sistema puede
participar en una implementación de DRM las entidades de contenido se refiere al
recurso protegido, como un archivo de música, un documento, o una película. La
entidad de derechos expresa permisos, restricciones y obligaciones que la entidad
de usuario tiene sobre la entidad de contenido. La expresión de derechos se hace
posible mediante el lenguaje formal, conocido como lenguaje de expresión de
derechos (REL).
Cuando diseñe soluciones DRM, debe tener en cuenta tanto sus beneficios,
desafíos y consideraciones de seguridad deben estar a la vanguardia.
Computación confiable
Anti-malware
Para abordar con éxito los problemas comerciales y de seguridad causados por
malware, es necesario un programa holístico de múltiples frentes. Esto incluye:
Vital para la estrategia anti-malware es el motor anti-malware del lado del cliente.
Este motor es el software necesario para detectar, contener y eliminar el malware
que intenta comprometer un sistema. Las funciones principales de este motor
anti-malware son:
■ escaneo
■ detección
■ cuarentena
■ eliminar y
■ restaurar
Polyinstantiation
Un enfoque de seguridad de base de datos bien conocido para tratar los problemas
de inferencia y la agregación es Polyinstantiation. Polyinstantiation significa que
existen varias instancias (o versiones) de la información de la base de datos, de
modo que lo que se ve por un usuario depende de la autorización de seguridad o los
atributos del nivel de clasificación del usuario solicitante. Por ejemplo, muchas
instancias del teléfono del presidente el número se mantiene en diferentes niveles
de clasificación y solo los usuarios con se permitirá autorización secreta para ver el
número de teléfono del presidente de la país, mientras que aquellos que no tienen
autorización reciben un número de teléfono genérico para ver. Polyinstantiation
aborda los ataques de inferencia al permitir un medio para ocultar información
mediante etiquetas de clasificación. Aborda la agregación al permitir los medios para
etiquetar diferentes agregaciones de datos por separado.
Cifrado de base de datos
Las defensas perimetrales, como los firewalls, ofrecen poca o ninguna protección a
las datos de agentes de amenazas internos, que tienen los medios y la oportunidad
de acceder y explotar datos almacenados en bases de datos. La amenaza para las
bases de datos no solo proviene de piratas informáticos externos, sino también de
personas internas que desean comprometer los datos, los datos que son
esencialmente las joyas de la corona de una empresa. De hecho, mientras externo
los ataques pueden verse en las noticias, muchos ataques internos a menudo no se
publican, a pesar de que son igualmente, si no más, devastadores para una
empresa. La persona enterada de las amenazas a las bases de datos merecen
especial atención, especialmente las de personas descontentas. empleados en una
economía de despidos. Sin los controles de seguridad de la base de datos
adecuados, dejar a una empresa sin vigilancia y que depende únicamente del
motivo de una persona con información privilegiada, que ya tiene los medios y la
oportunidad.
La normalización es una técnica formal que se puede utilizar para organizar datos
que se elimine la redundancia y la inconsistencia. La organización de los datos está
basada en ciertas reglas y cada regla se conoce como una "forma normal". Existen
principalmente tres reglas de normalización o organización de datos. El diseño de la
base de datos es se dice que está en la forma normal que corresponde al número
de reglas del diseño cumple con. Se sabe que un diseño de base de datos que
cumple con una regla en la primera forma normal, anotada como 1NF Se sabe que
un diseño con dos reglas en la segunda forma normal, anotada como 2NF, y una
con cumplimiento de las tres Se sabe que las reglas están en tercera forma normal,
anotadas como 3NF. Cuarto (4NF) y También existe la Quinta Forma Normal (5NF)
de diseño de bases de datos, pero rara vez se implementa prácticamente.
Primera forma normal (1NF) exige que no haya campos repetidos o grupos de
campos dentro de una tabla. Esto significa que los datos relacionados se almacenan
por separado. Esto también se conoce informalmente como la regla de “No se
permiten grupos repetidos”. Cuando la información del producto se mantiene para
cada registro de cliente por separado en lugar de repetirse dentro de una tabla, se
dice que cumple con 1NF.
La segunda forma normal (2NF) exige que se eliminen los datos duplicados. UN
La tabla en 2NF debe estar primero en 1NF. Esto también se conoce informalmente
como la regla "Eliminar datos redundantes". La eliminación de registros duplicados
en cada La tabla aborda la inconsistencia de los datos y, posteriormente, los
problemas de integridad de los datos 2NF significa que los conjuntos de valores que
se aplican a varios registros se almacenan en tablas y relacionadas usando una
relación de clave primaria (PK) y clave externa (FK).
Las tablas 3.9 y 3.10 son ejemplos de tablas que están en 2NF.
La tercera forma normal (3NF) es una extensión lógica de la 2NF y para una tabla
para estar en 3NF, primero debe estar en 2NF. 3NF exige que los datos no
dependen de la PK de identificación única de esa tabla se eliminan y mantenidos en
tablas propias. Esto también se conoce informalmente como el Regla “Eliminar
datos duplicados no dependientes de claves”. Dado que Sales_Rep_ID no depende
de Customer_ID en la tabla CUSTOMER, para que la tabla Estar en 3NF, los datos
sobre los representantes de ventas deben mantenerse en su propia tabla.
Disparadores
Los disparadores son útiles no solo para complementar las capacidades de bases
de datos existentes pero también pueden resultar muy útiles para automatizar y
mejorar la protección de la seguridad mecanismos. Los disparadores se pueden
utilizar para:
Puntos de vista
Una vista de base de datos es una presentación personalizada de datos que pueden
guardarse en una o tablas más físicas (tablas base) u otra vista, en sí. Una vista es
el resultado de una consulta y es similar a una tabla virtual o consulta almacenada.
Se dice que una vista es virtual porque a diferencia de las tablas base que
proporcionan datos a la vista, la vista en sí es no tiene asignado ningún espacio de
almacenamiento en la base de datos física. El único espacio que es asignado es el
espacio necesario para contener la consulta almacenada. Porque los datos en un
vista no se almacena físicamente, una vista se construye dinámicamente cuando la
consulta para generar la vista se ejecuta. Al igual que en una mesa base, DML
CRUD (crear, leer, actualizar y eliminar) operaciones para insertar, ver, modificar o
eliminar datos, con algunas restricciones, se puede realizar en vistas. Pero debe
entenderse que las operaciones realizadas en la vista afectan las tablas base que
sirven los datos por lo que deben tenerse en cuenta las mismas restricciones de
integridad de datos cuando lidiar con las opiniones.
Dado que las vistas se construyen dinámicamente, los datos que se presentan se
pueden personalizar para los usuarios en función de sus derechos y privilegios. Esto
hace posible que protección contra la divulgación de modo que solo aquellos que
tengan la autorización para ver ciertos tipos de datos tienen permitido ver esos tipos
de datos, y que no se les permite ver ningún otro dato. Las vistas no solo brindan
confidencialidad seguridad, también apoyan el principio de "necesidad de saber".
Restringir el acceso a conjuntos predeterminados de filas o columnas de una tabla
aumenta el nivel de seguridad de la base de datos. La figura 3.38 es un ejemplo de
una vista que resulta de unir el Tablas de CATEGORÍA, PRODUCTO y PEDIDO.
Las vistas también se pueden utilizar para abstraer la estructura interna de la base
de datos, ocultando la fuente de datos y la complejidad de las uniones. Una vista de
combinación se define como una que sintetiza la presentación de datos uniendo
varias tablas base o vistas. Las estructuras, relaciones y restricciones internas de la
tabla están protegidas y ocultas al usuario final. Incluso un usuario final que no tiene
conocimiento de cómo realizar uniones puede utilizar una vista para seleccionar
información de varios objetos de la base de datos. Además, se puede cambiar el
nombre de las columnas resultantes de una vista para ocultar la convención de
nomenclatura de bases de datos que un atacante puede utilizar para su beneficio al
realizar el reconocimiento. Las vistas también se pueden utilizar para ahorrar
consultas. Las consultas que realizan cálculos extensos son buenos candidatos
para guardarse como vistas para que se puedan realizar repetidamente sin tener
que reconstruir la consulta cada vez.
Gestión de privilegios
Cuando se utilizan roles para administrar permisos, el software debe estar diseñado
teniendo en cuenta principios de seguridad como el privilegio mínimo y la
separación de funciones. Un ejemplo de implementación de privilegios mínimos
dentro de la base de datos es el uso de El rol de "lector de datos" o "redactor de
datos" en lugar del rol de propietario de la base de datos ("dbo"). Un Un ejemplo de
separación de funciones dentro de la base de datos es que el usuario Johnson es
no forma parte de la función de "Autor" y "Aprobador".
Entorno del lenguaje de programación antes de escribir una sola línea de código, es
fundamental determinar la programación lenguaje que se utilizará para implementar
el diseño, porque una programación el lenguaje puede traer consigo riesgos
inherentes o beneficios de seguridad. En empresas con un nivel inicial de madurez
de capacidad, los desarrolladores tienden a elegir el lenguaje de programación con
el que están más familiarizados o uno que es popular y nuevo. Está es mejor
asegurarse de que el lenguaje de programación elegido sea uno que forme parte de
la tecnología o el estándar de codificación de la empresa, de modo que el software
producido puede ser soportado y mantenido universalmente.
Una conversión estrecha, por otro lado, puede conducir a la pérdida de información.
Un ejemplo de conversión de restricción es convertir un tipo de datos Decimal en un
Tipo de datos entero. Esto puede causar potencialmente el truncamiento de la
pérdida de datos si el valor almacenado en el tipo de datos Integer es mayor que su
rango permitido. Por ejemplo, cambiar el tipo de datos de la variable, "Precio
Unitario", que contiene el valor, $19,99, de un tipo de datos decimal a un tipo de
datos Integer resultará en almacenar $19 solo, ignorar los valores después del
decimal y causar problemas de integridad de los datos. Incorrecto la transmisión o
conversión puede resultar en excepciones de desbordamiento o pérdida de datos.
Longitud de entrada y validación de rango usando expresión regular (RegEx) y
longitud máxima (longitud máxima), junto con la protección de gestión de
excepciones controles, deben diseñarse para aliviar estos problemas.
La cobertura del CLR es un detalle explícito que está más allá del alcance de este
libro, pero es recomendable que esté familiarizado con los mecanismos de
aplicación de la seguridad del CLR, si está comprometido con el desarrollo de
software utilizando. Net marco de referencia.
El archivo Java Class (.class) define el formato en el que se almacenan las clases
Java y se accede de forma independiente a la plataforma. La seguridad de la JVM
exigir que los archivos .class desarrollados por el programador estén en el archivo
formato clase. El lenguaje Java Bytecode incluye en él los conjuntos de
instrucciones necesarios para realizar operaciones de máquina de bajo nivel, como
valores push y pop en y desde la pila, manipulando los registros de la CPU y
realizando operaciones aritméticas y lógicas operaciones. El cargador de clases es
un objeto de tiempo de ejecución de Java que se utiliza para cargar Java clases en
la JVM. Comprueba para asegurarse de que la clase cargada no esté falsificada o
redefinido por un atacante. Solo después de que estos controles sean exitosos, el
cargador carga la clase en la JVM, después de lo cual la JVM llama al Bytecode
verificador. Podría decirse que Bytecode Verifier es el componente más importante
de la JVM desde un punto de vista de coherencia de tipos. El verificador de
Bytecode comprueba ver si los archivos .class están en el formato de archivo de
clase y verifica dos veces para asegurarse que no hay instrucciones maliciosas en
el código que comprometan las reglas de seguridad de tipos en Java. Se puede
considerar como el guardián de la JSM. Si las comprobaciones de coherencia del
tipo de Bytecode son correctas, el Bytecode se compila Just-in-Time (JIT) para
ejecutar. Si alguna de las instrucciones del código intenta llamar el sistema operativo
nativo, fuera del límite de la zona de pruebas de la aplicación, luego, el JSM
monitorea estas llamadas y media el acceso, permitiendo o denegando acceso,
basado en la política de seguridad configurada. Durante la ejecución del programa
Java, los objetos se instalan y se destruyen en la memoria. Cuando los objetos se
destruyen en la memoria, es necesario recuperar ese espacio de memoria. Aquí es
donde el recolector de basura de la JVM entra en juego, recuperando objetos
inalcanzables en memoria.
La cobertura de la JVM es un detalle explícito que está más allá del alcance de este
libro, pero es recomendable que esté familiarizado con los mecanismos de
aplicación de la seguridad de la JVM, si está comprometido con el desarrollo de
software utilizando Java lenguaje de programación.
Conmutadores del compilador
Sistemas operativos
Sistemas embebidos
Esto se debe a que la memoria de los sistemas integrados suele contener tanto los
datos y también el firmware del producto. Es importante aprovechar un sistema a
prueba de manipulaciones sensoriales que puede detectar y alertar cuando la
memoria está dañada o alterada. El ISO 15408 (Criterio Común) estándar y los
múltiples niveles independientes del estándar de seguridad (MILS) son dos
estándares reconocidos que se pueden aprovechar para seguridad de los sistemas
integrados. La arquitectura MILS permite crear un código de aplicación verificado,
siempre invocado y a prueba de manipulaciones con funciones de seguridad que
frustran los intentos de un atacante.
Una vez que se completa el diseño del software, antes de salir de la fase de diseño
y entrar fase de desarrollo, es importante realizar una revisión del diseño del
software y arquitectura. Esto es para asegurar que el diseño cumpla con los
requisitos. No solo debe revisarse la aplicación para determinar su funcionalidad,
pero debe revisarse por su seguridad, también. Esto hace posible validar el diseño
de seguridad. antes de escribir el código, lo que brinda la oportunidad de identificar
y corregir cualquier vulnerabilidades de seguridad por adelantado, minimizando la
necesidad de reingeniería en un futuro fase. La revisión debe tener en cuenta las
políticas de seguridad y el objetivo entorno donde se implementará el software.
Además, la revisión debe ser cobertura holística, teniendo en cuenta la red y las
protecciones a nivel de host que son estar en su lugar para que las salvaguardas no
se contradigan y minimicen la protección que brindan. Se debe prestar especial
atención al diseño de seguridad, principios y conceptos básicos de seguridad de la
aplicación para garantizar la confidencialidad, integridad y disponibilidad de los
datos y del propio software. Adicionalmente, se debe realizar un análisis capa por
capa y nivel por nivel de la arquitectura para que exista una defensa en profundidad.