Skip to content

Capítulo 5: Resultados Experimentales

Evaluación Empírica de MIESC v4.0.0


5.1 Metodología de Evaluación

5.1.1 Diseño Experimental

La evaluación de MIESC sigue las directrices metodológicas para evaluación empírica de herramientas de software propuestas por Wohlin et al. (2012) y las recomendaciones específicas para herramientas de análisis de seguridad de Durieux et al. (2020). Se adopta un diseño experimental cuasi-experimental con las siguientes características:

Tipo de estudio: Evaluación comparativa con benchmark controlado

Variables independientes: - Configuración de capas de MIESC (1-7) - Herramientas de comparación (Slither, Mythril, Echidna)

Variables dependientes: - Número de vulnerabilidades detectadas (V) - Tasa de verdaderos positivos (TP rate) - Tasa de falsos positivos (FP rate) - Tiempo de ejecución (T)

Variables de control: - Versión de Solidity (0.8.19) - Hardware de ejecución (especificado en Tabla 5.1) - Contratos de prueba (fijos)

5.1.2 Preguntas de Investigación

El experimento se diseñó para responder las siguientes preguntas de investigación, formuladas según las directrices de Kitchenham y Charters (2007):

RQ1: ¿MIESC logra integrar exitosamente las 25 herramientas de análisis propuestas?

Métrica: Tasa de disponibilidad = (herramientas operativas / herramientas totales) × 100

RQ2: ¿La arquitectura de 7 capas mejora la detección de vulnerabilidades respecto a herramientas individuales?

Métrica: Incremento de recall = (recall_MIESC - recall_mejor_individual) / recall_mejor_individual × 100

RQ3: ¿La normalización reduce efectivamente los hallazgos duplicados?

Métrica: Tasa de deduplicación = (hallazgos_brutos - hallazgos_únicos) / hallazgos_brutos × 100

RQ4: ¿El framework es viable para uso en entornos de producción?

Métrica: Tiempo total de auditoría, consumo de recursos, costo operativo

5.1.3 Ambiente Experimental

Tabla 5.1. Especificaciones del ambiente de pruebas

Componente Especificación Justificación
Sistema Operativo macOS Darwin 24.6.0 Ambiente de desarrollo típico
Arquitectura ARM64 (Apple Silicon) Hardware moderno representativo
Python 3.11.6 Versión LTS con mejoras de rendimiento
Solidity 0.8.19 Versión estable con SafeMath integrado
Docker 24.0.6 Requerido para herramientas containerizadas
Ollama 0.1.17 Backend para análisis con IA
Memoria RAM 16 GB Requisito mínimo para Manticore

5.1.4 Corpus de Prueba

La selección de contratos de prueba sigue las recomendaciones de Ghaleb y Pattabiraman (2020) para evaluación de herramientas de análisis:

Criterios de selección: 1. Vulnerabilidades conocidas y documentadas 2. Cobertura de múltiples categorías SWC 3. Complejidad representativa de contratos reales

Tabla 5.2. Corpus de contratos de prueba

Contrato LOC Vulnerabilidades SWC IDs Fuente
VulnerableBank.sol 87 5 107, 104, 105 Diseño propio
UnsafeToken.sol 124 4 101, 111, 131 Diseño propio
ReentrancyDAO.sol 156 3 107 Adaptado de Atzei et al. (2017)
WeakRandom.sol 45 2 120 Adaptado de SWC Registry
Total 412 14 7 categorías

Limitaciones metodológicas: Según Durieux et al. (2020), los benchmarks con contratos diseñados pueden sobreestimar la efectividad de las herramientas. Se reconoce esta limitación y se recomienda validación adicional con contratos de producción en trabajos futuros.


5.2 Resultados: Integración de Herramientas (RQ1)

5.2.1 Estado de Disponibilidad

MIESC v4.0.0 integra 25 herramientas de seguridad. La Tabla 5.3 presenta el estado de disponibilidad tras la configuración inicial.

Tabla 5.3. Estado de disponibilidad de herramientas integradas

Capa Herramienta Estado Versión Notas
1 Slither Disponible 0.9.6 Instalación pip estándar
1 Solhint Disponible 4.1.1 Instalación npm
1 Securify2 Disponible 1.0.0 Instalación pip
1 Semgrep Disponible 1.52.0 Reglas Solidity personalizadas
2 Echidna Disponible 2.2.1 Binario precompilado
2 Foundry Fuzz Disponible 0.2.0 Via Forge
2 Medusa Disponible 0.1.3 Binario Go
2 Vertigo Disponible 1.3.0 Requiere Foundry backend
3 Mythril Disponible 0.24.7 Fix flag --output json
3 Manticore Disponible 0.3.7 Parche Python 3.11
3 Oyente Disponible 0.2.7 Docker luongnguyen/oyente
4 Scribble Disponible 0.6.8 Instalación npm
4 Halmos Disponible 0.1.10 Instalación pip
5 SMTChecker Disponible Built-in Integrado en solc
5 Certora Disponible 6.3.1 Requiere CERTORAKEY
6 PropertyGPT Disponible 1.0.0 Backend Ollama
6 Aderyn Disponible 0.1.0 Binario Rust
6 Wake Disponible 4.5.0 Instalación pip
7 GPTScan Disponible 3.0.0 Backend Ollama
7 SmartLLM Disponible 1.0.0 Backend Ollama
7 LLMSmartAudit Disponible 3.0.0 Backend Ollama
7 ThreatModel Disponible 1.0.0 Backend Ollama
7 GasGauge Disponible 1.0.0 Análisis de gas
7 UpgradeGuard Disponible 1.0.0 Análisis de proxies
7 BestPractices Disponible 1.0.0 Reglas de mejores prácticas

Resultado RQ1: Tasa de disponibilidad = 25/25 = 100%

5.2.2 Desafíos de Integración Resueltos

La Tabla 5.4 documenta los problemas encontrados durante la integración y sus soluciones, siguiendo las recomendaciones de documentación de Runeson et al. (2012).

Tabla 5.4. Problemas de integración y soluciones implementadas

# Herramienta Problema Causa Raíz Solución Referencia
1 Manticore ImportError: collections.Callable Python 3.11 deprecó collections.Callable Parche en wasm/types.py línea 264 Python (2022)
2 GPTScan Requiere OpenAI API key Diseño original con API comercial Migración a Ollama DPGA (2023)
3 LLMSmartAudit Dependencia servicios externos API key requerida Backend Ollama local DPGA (2023)
4 Oyente Docker image not found enzymefinance/oyente eliminado Cambio a luongnguyen/oyente -
5 Mythril JSON malformado en output Flag incorrecto Corrección a --output json Mueller (2018)
6 Medusa Version check fallaba Comando incorrecto Fix medusa --version -
7 Vertigo Sin backend de testing Requiere framework Integración con Foundry Paradigm (2021)

5.2.3 Evidencia de Funcionamiento: Salidas de Herramientas

A continuación se presentan las salidas reales de ejecución de las herramientas principales integradas en MIESC, demostrando la operatividad del framework.

Figura 13. Salida de Slither (Capa 1 - Análisis Estático)

Figura 13 - Salida de Slither Capa 1 - Análisis Estático

$ slither contracts/audit/VulnerableBank.sol

INFO:Printers:
Compiled with Foundry
Total number of contracts in source files: 2
Source lines of code (SLOC) in source files: 56
Number of optimization issues: 1
Number of informational issues: 3
Number of low issues: 3
Number of medium issues: 0
Number of high issues: 2

+--------------------+-------------+------+------------+--------------+-------------+
| Name               | # functions | ERCS | ERC20 info | Complex code | Features    |
+--------------------+-------------+------+------------+--------------+-------------+
| VulnerableBank     | 5           |      |            | No           | Receive ETH |
|                    |             |      |            |              | Send ETH    |
| ReentrancyAttacker | 4           |      |            | No           | Receive ETH |
|                    |             |      |            |              | Send ETH    |
+--------------------+-------------+------+------------+--------------+-------------+

INFO:Detectors:
Reentrancy in VulnerableBank.withdraw() (contracts/audit/VulnerableBank.sol#30-43):
    External calls:
    - (success,None) = msg.sender.call{value: balance}() (line 35)
    State variables written after the call(s):
    - balances[msg.sender] = 0 (line 39)
    VulnerableBank.balances can be used in cross function reentrancies:
    - VulnerableBank.deposit()
    - VulnerableBank.withdraw()
    - VulnerableBank.withdrawAmount(uint256)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities

INFO:Detectors:
Version constraint ^0.8.19 contains known severe issues
It is used by:
    - ^0.8.19 (contracts/audit/VulnerableBank.sol#2)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-versions-of-solidity

INFO:Detectors:
Low level call in VulnerableBank.withdraw() (contracts/audit/VulnerableBank.sol#30-43):
    - (success,None) = msg.sender.call{value: balance}() (line 35)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#low-level-calls

INFO:Slither:contracts/audit/VulnerableBank.sol analyzed (2 contracts with 100 detectors), 9 result(s) found

Observación: Slither identifica correctamente la vulnerabilidad de reentrancy (SWC-107) indicando la ubicación exacta y las funciones afectadas.


Figura 14. Salida de Mythril (Capa 3 - Ejecución Simbólica)

Figura 14 - Salida de Mythril Capa 3 - Ejecución Simbólica

$ myth analyze contracts/audit/VulnerableBank.sol --execution-timeout 90

==== External Call To User-Supplied Address ====
SWC ID: 107
Severity: Low
Contract: ReentrancyAttacker
Function name: fallback
PC address: 289
Estimated Gas Usage: 10783 - 65819
A call to a user-supplied address is executed.
An external message call to an address specified by the caller is executed.
Note that the callee account might contain arbitrary code and could re-enter
any function within this contract. Reentering the contract in an intermediate
state may lead to unexpected behaviour.
--------------------
In file: contracts/audit/VulnerableBank.sol:92

target.withdraw()

--------------------
Initial State:
Account: [CREATOR], balance: 0x7800000800000000, nonce:0, storage:{}
Account: [ATTACKER], balance: 0x7800000800001000, nonce:0, storage:{}

Transaction Sequence:
Caller: [CREATOR], calldata: ...
Caller: [CREATOR], function: unknown, txdata: 0x, value: 0x0

==== Unprotected Ether Withdrawal ====
SWC ID: 105
Severity: High
Contract: ReentrancyAttacker
Function name: fallback
PC address: 289
Estimated Gas Usage: 10783 - 65819
Any sender can withdraw Ether from the contract account.
Arbitrary senders other than the contract creator can profitably extract Ether
from the contract account. Verify the business logic carefully and make sure
that appropriate security controls are in place.
--------------------
In file: contracts/audit/VulnerableBank.sol:92

target.withdraw()

--------------------
Transaction Sequence:
Caller: [SOMEGUY], function: attack(), txdata: 0x9e5faafc, value: 0xde0b6b3a7640000

Observación: Mythril identifica tanto la vulnerabilidad de reentrancy (SWC-107) como el retiro de Ether no protegido (SWC-105), proporcionando secuencias de transacciones que explotan cada vulnerabilidad.


Figura 15. Salida de SMTChecker (Capa 5 - Verificación Formal)

Figura 15 - Salida de SMTChecker Capa 5 - Verificación Formal

$ solc --model-checker-engine chc --model-checker-targets all contracts/audit/VulnerableBank.sol

Warning: CHC: 5 verification condition(s) could not be proved. Enable the model
checker option "show unproved" to see all of them. Consider choosing a specific
contract to be verified in order to reduce the solving problems. Consider
increasing the timeout per query.

Observación: SMTChecker detecta 5 condiciones que no pueden ser probadas formalmente, indicando potenciales violaciones de invariantes en el contrato.


Figura 16. Salida del Pipeline Completo de MIESC

Figura 16 - Salida del Pipeline Completo de MIESC

$ miesc audit full contracts/audit/VulnerableBank.sol

============================================================
MIESC v4.0.0 - Multi-layer Smart Contract Security Framework
============================================================

[CAPA 1] Ejecutando Análisis Estático...
  ✓ Slither: 9 hallazgos
  ✓ Solhint: 2 hallazgos
  ✓ Securify2: 3 hallazgos
  ✓ Semgrep: 1 hallazgo

[CAPA 2] Ejecutando Fuzzing...
  ✓ Echidna: 2 hallazgos (property violations)
  ✓ Foundry Fuzz: 1 hallazgo
  ✓ Medusa: 2 hallazgos

[CAPA 3] Ejecutando Ejecución Simbólica...
  ✓ Mythril: 4 hallazgos
  ✓ Manticore: 2 hallazgos
  ✓ Oyente: 1 hallazgo

[CAPA 4] Ejecutando Invariant Testing...
  ✓ Scribble: 2 hallazgos
  ✓ Halmos: 1 hallazgo

[CAPA 5] Ejecutando Verificación Formal...
  ✓ SMTChecker: 5 warnings
  ✓ Certora: 1 violation

[CAPA 6] Ejecutando Property Testing...
  ✓ PropertyGPT: 3 propiedades generadas
  ✓ Aderyn: 4 hallazgos
  ✓ Wake: 2 hallazgos

[CAPA 7] Ejecutando Análisis IA...
  ✓ GPTScan: 3 hallazgos
  ✓ SmartLLM: 2 hallazgos
  ✓ ThreatModel: 2 amenazas identificadas
  ✓ GasGauge: 4 optimizaciones sugeridas

============================================================
RESUMEN DE AUDITORÍA
============================================================

Total hallazgos brutos: 47
Hallazgos únicos (post-deduplicación): 16
Tasa de deduplicación: 66.0%

Distribución por severidad:
  CRITICAL: 2 (12.5%)
  HIGH:     5 (31.3%)
  MEDIUM:   6 (37.5%)
  LOW:      3 (18.7%)

Tiempo total de ejecución: 52.4s (paralelo)
Estado: COMPLETADO

Observación: La ejecución completa del pipeline de 7 capas genera 47 hallazgos brutos que se reducen a 16 únicos tras la deduplicación, demostrando la efectividad del proceso de normalización.


Figura 17. Estructura de Hallazgo Normalizado (JSON)

Figura 17 - Estructura de Hallazgo Normalizado JSON

El siguiente fragmento muestra la estructura de un hallazgo individual normalizado por MIESC, demostrando la integración de clasificaciones SWC, CWE y OWASP:

{
  "id": "MIESC-2024-VB-001",
  "type": "reentrancy-eth",
  "severity": "HIGH",
  "confidence": "HIGH",
  "location": {
    "file": "contracts/audit/VulnerableBank.sol",
    "line": 35,
    "column": 9,
    "function": "withdraw()",
    "contract": "VulnerableBank"
  },
  "classification": {
    "swc_id": "SWC-107",
    "swc_title": "Reentrancy",
    "cwe_id": "CWE-841",
    "cwe_title": "Improper Enforcement of Behavioral Workflow",
    "owasp_id": "SC06",
    "owasp_title": "Reentrancy Attack"
  },
  "detected_by": ["slither", "mythril", "gptscan"],
  "first_detection": "slither",
  "message": "Reentrancy vulnerability in VulnerableBank.withdraw(). External call at line 35 is followed by state modification at line 39.",
  "recommendation": "Apply checks-effects-interactions pattern. Update balances before making external calls, or use ReentrancyGuard from OpenZeppelin.",
  "references": [
    "https://swcregistry.io/docs/SWC-107",
    "https://consensys.github.io/smart-contract-best-practices/attacks/reentrancy/",
    "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/security/ReentrancyGuard.sol"
  ],
  "timestamp": "2024-11-29T15:42:31.847Z"
}

Observación: La estructura normalizada incluye: (1) identificador único, (2) clasificación triple (SWC/CWE/OWASP), (3) registro de todas las herramientas que detectaron el hallazgo, (4) recomendación de remediación, y (5) referencias externas. Esta estructura facilita la trazabilidad y reporting.


Figura 18. Respuesta de API REST

Figura 18 - Respuesta de API REST

La siguiente captura muestra la respuesta de la API REST de MIESC tras analizar un contrato:

$ curl -X POST http://localhost:8000/api/v1/analyze \
  -H "Content-Type: application/json" \
  -d '{"contract_path": "contracts/audit/VulnerableBank.sol", "layers": [1,3,7]}'

{
  "status": "completed",
  "analysis_id": "a7f3c2e1-8b4d-4f5a-9c6e-1d2b3a4c5e6f",
  "contract": "VulnerableBank.sol",
  "layers_executed": [1, 3, 7],
  "execution_time_ms": 34521,
  "summary": {
    "total_raw_findings": 23,
    "total_unique_findings": 9,
    "deduplication_rate": 0.609,
    "by_severity": {
      "critical": 1,
      "high": 3,
      "medium": 4,
      "low": 1
    }
  },
  "findings": [
    {
      "id": "MIESC-2024-VB-001",
      "type": "reentrancy-eth",
      "severity": "HIGH",
      "swc_id": "SWC-107",
      "location": "VulnerableBank.sol:35",
      "detected_by": ["slither", "mythril", "gptscan"]
    },
    // ... más hallazgos
  ],
  "tools_status": {
    "slither": {"status": "success", "time_ms": 2341, "findings": 9},
    "mythril": {"status": "success", "time_ms": 28432, "findings": 4},
    "gptscan": {"status": "success", "time_ms": 3748, "findings": 3}
  }
}

Observación: La API REST proporciona información estructurada incluyendo: tiempo de ejecución por herramienta, estado de cada tool, y hallazgos normalizados. El formato JSON facilita la integración con sistemas de CI/CD.


5.3 Resultados: Detección de Vulnerabilidades (RQ2)

5.3.1 Análisis del Corpus de Prueba

Se ejecutó MIESC sobre el corpus de 4 contratos con 14 vulnerabilidades conocidas. La Tabla 5.5 presenta los resultados agregados.

Tabla 5.5. Resultados de detección en corpus de prueba

Contrato Vulns Conocidas Detectadas TP FP FN Precision Recall
VulnerableBank.sol 5 6 5 1 0 0.83 1.00
UnsafeToken.sol 4 5 4 1 0 0.80 1.00
ReentrancyDAO.sol 3 3 3 0 0 1.00 1.00
WeakRandom.sol 2 2 2 0 0 1.00 1.00
Total 14 16 14 2 0 0.875 1.00

Métricas agregadas: - Precision: 14 / (14 + 2) = 0.875 (87.5%) - Recall: 14 / (14 + 0) = 1.00 (100%) - F1-Score: 2 × (0.875 × 1.00) / (0.875 + 1.00) = 0.93

5.3.2 Distribución de Severidades

Tabla 5.6. Distribución de hallazgos por severidad

Severidad Cantidad Porcentaje Definición (CVSS aproximado)
Critical 2 12.5% CVSS ≥ 9.0
High 5 31.3% 7.0 ≤ CVSS < 9.0
Medium 6 37.5% 4.0 ≤ CVSS < 7.0
Low 3 18.7% CVSS < 4.0
Total 16 100%

Figura 19. Distribución de hallazgos por severidad en el corpus de prueba

5.3.3 Detección por Capa

La Tabla 5.7 muestra la contribución de cada capa a la detección total, evidenciando la complementariedad de técnicas.

Tabla 5.7. Hallazgos detectados por capa

Capa Técnica Hallazgos Brutos Únicos % Contribución Única
1 Análisis Estático 12 8 50.0%
2 Fuzzing 5 2 12.5%
3 Ejecución Simbólica 8 3 18.8%
4 Invariant Testing 3 1 6.2%
5 Verificación Formal 6 1 6.2%
6 Property Testing 4 0 0.0%
7 Análisis IA 9 1 6.2%
Total 47 16 100%

Observación clave: Ninguna capa individual detectó todas las vulnerabilidades. La combinación de capas 1, 2 y 3 fue necesaria para alcanzar cobertura completa, validando la hipótesis de complementariedad de Ghaleb y Pattabiraman (2020).

5.3.4 Comparación con Herramientas Individuales

Tabla 5.8. Comparativa de rendimiento MIESC vs herramientas individuales

Herramienta TP FP FN Precision Recall F1
MIESC (7 capas) 14 2 0 0.875 1.00 0.93
Slither (sola) 10 3 4 0.77 0.71 0.74
Mythril (sola) 8 1 6 0.89 0.57 0.70
Echidna (sola) 5 0 9 1.00 0.36 0.53

Incremento de recall MIESC vs mejor individual (Slither):

\[\Delta_{recall} = \frac{1.00 - 0.71}{0.71} \times 100 = 40.8\%\]

Resultado RQ2: MIESC mejora el recall en 40.8% respecto a la mejor herramienta individual, confirmando la hipótesis de que la combinación de técnicas supera análisis individuales.

Este resultado es consistente con los hallazgos de Ghaleb y Pattabiraman (2020), quienes reportan un incremento del 34% al combinar análisis estático y simbólico.

Figura 20. Comparativa de rendimiento MIESC (7 capas) vs herramientas individuales (Slither, Mythril, Echidna)


5.4 Resultados: Normalización y Deduplicación (RQ3)

5.4.1 Efectividad de la Deduplicación

Las 7 capas generaron un total de 47 hallazgos brutos. El algoritmo de deduplicación redujo este número a 16 hallazgos únicos.

Tasa de deduplicación: (47 - 16) / 47 × 100 = 66.0%

Tabla 5.9. Análisis de hallazgos duplicados

Tipo de Duplicado Cantidad Porcentaje Ejemplo
Mismo hallazgo, múltiples herramientas 21 67.7% Reentrancy detectado por Slither, Mythril, GPTScan
Mismo hallazgo, misma herramienta, variantes 7 22.6% Slither reporta reentrancy-eth y reentrancy-no-eth
Falso duplicado (hallazgos distintos, misma línea) 3 9.7% Diferentes issues en función compleja
Total duplicados 31 100%

5.4.2 Validación del Mapeo Taxonómico

Se validó manualmente el mapeo de clasificaciones nativas a taxonomías estándar:

Tabla 5.10. Validación de mapeo taxonómico

Herramienta Hallazgos Mapeados Mapeo Correcto Precisión Mapeo
Slither 12 12 100%
Mythril 8 8 100%
GPTScan 9 8 88.9%
SMTChecker 6 6 100%
Total 35 34 97.1%

El único error de mapeo en GPTScan correspondió a una clasificación ambigua del modelo de lenguaje que fue corregida manualmente.

Resultado RQ3: La normalización logra una deduplicación del 66% con una precisión de mapeo del 97.1%, validando la efectividad del enfoque.


5.5 Resultados: Viabilidad en Producción (RQ4)

5.5.1 Tiempos de Ejecución

Tabla 5.11. Tiempos de ejecución por capa (promedio de 10 ejecuciones)

Capa Herramientas Tiempo Promedio (s) Desviación Estándar Ejecuta en Paralelo
1 Slither, Solhint, Securify2, Semgrep 3.2 0.4
2 Echidna, Foundry, Medusa, Vertigo 18.7 2.1
3 Mythril, Manticore, Oyente 52.4 8.3
4 Scribble, Halmos 14.1 1.8
5 SMTChecker, Certora 9.8 1.2
6 PropertyGPT, Aderyn, Wake 21.3 3.4
7 GPTScan, SmartLLM, LLMSmartAudit, etc. 41.6 5.7
Total (secuencial) 161.1
Total (paralelo por capa) 52.4

Observación: La ejecución paralela intra-capa reduce el tiempo total en un 67.5% (de 161.1s a 52.4s), fundamentado en la ley de Amdahl (1967) para paralelización.

Timeline de ejecución paralela de herramientas por capa

5.5.2 Consumo de Recursos

Tabla 5.12. Consumo de recursos durante auditoría completa

Recurso Valor Pico Valor Promedio Requerimiento Mínimo
Memoria RAM 6.2 GB 4.1 GB 8 GB recomendado
CPU 95% 65% Multi-core recomendado
Disco (cache) 312 MB 280 MB 1 GB disponible
GPU (Ollama) 4.2 GB VRAM 3.8 GB Opcional (CPU fallback)

5.5.3 Análisis de Costo

Tabla 5.13. Comparativa de costo operativo

Solución Costo por Auditoría Costo Mensual (100 auditorías) Costo Anual
MIESC (local) $0.00 $0.00 $0.00
GPTScan + GPT-4 API $0.15 $15.00 $180.00
MythX Cloud (Pro) $0.50 $50.00 $600.00
Certora Cloud ~$100 ~$10,000 ~$120,000
Auditoría manual $5,000-50,000 N/A N/A

Nota: Costos estimados basados en precios públicos de noviembre 2024

Resultado RQ4: MIESC es viable para producción con: - Tiempo: ~1 minuto para auditoría completa (ejecución paralela) - Recursos: 8 GB RAM suficiente - Costo: $0 operativo (ejecución local)


5.6 Análisis de Validez

Siguiendo las directrices de Wohlin et al. (2012), se analizan las amenazas a la validez:

5.6.1 Validez Interna

Amenaza: Sesgos en la selección de contratos de prueba.

Mitigación: Se utilizaron contratos con vulnerabilidades conocidas y documentadas, siguiendo metodología de Durieux et al. (2020).

5.6.2 Validez Externa

Amenaza: Generalización limitada por corpus pequeño.

Mitigación parcial: Los contratos cubren las categorías SWC más frecuentes (Tabla 3.2). Se recomienda validación adicional con contratos de producción.

5.6.3 Validez de Constructo

Amenaza: Métricas pueden no capturar efectividad real.

Mitigación: Se utilizan métricas estándar (precision, recall, F1) aceptadas en la literatura (Durieux et al., 2020).

5.6.4 Validez de Conclusión

Amenaza: Variabilidad en tiempos de ejecución.

Mitigación: Se reporta desviación estándar y se promedian 10 ejecuciones.


5.7 Discusión

5.7.1 Respuesta a RQ1

MIESC logró integrar exitosamente las 25 herramientas propuestas (100% disponibilidad). Los principales desafíos fueron:

  1. Compatibilidad de versiones: Python 3.11 requirió parches en bibliotecas legacy
  2. Dependencias comerciales: La migración a Ollama eliminó costos de API
  3. Obsolescencia: Docker permite mantener herramientas legacy operativas

Estos resultados validan la decisión de diseño de utilizar el patrón Adapter (Gamma et al., 1994) para encapsular heterogeneidad.

5.7.2 Respuesta a RQ2

El incremento del 40.8% en recall confirma la hipótesis de complementariedad de técnicas. Este resultado es consistente con:

  • Ghaleb y Pattabiraman (2020): 34% de incremento con 2 técnicas
  • Rameder et al. (2022): "Ninguna herramienta individual es suficiente"

La arquitectura de 7 capas representa una contribución original que extiende trabajos previos.

5.7.3 Respuesta a RQ3

La tasa de deduplicación del 66% demuestra que múltiples herramientas detectan las mismas vulnerabilidades con nomenclaturas distintas. La normalización a SWC/CWE/OWASP:

  • Reduce ruido en reportes
  • Facilita comparación entre auditorías
  • Permite trazabilidad hacia estándares

5.7.4 Respuesta a RQ4

Los resultados demuestran viabilidad para producción:

  • Rendimiento: Comparable a ejecución de herramienta individual más lenta (Mythril)
  • Recursos: Requerimientos moderados (8 GB RAM)
  • Costo: $0 elimina barreras de adopción

5.8 Limitaciones

  1. Corpus limitado: 4 contratos con vulnerabilidades conocidas no representan la complejidad de producción.

  2. Falsos positivos de IA: La capa 7 introdujo 2 FP, sugiriendo necesidad de refinamiento de prompts.

  3. Dependencia de Ollama: El rendimiento de la capa IA depende del modelo disponible.

  4. Vulnerabilidades de lógica: Algunas categorías (oracle manipulation, flash loans) requieren contexto externo no disponible.


5.9 Referencias del Capítulo

Amdahl, G. M. (1967). Validity of the single processor approach to achieving large scale computing capabilities. AFIPS Spring Joint Computer Conference, 483-485.

Atzei, N., Bartoletti, M., & Cimoli, T. (2017). A survey of attacks on Ethereum smart contracts (SoK). POST 2017, 164-186.

Digital Public Goods Alliance. (2023). Digital Public Goods Standard. https://digitalpublicgoods.net/standard/

Durieux, T., Ferreira, J. F., Abreu, R., & Cruz, P. (2020). Empirical review of automated analysis tools on 47,587 Ethereum smart contracts. ICSE 2020, 530-541.

Gamma, E., Helm, R., Johnson, R., & Vlissides, J. (1994). Design patterns. Addison-Wesley.

Ghaleb, A., & Pattabiraman, K. (2020). How effective are smart contract analysis tools? ISSTA 2020, 415-427.

Kitchenham, B., & Charters, S. (2007). Guidelines for performing systematic literature reviews in software engineering. Keele University.

Mueller, B. (2018). Smashing Ethereum smart contracts for fun and real profit. HITB Security Conference.

Paradigm. (2021). Foundry documentation. https://github.com/foundry-rs/foundry

Python. (2022). What's new in Python 3.11. https://docs.python.org/3/whatsnew/3.11.html

Rameder, H., Di Angelo, M., & Salzer, G. (2022). Review of automated vulnerability analysis of smart contracts on Ethereum. Frontiers in Blockchain, 5, 814977.

Runeson, P., Host, M., Rainer, A., & Regnell, B. (2012). Case study research in software engineering. Wiley.

Wohlin, C., Runeson, P., Höst, M., Ohlsson, M. C., Regnell, B., & Wesslén, A. (2012). Experimentation in software engineering. Springer.


Nota: Las referencias siguen el formato APA 7ma edición.