El threat modeling es una de las prácticas de seguridad más efectivas en ingeniería de software -- y una de las más subutilizadas en Web3. Las aplicaciones tradicionales se benefician de décadas de frameworks maduros de threat modeling, con el modelo STRIDE de OWASP siendo el más ampliamente adoptado. Pero las aplicaciones descentralizadas introducen superficies de ataque que estos frameworks nunca fueron diseñados para abordar. Los smart contracts son inmutables. Las transacciones son públicas antes de la confirmación. El valor fluye a través de protocolos componibles donde una vulnerabilidad en un componente puede cascadear a todo el ecosistema. La pregunta no es si necesitás threat modeling para tu dApp -- es cómo hacerlo correctamente.
En Xcapit, venimos construyendo aplicaciones blockchain desde 2018 y realizando evaluaciones de seguridad para protocolos DeFi, wallets y soluciones blockchain empresariales. Con los años, desarrollamos un framework de threat modeling adaptado que cierra la brecha entre las metodologías de seguridad establecidas y las realidades de la arquitectura descentralizada. Este artículo comparte el enfoque que usamos con nuestros clientes y proyectos internos.
Por Qué el Threat Modeling Tradicional Se Queda Corto en Web3
El threat modeling en software tradicional asume un conjunto de condiciones que no se cumplen en sistemas descentralizados. El dueño de la aplicación controla el servidor. Los parches pueden desplegarse inmediatamente cuando se encuentran vulnerabilidades. El tráfico de red es privado hasta que llega a su destino. El control de acceso es aplicado por capas de infraestructura -- firewalls, segmentación de red, servidores de autenticación -- que están fuera de la aplicación misma.
Web3 invierte estas suposiciones. Los smart contracts son auto-ejecutables y, una vez desplegados, no pueden modificarse a menos que se haya diseñado un mecanismo de upgrade por adelantado. Cada transacción está en un mempool público antes de la confirmación, visible para cualquiera que monitoree la red. No hay control de acceso server-side -- el smart contract debe imponer sus propios permisos enteramente a través de código. Y la composabilidad que hace poderoso a DeFi también significa que la seguridad de tu protocolo depende de cada otro protocolo con el que interactúa.
Esto no significa que los frameworks tradicionales sean inútiles. El modelo STRIDE de OWASP -- que categoriza amenazas en Spoofing, Tampering, Repudiation, Information Disclosure, Denial of Service y Elevation of Privilege -- provee una base sólida. Pero necesita extenderse con categorías de amenaza específicas de Web3 que aborden las propiedades únicas de los sistemas blockchain.
STRIDE en el Mundo Descentralizado: Qué Se Traduce y Qué No
Algunas categorías STRIDE mapean directamente a preocupaciones de Web3. Spoofing aplica a suplantación de wallet, ataques de phishing que engañan a usuarios para que firmen transacciones maliciosas, y hijacking de frontend donde una interfaz comprometida dirige a usuarios a interactuar con contratos controlados por atacantes. Denial of Service se manifiesta como gas griefing, ataques de loops sin límite y block stuffing que previene la confirmación de transacciones sensibles al tiempo. Elevation of Privilege mapea a fallas de control de acceso en smart contracts -- funciones admin sin protección, chequeos de roles faltantes y vulnerabilidades de inicialización de proxies.
Otras categorías requieren reinterpretación. Information Disclosure en sistemas tradicionales significa acceso no autorizado a datos, pero en Web3, todos los datos on-chain son públicos por diseño -- la amenaza se desplaza a fuga de metadatos y análisis de patrones de transacción. Repudiation es fundamentalmente diferente porque blockchain provee un trail de auditoría inmutable, pero la amenaza reaparece a través de ataques de gobernanza donde votos on-chain son influenciados por coerción off-chain.
Y luego hay categorías enteras de amenaza que STRIDE simplemente no cubre: manipulación de oráculos, extracción de MEV, ataques económicos con flash loans, exploits de bridges cross-chain y manipulación de tokens de gobernanza. Estas requieren categorías nuevas en nuestro framework adaptado.
Categorías de Amenaza Específicas de Web3
Basándonos en nuestra experiencia auditando y construyendo aplicaciones descentralizadas, identificamos seis categorías de amenaza específicas de Web3 que deben agregarse a cualquier threat model de una dApp:
- Vulnerabilidades de lógica de smart contracts: reentrancy, integer overflow, storage no inicializado y fallas de lógica de negocio que no pueden parchearse después del deployment. La inmutabilidad de los smart contracts significa que estas vulnerabilidades persisten hasta que el contrato se abandona o se migra -- y la migración misma introduce nueva superficie de ataque.
- Manipulación de oráculos: ataques que corrompen los feeds de datos externos de los que dependen los smart contracts para precios, aleatoriedad o eventos del mundo real. La manipulación de precios financiada con flash loans en oráculos basados en DEX sigue siendo el vector de ataque más devastador financieramente en DeFi, responsable de miles de millones en pérdidas acumuladas.
- MEV y frontrunning: ataques de Maximal Extractable Value donde miners, validadores o searchers reordenan, insertan o censuran transacciones para obtener profit. Ataques sandwich en trades de DEX, sniping de liquidaciones y backrunning de actualizaciones grandes de oráculos son todas formas de MEV que afectan la economía del protocolo y la experiencia del usuario.
- Ataques a bridges cross-chain: los bridges son los objetivos de mayor valor en Web3, manteniendo activos bloqueados que respaldan wrapped tokens en chains de destino. Compromiso de validadores, spoofing de mensajes y ataques de replay entre chains han llevado a los exploits individuales más grandes en la historia de blockchain -- los hacks de Ronin Bridge ($625M), Wormhole ($320M) y Nomad ($190M).
- Ataques de gobernanza: manipulación de votos on-chain a través de tokens de gobernanza adquiridos con flash loans, compra de votos en mercados secundarios, inyección de propuestas a través de delegación explotada y bypass de time-lock. Los ataques de gobernanza son particularmente insidiosos porque pueden otorgar al atacante autoridad legítima sobre el protocolo.
- Exploits económicos con flash loans: ataques que usan flash loans sin colateral para comandar temporalmente capital masivo, distorsionar condiciones de mercado y extraer valor de protocolos cuya lógica asume que ningún actor puede controlar tanto capital en una sola transacción. Estos ataques son libres de riesgo para el atacante -- si cualquier paso falla, toda la transacción se revierte.
La Superficie de Ataque de una dApp Típica
Antes de aplicar categorías de amenaza, necesitás un mapa claro de la superficie de ataque. Una dApp típica tiene siete capas distintas, cada una con su propio perfil de amenaza:
- Frontend: la interfaz web con la que interactúan los usuarios. Vulnerable a DNS hijacking, compromiso de CDN, ataques de supply chain a través de paquetes npm comprometidos y phishing a través de interfaces clonadas. Un frontend comprometido puede reemplazar direcciones de contratos, modificar parámetros de transacción o inyectar transacciones de aprobación para tokens controlados por atacantes.
- Conexión de wallet: la interfaz entre la wallet del usuario y la dApp. Vulnerable a ataques de firma ciega donde los usuarios aprueban transacciones que no entienden, escalación de permisos a través de aprobaciones de tokens ilimitadas y session hijacking en protocolos wallet-connect.
- Infraestructura de RPC y nodos: la conexión entre el frontend y la blockchain. Los proveedores de RPC centralizados crean un punto único de falla y pueden censurar o reordenar transacciones. Ataques man-in-the-middle en conexiones RPC pueden modificar datos de transacción antes de que lleguen al mempool.
- Smart contracts: la lógica on-chain que mantiene y mueve valor. La capa más escrutada pero también la más consecuente cuando se encuentran vulnerabilidades. Cubre todas las clases estándar de vulnerabilidad de smart contracts más lógica de negocio específica del protocolo.
- Oráculos y datos externos: cualquier fuente de datos externa de la que dependan los smart contracts. Incluye feeds de precios, proveedores de aleatoriedad, relayers de mensajes cross-chain y resultados de computación off-chain. Cada oráculo introduce un supuesto de confianza que debe modelarse explícitamente.
- Bridges cross-chain: infraestructura que mueve activos y mensajes entre blockchains. Los bridges combinan riesgo de smart contracts en múltiples chains con seguridad del set de validadores, verificación de mensajes y frecuentemente componentes centralizados que crean riesgo asimétrico.
- Gobernanza: mecanismos de toma de decisiones on-chain y off-chain. Incluye votación ponderada por tokens, operaciones multi-sig, propuestas con time-lock y procedimientos de respuesta de emergencia. La gobernanza controla el path de upgrade y la configuración de parámetros para todo el protocolo.
Aplicando STRIDE a Cada Capa de la dApp
El poder de nuestro framework adaptado viene de aplicar sistemáticamente tanto las categorías STRIDE tradicionales como las categorías específicas de Web3 a cada capa de la dApp. Esto crea una matriz donde cada celda representa un escenario de amenaza específico que debe evaluarse.
Para la capa de frontend, Spoofing se manifiesta como DNS hijacking y sitios de phishing, Tampering como pipelines de build comprometidos, e Information Disclosure como fuga de direcciones de wallet a través de scripts de analytics. Para la capa de smart contracts, Spoofing significa suplantación de contrato, Tampering se traduce en ataques de upgrade de proxy, y Elevation of Privilege mapea a funciones admin sin protección.
Para la capa de oráculos, las categorías específicas de Web3 dominan. Manipulación de Oráculos incluye distorsión de precios con flash loans y explotación de datos obsoletos. MEV aplica a través de frontrunning de actualizaciones de oráculos -- searchers que ven una transacción de actualización de precio en el mempool y ejecutan trades antes de que el nuevo precio tome efecto. Para bridges, los Ataques Cross-chain cubren colusión de validadores, replay de mensajes entre chains y supuestos incompletos de finalidad.
Trabajar a través de esta matriz para una dApp real típicamente produce 40 a 80 escenarios de amenaza específicos. No todos son igualmente probables o impactantes, que es donde el scoring de riesgo se vuelve crítico.
Cómo Conducimos Sesiones de Threat Modeling
Una sesión de threat modeling es tan buena como la gente en la sala y el proceso que siguen. Conducimos sesiones estructuradas que típicamente duran tres a cuatro horas para un único protocolo e involucran tres grupos de participantes.
El primer grupo es el equipo de desarrollo -- ingenieros que entienden el comportamiento intencionado del protocolo y las decisiones de diseño. El segundo es el equipo de seguridad -- especialistas con conocimiento de patrones de ataque y pensamiento adversarial. El tercero son expertos de dominio -- personas que entienden el modelo económico y la lógica de negocio a un nivel que los puramente técnicos pueden no captar.
El proceso sigue cuatro fases. Primero, descomposición de arquitectura: mapear el sistema en capas y flujos de datos, identificando límites de confianza. Segundo, identificación de amenazas: trabajar a través de la matriz STRIDE-plus-Web3 sistemáticamente. Tercero, evaluación de riesgo: puntuar cada amenaza usando nuestra fórmula adaptada. Cuarto, planificación de mitigación: definir contramedidas para cada riesgo alto y crítico, asignar ownership y establecer timelines.
El output es un documento estructurado de threat model que sirve tanto como blueprint de seguridad como referencia viva. Incluye el diagrama de arquitectura con límites de confianza, el inventario completo de amenazas con scores de riesgo, una lista priorizada de mitigaciones y un conjunto de requisitos de seguridad derivados de las amenazas identificadas.
Scoring de Riesgo Adaptado para Web3
El scoring de riesgo tradicional usa la fórmula: Riesgo = Probabilidad x Impacto. Esto funciona bien para software parcheable donde una vulnerabilidad descubierta puede remediarse rápidamente. En Web3, agregamos un tercer factor que cambia fundamentalmente el cálculo: el factor de inmutabilidad.
Nuestra fórmula adaptada es: Riesgo = Probabilidad x Impacto x Factor de Inmutabilidad. El factor de inmutabilidad varía de 1.0 a 3.0 y refleja qué tan difícil es remediar la vulnerabilidad una vez descubierta. Una vulnerabilidad de frontend obtiene 1.0 (fácilmente redesplegable). Un smart contract upgradeable detrás de un multi-sig con time-lock obtiene 1.5. Un contrato inmutable sin path de upgrade obtiene 3.0 -- la única remediación es migración, que requiere acción del usuario y puede no alcanzar a todas las partes afectadas.
Este modelo de scoring prioriza correctamente las amenazas en componentes inmutables. Una vulnerabilidad de probabilidad media e impacto medio en un contrato inmutable puntúa más alto que una vulnerabilidad de alta probabilidad y alto impacto en el frontend, porque el frontend puede parchearse en minutos mientras la vulnerabilidad del contrato persistirá indefinidamente. Esto se alinea con la realidad de que los exploits más catastróficos en la historia de Web3 han apuntado a componentes inmutables o quasi-inmutables.
Del Threat Model a Requisitos de Seguridad
Un threat model que se queda en un documento y nunca influencia el desarrollo es un desperdicio de esfuerzo. El paso crítico es traducir las amenazas identificadas en requisitos de seguridad concretos y testeables que se conviertan en parte de la especificación de desarrollo.
Cada amenaza de riesgo alto y crítico debería producir uno o más requisitos de seguridad. La amenaza de manipulación de oráculos, por ejemplo, produce requisitos como: usar TWAP con una ventana mínima de 30 minutos para operaciones dependientes de precios; disparar un circuit breaker en desviaciones de precio superiores al 10%; requerir que al menos dos fuentes de oráculos independientes coincidan dentro del 2%. Estos son específicos, testeables y auditables.
Para amenazas de smart contracts, los requisitos se traducen directamente en patrones de código y test cases. La amenaza de reentrancy produce requisitos de ordenamiento checks-effects-interactions, guards de reentrancy en todas las funciones que cambian estado, y tests de simulación de ataques. Las amenazas de bypass de control de acceso producen requisitos de control de acceso basado en roles, transferencias de ownership en dos pasos, y test cases de acceso no autorizado para cada función restringida.
Organizamos los requisitos de seguridad en una matriz de trazabilidad que vincula cada requisito hacia atrás con la amenaza que mitiga y hacia adelante con la implementación en código y el test case que lo valida. Esto crea una cadena auditable desde amenaza hasta mitigación que satisface tanto a auditores de seguridad como a frameworks de cumplimiento.
Integración con el Workflow de Desarrollo
El threat modeling no es una actividad de una sola vez. El panorama de amenazas evoluciona a medida que emergen nuevas técnicas de ataque, y el protocolo mismo cambia a medida que se agregan features o se actualizan integraciones. La pregunta de cuándo hacer threat modeling tiene una respuesta clara: temprano, frecuentemente y en cada cambio significativo.
El threat model inicial debería crearse durante la fase de diseño, antes de escribir código. Ahí es cuando las decisiones arquitectónicas todavía pueden ser influenciadas por consideraciones de seguridad -- elegir un patrón proxy upgradeable, seleccionar proveedores de oráculos, diseñar el mecanismo de gobernanza. Hacer threat modeling después de que el código está escrito es retroactivo y caro; los cambios a nivel de arquitectura requieren reescrituras en vez de ajustes.
Después del modelo inicial, las actualizaciones incrementales deberían ocurrir ante tres disparadores: cuando nuevas features introducen nueva superficie de ataque, cuando un exploit significativo golpea un protocolo con arquitectura similar, y antes de cada release mayor o engagement de auditoría. Cada disparador significa que el threat model puede ya no representar el sistema con precisión.
Recomendamos almacenar el threat model junto al codebase en control de versiones, haciéndolo un documento vivo revisado en pull requests junto al código al que se refiere. Los requisitos de seguridad derivados del modelo deberían etiquetarse en el issue tracker para que su estado sea visible para todo el equipo.
Integrando Todo
La seguridad Web3 frecuentemente se reduce a auditorías de smart contracts -- importantes, pero insuficientes. Una auditoría examina el código como existe en un punto en el tiempo. Un threat model examina el sistema como un todo, considera cómo podría ser atacado y produce requisitos que previenen que las vulnerabilidades se introduzcan en primer lugar. Los protocolos más seguros con los que hemos trabajado son los que invirtieron en threat modeling antes de escribir su primera línea de Solidity.
El framework que hemos delineado -- extender STRIDE con categorías de amenaza específicas de Web3, mapear la superficie de ataque completa de la dApp, puntuar riesgos con un factor de inmutabilidad y traducir hallazgos en requisitos testeables -- es el enfoque que usamos en Xcapit para cada proyecto blockchain que construimos o auditamos. No es teórico; está battle-tested en protocolos DeFi, soluciones blockchain empresariales y nuestros propios productos que han servido a más de cuatro millones de usuarios.
En Xcapit, nuestra práctica de ciberseguridad combina certificación ISO 27001 con expertise profundo en Web3 -- desde threat modeling y auditorías de smart contracts hasta penetration testing y diseño de arquitectura de seguridad. Ya sea que estés construyendo un protocolo DeFi o una solución blockchain empresarial, podemos ayudarte a identificar y mitigar amenazas antes de que se conviertan en exploits. Contactanos para discutir las necesidades de seguridad de tu proyecto.
Fernando Boiero
CTO & Co-Fundador
Más de 20 años en la industria tecnológica. Fundador y director de Blockchain Lab, profesor universitario y PMP certificado. Experto y líder de pensamiento en ciberseguridad, blockchain e inteligencia artificial.
Construyamos algo grande juntos
IA, blockchain y software a medida — pensado para tu negocio.
Contactanos¿Necesitás un partner de seguridad confiable?
Pentesting, ISO 27001, SOC 2 — aseguramos tus sistemas.
Artículos Relacionados
Seguridad en LLMs: Cómo Defenderse de los Ataques de Inyección de Prompts
Un análisis técnico profundo sobre inyección de prompts directa e indirecta, jailbreaking y exfiltración de datos en modelos de lenguaje grandes — con estrategias de defensa prácticas y en capas para equipos que construyen sistemas de IA en producción.
Arquitectura Zero Trust: Guía Práctica de Implementación
Una guía completa de implementación de Arquitectura Zero Trust — desde entender por qué falla la seguridad perimetral hasta desplegar seguridad centrada en identidad, micro-segmentación y verificación continua, siguiendo el framework NIST 800-207.