SlideShare una empresa de Scribd logo
1 de 46
Descargar para leer sin conexión
ENCRIPTA COMO SI
TODOS TE ESPIARAN,
BAILA COMO SI NADIE TE
VIERA
OWASP
OWASP (Open Web Application Security Project) es una organización internacional sin animo de lucro enfocada en
establecer estandares de seguridad para los sitios web y aplicaciones. Todos sus materiales estan disponibles de
forma gratutita y son accesibles desde su web, entre los materiales que se ofrecen son: documentación, videos y
foros.
2
OWASP TOP 10 OWASP MASVS
DEPENDENCY TRACK MOD SECURITY RULE SET
WEB SECURITY TESTING
GUIDE
SOFTWARE ASSURANCE
MATURITY MODEL
SECURITY KNOWLEDGE
FRAMEWORK
ZED ATTACK PROXY
OWASP ZAP
OWASP TOP 10
La desconfianza es la madre de la
seguridad
4
1. PERDIDA DE
CONTROL DE
ACCESO
El control de acceso implementa el cumplimiento de política de modo que
los usuarios no pueden actuar fuera de los permisos que le fueron
asignados. Las fallas generalmente conducen a la divulgación de
información no autorizada, la modificación o la destrucción de todos los
datos o la ejecución de una función de negocio fuera de los límites del
usuario.
Principio del mínimo privilegio
5
id_rol name id_permission id_rol permission
id_subpermission id_permission subpermission
No utilizar controles de acceso por URL
6
Private routes * Navigation Guard Router guard
APIs sin verificación de permisos
7
Manipulación de token JWT, cookies o campos
ocultos
8
No debemos guardar datos personales, tokens jwt, cookies,
datos de sesión o datos crediticios en localStorage
o sessionStorage
Debemos tener cookies para sesión solo del tipo HTTP ONLY
Y de tipo seguras. Se debe hacer verificación de navegador e IP
Para evitar el intercambio de tokens.
Se debe de manejar una identidad unica por cada visitante, hay muchas
Herramientas que nos pueden ayudar a ello.
9
2. Fallas
Criptográficas
Lo primero es determinar las necesidades de protección de los datos en
tránsito y en reposo. Por ejemplo, contraseñas, números de tarjetas de
crédito, registros médicos, información personal y secretos comerciales
requieren protección adicional, principalmente si están sujetos a leyes de
privacidad (por ejemplo, el Reglamento General de Protección de Datos
-GDPR- de la UE), o regulaciones, (por ejemplo, protección de datos
financieros como el Estándar de Seguridad de Datos de PCI -PCI DSS-)
Transmisión de datos de forma segura
10
¿Se transmiten datos en texto
claro? Esto se refiere a
protocolos como HTTP, SMTP,
FTP que también utilizan
actualizaciones de TLS como
STARTTLS. El tráfico externo
de Internet es peligroso.
Verifique todo el tráfico
interno, por ejemplo, entre
balanceadores de carga,
servidores web o sistemas de
back-end.
Se deben utilizar solo
protocolos seguros, de
preferencia siempre
protegidos con SSL
Utilizar certificados de CA
autoriazadas (Autoridad de
certificación)
¿Qué tipo de datos debemos encriptar?
11
Tipos de encriptados
12
Encriptado simétrico: La criptografía simétrica es la técnica criptográfica más
antigua que existe, pero sigue ofreciendo un alto nivel de seguridad. Se basa en la
utilización de una única clave secreta que se encargará de cifrar y descifrar la
información,
Encriptado asimétrico: La criptografía de clave asimétrica también es conocida
como clave pública, emplea dos llaves diferentes en cada uno de los extremos de
la comunicación para cifrarla y descifrarla.
13
Algoritmos de encriptación
AES
SHA-2
SHA-1
SHA-3
md5
HMAC
PBKDF2
RSA
RIPEMD-160
3DES
Variaciones de AES – Solo cifrado
14
ECB (Electronic Code-Book): Cifra cada bloque de datos de forma independiente y el mismo
bloque de texto sin formato dará como resultado el mismo bloque de texto cifrado.
CBC (Cipher-Block Chaining): Tiene un IV y, por lo tanto, necesita aleatoriedad cada vez que
se cifra un mensaje, cambiar una parte del mensaje requiere volver a cifrar todo después del
cambio, los errores de transmisión en un bloque de texto cifrado destruyen completamente
el texto sin formato y cambian el descifrado del siguiente bloque.
Metódos de relleno
Los metódos de relleno generalmente puede ser peligroso porque abre la posibilidad de
ataques de Oracle. La defensa más fácil es autenticar cada mensaje antes de descifrarlo.
Vea abajo.
Variaciones de AES – Solo cifrado
15
Metódos de cifrado de flujo
Generan un flujo de datos pseudo aleatorio que puede depender o no del texto sin formato.
De manera similar a los cifrados de flujo en general, el flujo pseudoaleatorio generado se
somete a XOR con el texto sin formato para generar el texto cifrado. Como puede usar
tantos bits del flujo aleatorio como desee, no necesita relleno en absoluto.
La desventaja de esta simplicidad es que el cifrado es completamente maleable., lo que
significa que un atacante puede cambiar el descifrado de la forma que desee como para un
texto sin formato p1, un texto cifrado c1 y un flujo pseudoaleatorio r y el atacante puede
elegir una diferencia d tal que el descifrado de un texto cifrado c2=c1⊕d es p2 = p1⊕d, como
p2 = c2⊕r = (c1 ⊕ d) ⊕ r = d ⊕ (c1 ⊕ r). Además, el mismo flujo pseudoaleatorio nunca debe
usarse dos veces como para dos textos cifrados c1=p1⊕r y c2=p2⊕r, un atacante puede
calcular el xor de los dos textos sin formato como c1⊕c2=p1⊕r⊕p2⊕r= p1⊕p2.
Eso también significa que cambiar el mensaje requiere un nuevo cifrado completo, si un
atacante podría haber obtenido el mensaje original.
Variaciones de AES – Solo cifrado
16
CTR (Counter Mode): Es simple, crea un flujo pseudoaleatorio que es independiente del
texto sin formato, se obtienen diferentes flujos pseudoaleatorios contando de diferentes IV
que se multiplican por una longitud máxima de mensaje para evitar la superposición,
utilizando el cifrado de mensajes es posible estar sin aleatoriedad por mensaje, el
descifrado y el cifrado se completan paralelizables, los errores de transmisión solo afectan
los bits incorrectos y nada más
OFB (Output feedback): También crea un flujo pseudoaleatorio independiente del texto sin
formato, se obtienen diferentes flujos pseudoaleatorios comenzando con un IV aleatorio
para cada mensaje, ni el cifrado ni el descifrado son paralelizables, ya que con CTR usando
procesamiento por bloques es posible el cifrado de mensajes de forma paralaela. La
aleatoriedad, como con los errores de transmisión CTR solo afectan los bits incorrectos y
nada más
Metódos de cifrado de flujo
Variaciones de AES – Solo cifrado
17
Estos modos están especializados para cifrar datos por debajo de la abstracción del
sistema de archivos.
Por razones de eficiencia, cambiar algunos datos en el disco solo debe requerir la
reescritura de un bloque de disco como máximo (512 bytes o 4 kib).
Están fuera del alcance de esta presentación, ya que tienen escenarios de uso muy
diferentes a los demás. No los utilice para nada excepto para el cifrado de disco a nivel de
bloque.
Algunos ejemplos son: XEX, XTS, LRW.
Metódos de cifrado de disco
Variaciones de AES – Cifrado autenticado
18
Para evitar ataques de oráculo de relleno y cambios en el texto cifrado, se puede calcular un
código de autenticación de mensajes (MAC) en el texto cifrado y solo descifrarlo si no ha
sido manipulado. Esto se llama encrypt-then-mac y debe preferirse a cualquier otro pedido.
Excepto en muy pocos casos de uso, la autenticidad es tan importante como la
confidencialidad (la última de las cuales es el objetivo del cifrado).Los esquemas de cifrado
autenticado (con datos asociados (AEAD)) combinan el proceso de dos partes de cifrado y
autenticación en un modo de cifrado de bloque que también produce una etiqueta de
autenticación en el proceso. En la mayoría de los casos, esto da como resultado una mejora
de la velocidad.
CCM (Counter with Cipher Block Chaining-Message Authentication Code): Es una
combinación simple del modo CTR y un CBC-MAC. El uso de cifrado de dos bloques por
bloque es muy lento.
OCB (Offset Codebook Mode): Es más rápido pero está gravado por patentes. Sin embargo,
para software gratuito (como en libertad) o no militar, el titular de la patente ha otorgado una
licencia gratuita .
Otras recomendaciones
19
• No dejar claves de cifrado expuestas en compilados,
transpilados o en lugares donde son accesibles al público.
Siempre utilizar properties o configuración remota.
• Si se utiliza un algoritmo generador de IV se debe tener mucha
precaución con la entropía del algoritmo.
• No se deben ocupar las contraseñas de los usuarios como
claves criptográficas
• Los generadores de valores pseudoaletorios que se utilicen
deben ser seguros.
20
3. Inyección
Una aplicación es vulnerable a estos tipos de ataque cuando:
Los datos proporcionados por el usuario no son validados, filtrados ni sanitizados por la
aplicación.
Se invocan consultas dinámicas o no parametrizadas, sin codificar los parámetros de forma
acorde al contexto.
Se utilizan datos dañinos dentro de los parámetros de búsqueda en consultas
Object-Relational Mapping (ORM), para extraer registros adicionales sensibles.
Se utilizan datos dañinos directamente o se concatenan, de modo que el SQL o comando
resultante contiene datos y estructuras con consultas dinámicas, comandos o procedimientos
almacenados.
Filtrado de entradas del usuario
21
Se deben de filtrar todas las entradas del usuario.
Los filtros que deben llevar:
- De código HTML, CSS, JavaScript, otros.
- Palabras clave en el servidor.
- Datos personales (tarjetas de crédito, números de telefono,
direcciones, etc)
- Rutas de archivos, URLs, IPs, etc.
- Código binario, hexadecimal, base64, etc.
22
23
4. Diseño Inseguro
El diseño inseguro es una categoría amplia que representa diferentes debilidades, expresadas
como "diseño de control faltante o ineficaz".
Existe una diferencia entre un diseño inseguro y una implementación insegura. Distinguimos
entre fallas de diseño y defectos de implementación por un motivo, difieren en la causa raíz y
remediaciones. Incluso un diseño seguro puede tener defectos de implementación que
conduzcan a vulnerabilidades que pueden explotarse.
Un diseño inseguro no se puede arreglar con una implementación perfecta, ya que, por
definición, los controles de seguridad necesarios nunca se crearon para defenderse de ataques
específicos. Uno de los factores que contribuyen al diseño inseguro es la falta de perfiles de
riesgo empresarial inherentes al software o sistema que se está desarrollando y, por lo tanto, la
falta de determinación del nivel de diseño de seguridad que se requiere.
Recomendaciones para diseño seguro
24
• Establezca y use un ciclo de desarrollo seguro apoyado en Profesionales en Seguridad de
Aplicaciones para ayudarlo a evaluar y diseñar la seguridad y controles relacionados con la
privacidad.
• Establezca y utilice un catálogo de patrones de diseño seguros o componentes de "camino
pavimentado" listos para ser utilizados.
• Utilice el modelado de amenazas para flujos críticos de autenticación, control de acceso, lógica de
negocio y todo clave.
• Integre el lenguaje y los controles de seguridad en las historias de usuario. Integre verificaciones de
viabilidad en cada capa de su aplicación (desde el frontend al backend).
• Escriba pruebas unitarias y de integración para validar que todos los flujos críticos son resistentes
al modelo de amenazas.
• Recopile casos de uso y casos de mal uso para cada capa de la aplicación.
• Separe las capas del sistema y las capas de red según las necesidades de exposición y protección
• Separe a los tenants de manera robusta por diseño en todos los niveles. Limitar el consumo de
recursos por usuario o servicio.
25
5. Configuración
de Seguridad
Incorrecta
La aplicación puede ser vulnerable si:
Le falta el hardening de seguridad adecuado en cualquier parte del stack tecnológico o permisos
configurados incorrectamente en los servicios en la nube.
Tiene funciones innecesarias habilitadas o instaladas (puertos, servicios, páginas, cuentas o privilegios
innecesarios, por ejemplo).
Las cuentas predeterminadas y sus contraseñas aún están habilitadas y sin cambios. El manejo de errores
revela a los usuarios rastros de pila u otros mensajes de error demasiado informativos.
Para sistemas actualizados, las últimas funciones de seguridad están deshabilitadas o no configuradas de
forma segura.
Las configuraciones de seguridad en los servidores de aplicaciones, frameworks de aplicaciones (Struts,
Spring o ASP.NET por ejemplo), bibliotecas, bases de datos, etc., no poseen configurados valores seguros.
Medidas de seguridad para servidores
Linux
26
• Identificación de usuarios no autorizados.
• Identificación de procesos no autorizados.
• Correcta gestión de permisos para el sistema de archivos.
• Asegurar el bootloader.
• Eliminar paquetes no utilizados.
• Revisión de conexiones de red.
• Revisión de scripts de inicio y systemd.
• Firewall, iptables.
• Actualizaciones de seguridad.
Otras recomendaciones
27
• Efectuar monitoreo de las aplicaciones del registro de sesiones con IP,
dispositivo, huella digital.
• Realizar monitoreo de rendimiento en el servidor, uso de CPU, memoria
RAM, uso de disco duro, uso de red (Entrada y salida).
• Efectuar seguimiento de eventos por aplicación. Uso recomendado de
Navigator.sendBeacon() en JavaScript.
• Realizar una arquitectura segmentada, preferir el uso de microservicios y
exponer solo lo necesario.
28
6. Componentes
Vulnerables y
Desactualizados
La aplicación puede ser vulnerable si:
Si no conoce las versiones de todos los componentes que utiliza (tanto en el cliente como en el servidor).
Esto incluye los componentes que usa directamente, así como las dependencias anidadas.
Si el software es vulnerable, carece de soporte o no está actualizado. Esto incluye el sistema operativo, el
servidor web/de aplicaciones, el sistema de administración de bases de datos (DBMS), las aplicaciones,
las API y todos los componentes, los entornos de ejecución y las bibliotecas.
Si no analiza en búsqueda de vulnerabilidades de forma regular y no se suscribe a los boletines de
seguridad relacionados con los componentes que utiliza.
Si no repara o actualiza la plataforma subyacente, frameworks y dependencias de manera oportuna y
basada en el riesgo. Esto suele ocurrir en entornos en los que la aplicación de parches de seguridad es
una tarea mensual o trimestral bajo control de cambios, lo que deja a las organizaciones abiertas a días o
meses de exposición innecesaria a vulnerabilidades con soluciones disponibles..
Dependencias de software
29
Escaneo de código fuente
30
Otras recomendaciones
31
• Utilizar el minimo de dependencias posible, si algo se puede programar es
mejor no utilizar una dependencia.
• Revisar siempre los autores de las dependencias, la ultima actualización
que se realizó y si es posible hay que revisar el repositorio para ver el
historial de commits y el compromiso que se tiene con el proyecto.
Tambien podemos tomar otros datos como válidos como las estrellas de
Github, colaboradores, etc.
• Siempre preferir dependencias con soporte por parte de fundaciones o
que sean Open Source.
• Hacer revisión de licencias de las dependencias para integrarla en un
proyecto y evitar problemas legales en un futuro.
32
7. Fallas de
Identificación y
Autenticación
La confirmación de la identidad, la autenticación y la gestión de sesiones del usuario son fundamentales
para protegerse contra ataques relacionados con la autenticación. Puede haber debilidades de
autenticación si la aplicación:
Permite ataques automatizados como la reutilización de credenciales conocidas, donde el atacante posee
una lista de pares de usuario y contraseña válidos.
Permite ataques de fuerza bruta u otros ataques automatizados.
Permite contraseñas por defecto, débiles o bien conocidas, como "Password1" o "admin/admin".
Posee procesos débiles o no efectivos para las funcionalidades de olvido de contraseña o recuperación de
credenciales, como "respuestas basadas en el conocimiento", las cuales no se pueden implementar de
forma segura.
Almacena las contraseñas en texto claro, cifradas o utilizando funciones de hash débiles.
No posee una autenticación multi-factor o la implementada es ineficaz.
Expone el identificador de sesión en la URL. Reutiliza el identificador de sesión después de iniciar sesión.
Autenticación multifactor
33
La autenticación multifactor (multi factor authentication o MFA) es una
tecnología de seguridad que requiere múltiples métodos de autenticación de
categorías independientes de credenciales para verificar la identidad de un
usuario para un inicio de sesión u otra transacción.
Como debe ser una contraseña segura
34
• Una contraseña segura es una contraseña que otras personas no pueden determinar
• fácilmente adivinándola o utilizando programas automáticos.
• Debe incluir números
• Utilice una combinación de letras mayúsculas y minúsculas.
• Incluya caracteres especiales. ¿Cuáles son los caracteres especiales? Cualquiera de los
• siguientes caracteres: - * ? ! @ # $ / () {} = . , ; :
• Tenga una longitud mayor o igual a 8 caracteres.
• No debe tener espacios en blanco.
• No utilice información personal en la contraseña (como su nombre, fecha de nacimiento, etc.)
• No utilice patrones de teclado (qwerty) ni números en secuencia (1234).
• No utilice únicamente números, mayúsculas o minúsculas en su contraseña. No repita caracteres
(1111111).
• No comunique la contraseña a nadie. Nunca anote su contraseña en papel para recordarla.
Otras recomendaciones
35
• No incluya o implemente en su software credenciales por defecto, particularmente para usuarios administradores.
• Implemente un control contra contraseñas débiles, tal como verificar que una nueva contraseña o la utilizada
• en el cambio de contraseña no esté incluida en la lista de las 10,000 peores contraseñas.
• Alinear las políticas de largo, complejidad y rotación de las contraseñas con las pautas de la sección 5.1.1 para
Secretos Memorizados de la guía del NIST 800-63b u otras políticas de contraseñas modernas, basadas en
evidencias.
• Asegúrese que el registro, la recuperación de las credenciales y el uso de APIs, no permiten los ataques de
enumeración de usuarios, mediante la utilización de los mismos mensajes genéricos en todas las salidas.
• Limite o incremente el tiempo de espera entre intentos fallidos de inicio de sesión, pero tenga cuidado de no crear
un escenario de denegación de servicio.
• Registre todos los fallos y avise a los administradores cuando se detecten ataques de rellenos automatizados de
credenciales, fuerza bruta u otros.
• Utilice un gestor de sesión en el servidor, integrado, seguro y que genere un nuevo ID de sesión aleatorio con alta
entropía después de iniciar sesión.
• Los identificadores de sesión no deben incluirse en la URL, deben almacenarse de forma segura y deben ser
invalidados después del cierre de sesión, luego de un tiempo de inactividad o por un tiempo de espera absoluto.
36
8. Fallas en el
Software y en la
Integridad de los
Datos
Los fallos de integridad del software y de los datos están relacionados con código e infraestructura no
protegidos contra alteraciones (integridad). Ejemplos de esto son cuando una aplicación depende de
plugins, bibliotecas o módulos de fuentes, repositorios o redes de entrega de contenidos (CDN) no
confiables. Un pipeline CI/CD inseguro puede conducir a accesos no autorizados, la inclusión de código
malicioso o el compromiso del sistema en general. Además, es común en la actualidad que las
aplicaciones implementen funcionalidades de actualización, a través de las cuales se descargan nuevas
versiones de la misma sin las debidas verificaciones integridad que fueron realizadas previamente al
instalar la aplicación. Los atacantes potencialmente pueden cargar sus propias actualizaciones para que
sean distribuidas y ejecutadas en todas las instalaciones. Otro ejemplo es cuando objetos o datos son
codificados o serializados en estructuras que un atacante puede ver y modificar, produciéndose una
deserialización insegura.
Utilizar firmas digitales para validar la
integración de los datos
37
• En ocasiones, cuando descargas archivos en línea, se te proporciona un hash de archivo para
verificar la integridad del mismo. Con razón o sin ella, la mayoría de las personas ignoran la
verificación de hash de archivos, suponiendo que, si el archivo es malicioso, el propietario del sitio
se daría cuenta y lo eliminaría. Eso o tu antivirus detendrían la descarga sospechosa antes de que
se ejecute.
• Para validar archivos en Linux podemos realizar lo siguiente:
• md5sum /ruta/al/archivo
• sha1sum /ruta/al/archivo
• sha256sum /ruta/al/archivo
Otras recomendaciones
38
• Utilice firmas digitales o mecanismos similares para verificar que el software o datos provienen
efectivamente de la fuente esperada y no fueron alterados.
• Asegúrese que las bibliotecas y dependencias, tales como npm o maven son utilizadas desde
repositorios confiables.
• Si su perfil de riesgo es alto, considere alojarlas en un repositorio interno cuyo contenido ha sido
previamente analizado.
• Asegúrese que se utilice una herramienta de análisis de componentes de terceros, cómo OWASP
Dependency Check u OWASP CycloneDX, con el fin de verificar la ausencia de vulnerabilidades conocidas.
• Asegúrese que se utilice un proceso de revisión de cambios de código y configuraciones para minimizar
las posibilidades de que código o configuraciones maliciosas sean introducidos en su pipeline.
• Asegúrese que su pipeline CI/CD posee adecuados controles de acceso, segregación y configuraciones
que permitan asegurar la integridad del código a través del proceso de build y despliegue.
• Asegúrese que datos sin cifrar o firmar no son enviados a clientes no confiables sin alguna forma de
verificación de integridad o firma electrónica con el fin de detectar modificaciones o la reutilización de
datos previamente serializados.
39
9. Fallas en el
Registro y
Monitoreo
Sin registros y monitoreo, las brechas no pueden ser detectadas.
Registros, detecciones, monitoreo y respuesta activas insuficientes pueden ocurrir en cualquier
momento: Eventos auditables, tales como los inicios de sesión, fallas en el inicio de sesión y
transacciones de alto valor no son registradas.
Advertencias y errores generan registros poco claros, inadecuados y en algunos casos ni se generan.
Registros en aplicaciones y API no son monitoreados para detectar actividades sospechosas.
Los registros son únicamente almacenados en forma local.
Los umbrales de alerta y procesos de escalamiento no están correctamente implementados o no son
efectivos
Las pruebas de penetración y los escaneos utilizando herramientas de pruebas dinámicas de seguridad
en aplicaciones (como ser OWASP ZAP) no generan alertas.
Las aplicaciones no logran detectar, escalar, o alertar sobre ataques activos en tiempo real ni cercanos al
tiempo real.
Recomendaciones
40
• Asegúrese de que todos los errores de inicio de sesión, de control de acceso y de validación de
entradas de datos del lado del servidor se pueden registrar con suficiente contexto como para
identificar cuentas sospechosas o maliciosas y mantenerlo durante el tiempo suficiente para
permitir un posterior análisis forense.
• Asegúrese de que los registros se generen en un formato fácil de procesar por las herramientas
de gestión de registros.
• Asegúrese de que los datos de registros son correctamente codificados para prevenir inyecciones
o ataques en el sistema de monitoreo o registros.
• Asegúrese de que las transacciones de alto valor poseen una traza de auditoria con controles de
integridad para evitar la modificación o el borrado, tales como permitir únicamente la inserción en
las tablas de base de datos o similares.
• Los equipos de DevSecOps debe establecer alertas y monitoreo efectivo tal que se detecte
actividades sospechosas y responderlas rápidamente. Establezca o adopte un plan de respuesta y
recuperación, tal como NIST 800-61r2 o posterior.
41
10. Falsificación
de Solicitudes del
Lado del Servidor
Las fallas de SSRF ocurren cuando una aplicación web está obteniendo un recurso remoto sin validar la
URL proporcionada por el usuario. Permite que un atacante coaccione a la aplicación para que envíe una
solicitud falsificada a un destino inesperado, incluso cuando está protegido por un firewall, VPN u otro
tipo de lista de control de acceso a la red (ACL). Dado que las aplicaciones web modernas brindan a los
usuarios finales funciones convenientes, la búsqueda de una URL se convierte en un escenario común.
Como resultado, la incidencia de SSRF está aumentando. Además, la gravedad de SSRF es cada vez mayor
debido a los servicios en la nube y la complejidad de las arquitecturas.
Desde la capa de red
42
• Segmente la funcionalidad de acceso a recursos remotos en redes separadas
para reducir el impacto de SSRF
• Haga cumplir las políticas de firewall "denegar por defecto" o las reglas de control
de acceso a la red para bloquear todo el tráfico de la intranet excepto el esencial.
• Consejos:
~ Establezca la propiedad y un ciclo de vida para las reglas de firewall
basadas en aplicaciones.
~ Registre en logs todos los flujos de red aceptados y bloqueados en
firewalls.
Desde la capa de la aplicación
43
• Sanitice y valide todos los datos de entrada proporcionados por el cliente.
• Haga cumplir el esquema de URL, el puerto y destino a través de una lista positiva
de items permitidos.
• No envíe respuestas en formato "crudo" a los clientes.
• Deshabilite las redirecciones HTTP Tenga en cuenta la coherencia de la URL para
evitar ataques como el enlace de DNS y las condiciones de carrera de "tiempo de
verificación, tiempo de uso" (TOCTOU por sus siglas en inglés).
• No mitigue SSRF mediante el uso de una lista de denegación o una expresión
regular.
Los atacantes poseen listas de payloads, herramientas y habilidades para eludir las
listas de denegación.
Gracias
por su
atención
¿Tienes preguntas?
44
Si tu empresa gasta más en
café que en seguridad TI, serás
hackeado. Es más, merecerás
ser hackeado.
45
Gerardo Flores
info@notawait.com
Fundador de NotAwait y confundador de Malael, programador fullstack.
Experiencia en dirección de proyectos de informática

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

Técnicas de PDI com Java - Ercemapi 2009
Técnicas de PDI com Java - Ercemapi 2009Técnicas de PDI com Java - Ercemapi 2009
Técnicas de PDI com Java - Ercemapi 2009
 
Word embeddings
Word embeddingsWord embeddings
Word embeddings
 
BFS
BFSBFS
BFS
 
Cuckoo Filter: Practically Better than Bloom
Cuckoo Filter: Practically Better than BloomCuckoo Filter: Practically Better than Bloom
Cuckoo Filter: Practically Better than Bloom
 
Faster rcnn
Faster rcnnFaster rcnn
Faster rcnn
 
Weiler atherton
Weiler athertonWeiler atherton
Weiler atherton
 
xAPI 101
xAPI 101xAPI 101
xAPI 101
 
Practical Natural Language Processing
Practical Natural Language ProcessingPractical Natural Language Processing
Practical Natural Language Processing
 
word level analysis
word level analysis word level analysis
word level analysis
 
Breadth first search and depth first search
Breadth first search and  depth first searchBreadth first search and  depth first search
Breadth first search and depth first search
 
Trees, Binary Search Tree, AVL Tree in Data Structures
Trees, Binary Search Tree, AVL Tree in Data Structures Trees, Binary Search Tree, AVL Tree in Data Structures
Trees, Binary Search Tree, AVL Tree in Data Structures
 
Faster R-CNN - PR012
Faster R-CNN - PR012Faster R-CNN - PR012
Faster R-CNN - PR012
 
Pushdown automata
Pushdown automataPushdown automata
Pushdown automata
 
NLP_KASHK:Evaluating Language Model
NLP_KASHK:Evaluating Language ModelNLP_KASHK:Evaluating Language Model
NLP_KASHK:Evaluating Language Model
 
Prims Algorithm
Prims AlgorithmPrims Algorithm
Prims Algorithm
 
Avl trees
Avl treesAvl trees
Avl trees
 
 Obsidian Talk JP - Template & Daily notes - 2021-09-04
 Obsidian Talk JP - Template & Daily notes - 2021-09-04 Obsidian Talk JP - Template & Daily notes - 2021-09-04
 Obsidian Talk JP - Template & Daily notes - 2021-09-04
 
Database ,7 query localization
Database ,7 query localizationDatabase ,7 query localization
Database ,7 query localization
 
Tutorial on word2vec
Tutorial on word2vecTutorial on word2vec
Tutorial on word2vec
 
Activity diagram
Activity diagramActivity diagram
Activity diagram
 

Similar a Encripta como si todos te espiaran y baila como si nadie te viera!

Métodos de encriptación en las redes privadas virtuales
Métodos de encriptación en las redes privadas virtualesMétodos de encriptación en las redes privadas virtuales
Métodos de encriptación en las redes privadas virtualesESPE
 
Métodos de encriptación en las redes privadas virtuales
Métodos de encriptación en las redes privadas virtualesMétodos de encriptación en las redes privadas virtuales
Métodos de encriptación en las redes privadas virtualesESPE
 
Métodos de encriptación en las redes privadas virtuales
Métodos de encriptación en las redes privadas virtualesMétodos de encriptación en las redes privadas virtuales
Métodos de encriptación en las redes privadas virtualesESPE
 
Métodos encriptación en vpns
Métodos encriptación en vpnsMétodos encriptación en vpns
Métodos encriptación en vpnsbryan_azr
 
Interconexion de redes
Interconexion de redesInterconexion de redes
Interconexion de redesKary Gomez
 
Metodos De Encriptacion Para El Cifrado De Claves
Metodos De Encriptacion Para El Cifrado De ClavesMetodos De Encriptacion Para El Cifrado De Claves
Metodos De Encriptacion Para El Cifrado De Clavescarlitas
 
Metodo De Encriptacion
Metodo De EncriptacionMetodo De Encriptacion
Metodo De EncriptacionStefany
 
M E T O D O S D E E N C R I P T A C I O N
M E T O D O S  D E  E N C R I P T A C I O NM E T O D O S  D E  E N C R I P T A C I O N
M E T O D O S D E E N C R I P T A C I O Nlizbeth
 
Protocolo de redes ssl
Protocolo de redes sslProtocolo de redes ssl
Protocolo de redes sslNANO-06
 
Seguridad en redes
Seguridad en redesSeguridad en redes
Seguridad en redes3123753782
 
Métodos de encriptación en vpn s
Métodos de encriptación en vpn sMétodos de encriptación en vpn s
Métodos de encriptación en vpn sespe
 
taller servidores
taller servidorestaller servidores
taller servidoressena
 

Similar a Encripta como si todos te espiaran y baila como si nadie te viera! (20)

Stiveeeeeeeeeeen[1]
Stiveeeeeeeeeeen[1]Stiveeeeeeeeeeen[1]
Stiveeeeeeeeeeen[1]
 
Métodos de encriptación en las redes privadas virtuales
Métodos de encriptación en las redes privadas virtualesMétodos de encriptación en las redes privadas virtuales
Métodos de encriptación en las redes privadas virtuales
 
Métodos de encriptación en las redes privadas virtuales
Métodos de encriptación en las redes privadas virtualesMétodos de encriptación en las redes privadas virtuales
Métodos de encriptación en las redes privadas virtuales
 
Métodos de encriptación en las redes privadas virtuales
Métodos de encriptación en las redes privadas virtualesMétodos de encriptación en las redes privadas virtuales
Métodos de encriptación en las redes privadas virtuales
 
Métodos encriptación en vpns
Métodos encriptación en vpnsMétodos encriptación en vpns
Métodos encriptación en vpns
 
Vpn
VpnVpn
Vpn
 
Vpn
VpnVpn
Vpn
 
Vpn
VpnVpn
Vpn
 
Vpn
VpnVpn
Vpn
 
Interconexion de redes
Interconexion de redesInterconexion de redes
Interconexion de redes
 
Metodos De Encriptacion Para El Cifrado De Claves
Metodos De Encriptacion Para El Cifrado De ClavesMetodos De Encriptacion Para El Cifrado De Claves
Metodos De Encriptacion Para El Cifrado De Claves
 
Metodo De Encriptacion
Metodo De EncriptacionMetodo De Encriptacion
Metodo De Encriptacion
 
Introducción a la Criptografia
Introducción a la CriptografiaIntroducción a la Criptografia
Introducción a la Criptografia
 
M E T O D O S D E E N C R I P T A C I O N
M E T O D O S  D E  E N C R I P T A C I O NM E T O D O S  D E  E N C R I P T A C I O N
M E T O D O S D E E N C R I P T A C I O N
 
Protocolo de redes ssl
Protocolo de redes sslProtocolo de redes ssl
Protocolo de redes ssl
 
Seguridad en redes
Seguridad en redesSeguridad en redes
Seguridad en redes
 
Métodos de encriptación en vpn s
Métodos de encriptación en vpn sMétodos de encriptación en vpn s
Métodos de encriptación en vpn s
 
seguridad y encriptamiento de datos
seguridad y encriptamiento de datosseguridad y encriptamiento de datos
seguridad y encriptamiento de datos
 
taller servidores
taller servidorestaller servidores
taller servidores
 
Kevin chipantashi taller#1_seguridades
Kevin chipantashi taller#1_seguridadesKevin chipantashi taller#1_seguridades
Kevin chipantashi taller#1_seguridades
 

Más de CloudNativeElSalvado

#107 Monitoring-as-Code con Terraform y New Relic
#107 Monitoring-as-Code con Terraform y New Relic#107 Monitoring-as-Code con Terraform y New Relic
#107 Monitoring-as-Code con Terraform y New RelicCloudNativeElSalvado
 
El Dr. de Blockchain y el ecosistema del proyecto Hyperledger + Cloud Native ...
El Dr. de Blockchain y el ecosistema del proyecto Hyperledger + Cloud Native ...El Dr. de Blockchain y el ecosistema del proyecto Hyperledger + Cloud Native ...
El Dr. de Blockchain y el ecosistema del proyecto Hyperledger + Cloud Native ...CloudNativeElSalvado
 
Monolito a micro servicios por dónde empezar
Monolito a micro servicios por dónde empezarMonolito a micro servicios por dónde empezar
Monolito a micro servicios por dónde empezarCloudNativeElSalvado
 
El camino de un estudiante: habilidades y pasantías
El camino de un estudiante: habilidades y pasantíasEl camino de un estudiante: habilidades y pasantías
El camino de un estudiante: habilidades y pasantíasCloudNativeElSalvado
 
Desarrollar e Implementar CI/CD con Github Actions - oct. 28
Desarrollar e Implementar CI/CD con Github Actions - oct. 28Desarrollar e Implementar CI/CD con Github Actions - oct. 28
Desarrollar e Implementar CI/CD con Github Actions - oct. 28CloudNativeElSalvado
 
La importancia de versionar el código: GitHub, portafolio y recursos para est...
La importancia de versionar el código: GitHub, portafolio y recursos para est...La importancia de versionar el código: GitHub, portafolio y recursos para est...
La importancia de versionar el código: GitHub, portafolio y recursos para est...CloudNativeElSalvado
 
Hablemos sobre la comunidad Cloud Native El Salvador
Hablemos sobre la comunidad Cloud Native El SalvadorHablemos sobre la comunidad Cloud Native El Salvador
Hablemos sobre la comunidad Cloud Native El SalvadorCloudNativeElSalvado
 

Más de CloudNativeElSalvado (9)

#107 Monitoring-as-Code con Terraform y New Relic
#107 Monitoring-as-Code con Terraform y New Relic#107 Monitoring-as-Code con Terraform y New Relic
#107 Monitoring-as-Code con Terraform y New Relic
 
Service Mesh con Istio
Service Mesh con IstioService Mesh con Istio
Service Mesh con Istio
 
El Dr. de Blockchain y el ecosistema del proyecto Hyperledger + Cloud Native ...
El Dr. de Blockchain y el ecosistema del proyecto Hyperledger + Cloud Native ...El Dr. de Blockchain y el ecosistema del proyecto Hyperledger + Cloud Native ...
El Dr. de Blockchain y el ecosistema del proyecto Hyperledger + Cloud Native ...
 
Monolito a micro servicios por dónde empezar
Monolito a micro servicios por dónde empezarMonolito a micro servicios por dónde empezar
Monolito a micro servicios por dónde empezar
 
El camino de un estudiante: habilidades y pasantías
El camino de un estudiante: habilidades y pasantíasEl camino de un estudiante: habilidades y pasantías
El camino de un estudiante: habilidades y pasantías
 
Desarrollar e Implementar CI/CD con Github Actions - oct. 28
Desarrollar e Implementar CI/CD con Github Actions - oct. 28Desarrollar e Implementar CI/CD con Github Actions - oct. 28
Desarrollar e Implementar CI/CD con Github Actions - oct. 28
 
Telco cloud
Telco cloudTelco cloud
Telco cloud
 
La importancia de versionar el código: GitHub, portafolio y recursos para est...
La importancia de versionar el código: GitHub, portafolio y recursos para est...La importancia de versionar el código: GitHub, portafolio y recursos para est...
La importancia de versionar el código: GitHub, portafolio y recursos para est...
 
Hablemos sobre la comunidad Cloud Native El Salvador
Hablemos sobre la comunidad Cloud Native El SalvadorHablemos sobre la comunidad Cloud Native El Salvador
Hablemos sobre la comunidad Cloud Native El Salvador
 

Último

Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3AlexysCaytanoMelndez1
 
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...ITeC Instituto Tecnología Construcción
 
Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Opentix
 
Introducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTERIntroducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTEREMMAFLORESCARMONA
 
Unidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionUnidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionarmando_cardenas
 
Manual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdfManual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdfmasogeis
 
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLOPARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLOSelenaCoronadoHuaman
 

Último (7)

Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3
 
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
 
Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200
 
Introducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTERIntroducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTER
 
Unidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionUnidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacion
 
Manual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdfManual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdf
 
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLOPARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
 

Encripta como si todos te espiaran y baila como si nadie te viera!

  • 1. ENCRIPTA COMO SI TODOS TE ESPIARAN, BAILA COMO SI NADIE TE VIERA
  • 2. OWASP OWASP (Open Web Application Security Project) es una organización internacional sin animo de lucro enfocada en establecer estandares de seguridad para los sitios web y aplicaciones. Todos sus materiales estan disponibles de forma gratutita y son accesibles desde su web, entre los materiales que se ofrecen son: documentación, videos y foros. 2 OWASP TOP 10 OWASP MASVS DEPENDENCY TRACK MOD SECURITY RULE SET WEB SECURITY TESTING GUIDE SOFTWARE ASSURANCE MATURITY MODEL SECURITY KNOWLEDGE FRAMEWORK ZED ATTACK PROXY OWASP ZAP
  • 3. OWASP TOP 10 La desconfianza es la madre de la seguridad
  • 4. 4 1. PERDIDA DE CONTROL DE ACCESO El control de acceso implementa el cumplimiento de política de modo que los usuarios no pueden actuar fuera de los permisos que le fueron asignados. Las fallas generalmente conducen a la divulgación de información no autorizada, la modificación o la destrucción de todos los datos o la ejecución de una función de negocio fuera de los límites del usuario.
  • 5. Principio del mínimo privilegio 5 id_rol name id_permission id_rol permission id_subpermission id_permission subpermission
  • 6. No utilizar controles de acceso por URL 6 Private routes * Navigation Guard Router guard
  • 7. APIs sin verificación de permisos 7
  • 8. Manipulación de token JWT, cookies o campos ocultos 8 No debemos guardar datos personales, tokens jwt, cookies, datos de sesión o datos crediticios en localStorage o sessionStorage Debemos tener cookies para sesión solo del tipo HTTP ONLY Y de tipo seguras. Se debe hacer verificación de navegador e IP Para evitar el intercambio de tokens. Se debe de manejar una identidad unica por cada visitante, hay muchas Herramientas que nos pueden ayudar a ello.
  • 9. 9 2. Fallas Criptográficas Lo primero es determinar las necesidades de protección de los datos en tránsito y en reposo. Por ejemplo, contraseñas, números de tarjetas de crédito, registros médicos, información personal y secretos comerciales requieren protección adicional, principalmente si están sujetos a leyes de privacidad (por ejemplo, el Reglamento General de Protección de Datos -GDPR- de la UE), o regulaciones, (por ejemplo, protección de datos financieros como el Estándar de Seguridad de Datos de PCI -PCI DSS-)
  • 10. Transmisión de datos de forma segura 10 ¿Se transmiten datos en texto claro? Esto se refiere a protocolos como HTTP, SMTP, FTP que también utilizan actualizaciones de TLS como STARTTLS. El tráfico externo de Internet es peligroso. Verifique todo el tráfico interno, por ejemplo, entre balanceadores de carga, servidores web o sistemas de back-end. Se deben utilizar solo protocolos seguros, de preferencia siempre protegidos con SSL Utilizar certificados de CA autoriazadas (Autoridad de certificación)
  • 11. ¿Qué tipo de datos debemos encriptar? 11
  • 12. Tipos de encriptados 12 Encriptado simétrico: La criptografía simétrica es la técnica criptográfica más antigua que existe, pero sigue ofreciendo un alto nivel de seguridad. Se basa en la utilización de una única clave secreta que se encargará de cifrar y descifrar la información, Encriptado asimétrico: La criptografía de clave asimétrica también es conocida como clave pública, emplea dos llaves diferentes en cada uno de los extremos de la comunicación para cifrarla y descifrarla.
  • 14. Variaciones de AES – Solo cifrado 14 ECB (Electronic Code-Book): Cifra cada bloque de datos de forma independiente y el mismo bloque de texto sin formato dará como resultado el mismo bloque de texto cifrado. CBC (Cipher-Block Chaining): Tiene un IV y, por lo tanto, necesita aleatoriedad cada vez que se cifra un mensaje, cambiar una parte del mensaje requiere volver a cifrar todo después del cambio, los errores de transmisión en un bloque de texto cifrado destruyen completamente el texto sin formato y cambian el descifrado del siguiente bloque. Metódos de relleno Los metódos de relleno generalmente puede ser peligroso porque abre la posibilidad de ataques de Oracle. La defensa más fácil es autenticar cada mensaje antes de descifrarlo. Vea abajo.
  • 15. Variaciones de AES – Solo cifrado 15 Metódos de cifrado de flujo Generan un flujo de datos pseudo aleatorio que puede depender o no del texto sin formato. De manera similar a los cifrados de flujo en general, el flujo pseudoaleatorio generado se somete a XOR con el texto sin formato para generar el texto cifrado. Como puede usar tantos bits del flujo aleatorio como desee, no necesita relleno en absoluto. La desventaja de esta simplicidad es que el cifrado es completamente maleable., lo que significa que un atacante puede cambiar el descifrado de la forma que desee como para un texto sin formato p1, un texto cifrado c1 y un flujo pseudoaleatorio r y el atacante puede elegir una diferencia d tal que el descifrado de un texto cifrado c2=c1⊕d es p2 = p1⊕d, como p2 = c2⊕r = (c1 ⊕ d) ⊕ r = d ⊕ (c1 ⊕ r). Además, el mismo flujo pseudoaleatorio nunca debe usarse dos veces como para dos textos cifrados c1=p1⊕r y c2=p2⊕r, un atacante puede calcular el xor de los dos textos sin formato como c1⊕c2=p1⊕r⊕p2⊕r= p1⊕p2. Eso también significa que cambiar el mensaje requiere un nuevo cifrado completo, si un atacante podría haber obtenido el mensaje original.
  • 16. Variaciones de AES – Solo cifrado 16 CTR (Counter Mode): Es simple, crea un flujo pseudoaleatorio que es independiente del texto sin formato, se obtienen diferentes flujos pseudoaleatorios contando de diferentes IV que se multiplican por una longitud máxima de mensaje para evitar la superposición, utilizando el cifrado de mensajes es posible estar sin aleatoriedad por mensaje, el descifrado y el cifrado se completan paralelizables, los errores de transmisión solo afectan los bits incorrectos y nada más OFB (Output feedback): También crea un flujo pseudoaleatorio independiente del texto sin formato, se obtienen diferentes flujos pseudoaleatorios comenzando con un IV aleatorio para cada mensaje, ni el cifrado ni el descifrado son paralelizables, ya que con CTR usando procesamiento por bloques es posible el cifrado de mensajes de forma paralaela. La aleatoriedad, como con los errores de transmisión CTR solo afectan los bits incorrectos y nada más Metódos de cifrado de flujo
  • 17. Variaciones de AES – Solo cifrado 17 Estos modos están especializados para cifrar datos por debajo de la abstracción del sistema de archivos. Por razones de eficiencia, cambiar algunos datos en el disco solo debe requerir la reescritura de un bloque de disco como máximo (512 bytes o 4 kib). Están fuera del alcance de esta presentación, ya que tienen escenarios de uso muy diferentes a los demás. No los utilice para nada excepto para el cifrado de disco a nivel de bloque. Algunos ejemplos son: XEX, XTS, LRW. Metódos de cifrado de disco
  • 18. Variaciones de AES – Cifrado autenticado 18 Para evitar ataques de oráculo de relleno y cambios en el texto cifrado, se puede calcular un código de autenticación de mensajes (MAC) en el texto cifrado y solo descifrarlo si no ha sido manipulado. Esto se llama encrypt-then-mac y debe preferirse a cualquier otro pedido. Excepto en muy pocos casos de uso, la autenticidad es tan importante como la confidencialidad (la última de las cuales es el objetivo del cifrado).Los esquemas de cifrado autenticado (con datos asociados (AEAD)) combinan el proceso de dos partes de cifrado y autenticación en un modo de cifrado de bloque que también produce una etiqueta de autenticación en el proceso. En la mayoría de los casos, esto da como resultado una mejora de la velocidad. CCM (Counter with Cipher Block Chaining-Message Authentication Code): Es una combinación simple del modo CTR y un CBC-MAC. El uso de cifrado de dos bloques por bloque es muy lento. OCB (Offset Codebook Mode): Es más rápido pero está gravado por patentes. Sin embargo, para software gratuito (como en libertad) o no militar, el titular de la patente ha otorgado una licencia gratuita .
  • 19. Otras recomendaciones 19 • No dejar claves de cifrado expuestas en compilados, transpilados o en lugares donde son accesibles al público. Siempre utilizar properties o configuración remota. • Si se utiliza un algoritmo generador de IV se debe tener mucha precaución con la entropía del algoritmo. • No se deben ocupar las contraseñas de los usuarios como claves criptográficas • Los generadores de valores pseudoaletorios que se utilicen deben ser seguros.
  • 20. 20 3. Inyección Una aplicación es vulnerable a estos tipos de ataque cuando: Los datos proporcionados por el usuario no son validados, filtrados ni sanitizados por la aplicación. Se invocan consultas dinámicas o no parametrizadas, sin codificar los parámetros de forma acorde al contexto. Se utilizan datos dañinos dentro de los parámetros de búsqueda en consultas Object-Relational Mapping (ORM), para extraer registros adicionales sensibles. Se utilizan datos dañinos directamente o se concatenan, de modo que el SQL o comando resultante contiene datos y estructuras con consultas dinámicas, comandos o procedimientos almacenados.
  • 21. Filtrado de entradas del usuario 21 Se deben de filtrar todas las entradas del usuario. Los filtros que deben llevar: - De código HTML, CSS, JavaScript, otros. - Palabras clave en el servidor. - Datos personales (tarjetas de crédito, números de telefono, direcciones, etc) - Rutas de archivos, URLs, IPs, etc. - Código binario, hexadecimal, base64, etc.
  • 22. 22
  • 23. 23 4. Diseño Inseguro El diseño inseguro es una categoría amplia que representa diferentes debilidades, expresadas como "diseño de control faltante o ineficaz". Existe una diferencia entre un diseño inseguro y una implementación insegura. Distinguimos entre fallas de diseño y defectos de implementación por un motivo, difieren en la causa raíz y remediaciones. Incluso un diseño seguro puede tener defectos de implementación que conduzcan a vulnerabilidades que pueden explotarse. Un diseño inseguro no se puede arreglar con una implementación perfecta, ya que, por definición, los controles de seguridad necesarios nunca se crearon para defenderse de ataques específicos. Uno de los factores que contribuyen al diseño inseguro es la falta de perfiles de riesgo empresarial inherentes al software o sistema que se está desarrollando y, por lo tanto, la falta de determinación del nivel de diseño de seguridad que se requiere.
  • 24. Recomendaciones para diseño seguro 24 • Establezca y use un ciclo de desarrollo seguro apoyado en Profesionales en Seguridad de Aplicaciones para ayudarlo a evaluar y diseñar la seguridad y controles relacionados con la privacidad. • Establezca y utilice un catálogo de patrones de diseño seguros o componentes de "camino pavimentado" listos para ser utilizados. • Utilice el modelado de amenazas para flujos críticos de autenticación, control de acceso, lógica de negocio y todo clave. • Integre el lenguaje y los controles de seguridad en las historias de usuario. Integre verificaciones de viabilidad en cada capa de su aplicación (desde el frontend al backend). • Escriba pruebas unitarias y de integración para validar que todos los flujos críticos son resistentes al modelo de amenazas. • Recopile casos de uso y casos de mal uso para cada capa de la aplicación. • Separe las capas del sistema y las capas de red según las necesidades de exposición y protección • Separe a los tenants de manera robusta por diseño en todos los niveles. Limitar el consumo de recursos por usuario o servicio.
  • 25. 25 5. Configuración de Seguridad Incorrecta La aplicación puede ser vulnerable si: Le falta el hardening de seguridad adecuado en cualquier parte del stack tecnológico o permisos configurados incorrectamente en los servicios en la nube. Tiene funciones innecesarias habilitadas o instaladas (puertos, servicios, páginas, cuentas o privilegios innecesarios, por ejemplo). Las cuentas predeterminadas y sus contraseñas aún están habilitadas y sin cambios. El manejo de errores revela a los usuarios rastros de pila u otros mensajes de error demasiado informativos. Para sistemas actualizados, las últimas funciones de seguridad están deshabilitadas o no configuradas de forma segura. Las configuraciones de seguridad en los servidores de aplicaciones, frameworks de aplicaciones (Struts, Spring o ASP.NET por ejemplo), bibliotecas, bases de datos, etc., no poseen configurados valores seguros.
  • 26. Medidas de seguridad para servidores Linux 26 • Identificación de usuarios no autorizados. • Identificación de procesos no autorizados. • Correcta gestión de permisos para el sistema de archivos. • Asegurar el bootloader. • Eliminar paquetes no utilizados. • Revisión de conexiones de red. • Revisión de scripts de inicio y systemd. • Firewall, iptables. • Actualizaciones de seguridad.
  • 27. Otras recomendaciones 27 • Efectuar monitoreo de las aplicaciones del registro de sesiones con IP, dispositivo, huella digital. • Realizar monitoreo de rendimiento en el servidor, uso de CPU, memoria RAM, uso de disco duro, uso de red (Entrada y salida). • Efectuar seguimiento de eventos por aplicación. Uso recomendado de Navigator.sendBeacon() en JavaScript. • Realizar una arquitectura segmentada, preferir el uso de microservicios y exponer solo lo necesario.
  • 28. 28 6. Componentes Vulnerables y Desactualizados La aplicación puede ser vulnerable si: Si no conoce las versiones de todos los componentes que utiliza (tanto en el cliente como en el servidor). Esto incluye los componentes que usa directamente, así como las dependencias anidadas. Si el software es vulnerable, carece de soporte o no está actualizado. Esto incluye el sistema operativo, el servidor web/de aplicaciones, el sistema de administración de bases de datos (DBMS), las aplicaciones, las API y todos los componentes, los entornos de ejecución y las bibliotecas. Si no analiza en búsqueda de vulnerabilidades de forma regular y no se suscribe a los boletines de seguridad relacionados con los componentes que utiliza. Si no repara o actualiza la plataforma subyacente, frameworks y dependencias de manera oportuna y basada en el riesgo. Esto suele ocurrir en entornos en los que la aplicación de parches de seguridad es una tarea mensual o trimestral bajo control de cambios, lo que deja a las organizaciones abiertas a días o meses de exposición innecesaria a vulnerabilidades con soluciones disponibles..
  • 30. Escaneo de código fuente 30
  • 31. Otras recomendaciones 31 • Utilizar el minimo de dependencias posible, si algo se puede programar es mejor no utilizar una dependencia. • Revisar siempre los autores de las dependencias, la ultima actualización que se realizó y si es posible hay que revisar el repositorio para ver el historial de commits y el compromiso que se tiene con el proyecto. Tambien podemos tomar otros datos como válidos como las estrellas de Github, colaboradores, etc. • Siempre preferir dependencias con soporte por parte de fundaciones o que sean Open Source. • Hacer revisión de licencias de las dependencias para integrarla en un proyecto y evitar problemas legales en un futuro.
  • 32. 32 7. Fallas de Identificación y Autenticación La confirmación de la identidad, la autenticación y la gestión de sesiones del usuario son fundamentales para protegerse contra ataques relacionados con la autenticación. Puede haber debilidades de autenticación si la aplicación: Permite ataques automatizados como la reutilización de credenciales conocidas, donde el atacante posee una lista de pares de usuario y contraseña válidos. Permite ataques de fuerza bruta u otros ataques automatizados. Permite contraseñas por defecto, débiles o bien conocidas, como "Password1" o "admin/admin". Posee procesos débiles o no efectivos para las funcionalidades de olvido de contraseña o recuperación de credenciales, como "respuestas basadas en el conocimiento", las cuales no se pueden implementar de forma segura. Almacena las contraseñas en texto claro, cifradas o utilizando funciones de hash débiles. No posee una autenticación multi-factor o la implementada es ineficaz. Expone el identificador de sesión en la URL. Reutiliza el identificador de sesión después de iniciar sesión.
  • 33. Autenticación multifactor 33 La autenticación multifactor (multi factor authentication o MFA) es una tecnología de seguridad que requiere múltiples métodos de autenticación de categorías independientes de credenciales para verificar la identidad de un usuario para un inicio de sesión u otra transacción.
  • 34. Como debe ser una contraseña segura 34 • Una contraseña segura es una contraseña que otras personas no pueden determinar • fácilmente adivinándola o utilizando programas automáticos. • Debe incluir números • Utilice una combinación de letras mayúsculas y minúsculas. • Incluya caracteres especiales. ¿Cuáles son los caracteres especiales? Cualquiera de los • siguientes caracteres: - * ? ! @ # $ / () {} = . , ; : • Tenga una longitud mayor o igual a 8 caracteres. • No debe tener espacios en blanco. • No utilice información personal en la contraseña (como su nombre, fecha de nacimiento, etc.) • No utilice patrones de teclado (qwerty) ni números en secuencia (1234). • No utilice únicamente números, mayúsculas o minúsculas en su contraseña. No repita caracteres (1111111). • No comunique la contraseña a nadie. Nunca anote su contraseña en papel para recordarla.
  • 35. Otras recomendaciones 35 • No incluya o implemente en su software credenciales por defecto, particularmente para usuarios administradores. • Implemente un control contra contraseñas débiles, tal como verificar que una nueva contraseña o la utilizada • en el cambio de contraseña no esté incluida en la lista de las 10,000 peores contraseñas. • Alinear las políticas de largo, complejidad y rotación de las contraseñas con las pautas de la sección 5.1.1 para Secretos Memorizados de la guía del NIST 800-63b u otras políticas de contraseñas modernas, basadas en evidencias. • Asegúrese que el registro, la recuperación de las credenciales y el uso de APIs, no permiten los ataques de enumeración de usuarios, mediante la utilización de los mismos mensajes genéricos en todas las salidas. • Limite o incremente el tiempo de espera entre intentos fallidos de inicio de sesión, pero tenga cuidado de no crear un escenario de denegación de servicio. • Registre todos los fallos y avise a los administradores cuando se detecten ataques de rellenos automatizados de credenciales, fuerza bruta u otros. • Utilice un gestor de sesión en el servidor, integrado, seguro y que genere un nuevo ID de sesión aleatorio con alta entropía después de iniciar sesión. • Los identificadores de sesión no deben incluirse en la URL, deben almacenarse de forma segura y deben ser invalidados después del cierre de sesión, luego de un tiempo de inactividad o por un tiempo de espera absoluto.
  • 36. 36 8. Fallas en el Software y en la Integridad de los Datos Los fallos de integridad del software y de los datos están relacionados con código e infraestructura no protegidos contra alteraciones (integridad). Ejemplos de esto son cuando una aplicación depende de plugins, bibliotecas o módulos de fuentes, repositorios o redes de entrega de contenidos (CDN) no confiables. Un pipeline CI/CD inseguro puede conducir a accesos no autorizados, la inclusión de código malicioso o el compromiso del sistema en general. Además, es común en la actualidad que las aplicaciones implementen funcionalidades de actualización, a través de las cuales se descargan nuevas versiones de la misma sin las debidas verificaciones integridad que fueron realizadas previamente al instalar la aplicación. Los atacantes potencialmente pueden cargar sus propias actualizaciones para que sean distribuidas y ejecutadas en todas las instalaciones. Otro ejemplo es cuando objetos o datos son codificados o serializados en estructuras que un atacante puede ver y modificar, produciéndose una deserialización insegura.
  • 37. Utilizar firmas digitales para validar la integración de los datos 37 • En ocasiones, cuando descargas archivos en línea, se te proporciona un hash de archivo para verificar la integridad del mismo. Con razón o sin ella, la mayoría de las personas ignoran la verificación de hash de archivos, suponiendo que, si el archivo es malicioso, el propietario del sitio se daría cuenta y lo eliminaría. Eso o tu antivirus detendrían la descarga sospechosa antes de que se ejecute. • Para validar archivos en Linux podemos realizar lo siguiente: • md5sum /ruta/al/archivo • sha1sum /ruta/al/archivo • sha256sum /ruta/al/archivo
  • 38. Otras recomendaciones 38 • Utilice firmas digitales o mecanismos similares para verificar que el software o datos provienen efectivamente de la fuente esperada y no fueron alterados. • Asegúrese que las bibliotecas y dependencias, tales como npm o maven son utilizadas desde repositorios confiables. • Si su perfil de riesgo es alto, considere alojarlas en un repositorio interno cuyo contenido ha sido previamente analizado. • Asegúrese que se utilice una herramienta de análisis de componentes de terceros, cómo OWASP Dependency Check u OWASP CycloneDX, con el fin de verificar la ausencia de vulnerabilidades conocidas. • Asegúrese que se utilice un proceso de revisión de cambios de código y configuraciones para minimizar las posibilidades de que código o configuraciones maliciosas sean introducidos en su pipeline. • Asegúrese que su pipeline CI/CD posee adecuados controles de acceso, segregación y configuraciones que permitan asegurar la integridad del código a través del proceso de build y despliegue. • Asegúrese que datos sin cifrar o firmar no son enviados a clientes no confiables sin alguna forma de verificación de integridad o firma electrónica con el fin de detectar modificaciones o la reutilización de datos previamente serializados.
  • 39. 39 9. Fallas en el Registro y Monitoreo Sin registros y monitoreo, las brechas no pueden ser detectadas. Registros, detecciones, monitoreo y respuesta activas insuficientes pueden ocurrir en cualquier momento: Eventos auditables, tales como los inicios de sesión, fallas en el inicio de sesión y transacciones de alto valor no son registradas. Advertencias y errores generan registros poco claros, inadecuados y en algunos casos ni se generan. Registros en aplicaciones y API no son monitoreados para detectar actividades sospechosas. Los registros son únicamente almacenados en forma local. Los umbrales de alerta y procesos de escalamiento no están correctamente implementados o no son efectivos Las pruebas de penetración y los escaneos utilizando herramientas de pruebas dinámicas de seguridad en aplicaciones (como ser OWASP ZAP) no generan alertas. Las aplicaciones no logran detectar, escalar, o alertar sobre ataques activos en tiempo real ni cercanos al tiempo real.
  • 40. Recomendaciones 40 • Asegúrese de que todos los errores de inicio de sesión, de control de acceso y de validación de entradas de datos del lado del servidor se pueden registrar con suficiente contexto como para identificar cuentas sospechosas o maliciosas y mantenerlo durante el tiempo suficiente para permitir un posterior análisis forense. • Asegúrese de que los registros se generen en un formato fácil de procesar por las herramientas de gestión de registros. • Asegúrese de que los datos de registros son correctamente codificados para prevenir inyecciones o ataques en el sistema de monitoreo o registros. • Asegúrese de que las transacciones de alto valor poseen una traza de auditoria con controles de integridad para evitar la modificación o el borrado, tales como permitir únicamente la inserción en las tablas de base de datos o similares. • Los equipos de DevSecOps debe establecer alertas y monitoreo efectivo tal que se detecte actividades sospechosas y responderlas rápidamente. Establezca o adopte un plan de respuesta y recuperación, tal como NIST 800-61r2 o posterior.
  • 41. 41 10. Falsificación de Solicitudes del Lado del Servidor Las fallas de SSRF ocurren cuando una aplicación web está obteniendo un recurso remoto sin validar la URL proporcionada por el usuario. Permite que un atacante coaccione a la aplicación para que envíe una solicitud falsificada a un destino inesperado, incluso cuando está protegido por un firewall, VPN u otro tipo de lista de control de acceso a la red (ACL). Dado que las aplicaciones web modernas brindan a los usuarios finales funciones convenientes, la búsqueda de una URL se convierte en un escenario común. Como resultado, la incidencia de SSRF está aumentando. Además, la gravedad de SSRF es cada vez mayor debido a los servicios en la nube y la complejidad de las arquitecturas.
  • 42. Desde la capa de red 42 • Segmente la funcionalidad de acceso a recursos remotos en redes separadas para reducir el impacto de SSRF • Haga cumplir las políticas de firewall "denegar por defecto" o las reglas de control de acceso a la red para bloquear todo el tráfico de la intranet excepto el esencial. • Consejos: ~ Establezca la propiedad y un ciclo de vida para las reglas de firewall basadas en aplicaciones. ~ Registre en logs todos los flujos de red aceptados y bloqueados en firewalls.
  • 43. Desde la capa de la aplicación 43 • Sanitice y valide todos los datos de entrada proporcionados por el cliente. • Haga cumplir el esquema de URL, el puerto y destino a través de una lista positiva de items permitidos. • No envíe respuestas en formato "crudo" a los clientes. • Deshabilite las redirecciones HTTP Tenga en cuenta la coherencia de la URL para evitar ataques como el enlace de DNS y las condiciones de carrera de "tiempo de verificación, tiempo de uso" (TOCTOU por sus siglas en inglés). • No mitigue SSRF mediante el uso de una lista de denegación o una expresión regular. Los atacantes poseen listas de payloads, herramientas y habilidades para eludir las listas de denegación.
  • 45. Si tu empresa gasta más en café que en seguridad TI, serás hackeado. Es más, merecerás ser hackeado. 45
  • 46. Gerardo Flores info@notawait.com Fundador de NotAwait y confundador de Malael, programador fullstack. Experiencia en dirección de proyectos de informática