OP.EXP.9 Registro de la gestión de incidentes
Documentos de referencia
- Real Decreto 311/2022 - Anexo II, Medida OP.EXP.9
- T-024-011 - Registro de incidentes de seguridad
- T-024-014 - Base de datos de incidentes
- T-024-015 - Plantilla de registro de incidente
- GP-013 - Gestión de Ciberseguridad
- OP.EXP.7 - Gestión de incidentes
- ISO/IEC 27035 - Gestión de incidentes
- Directiva NIS2 - Requisitos de notificación
Guía de implantación
Objetivo
Establecer un sistema completo y detallado de registro de todos los incidentes de seguridad, desde su detección hasta su resolución completa, garantizando la trazabilidad, el análisis posterior y el cumplimiento de las obligaciones de notificación regulatoria.
Alcance
Este procedimiento cubre el registro de:
- Todos los incidentes de seguridad confirmados
- Eventos de seguridad bajo investigación
- Vulnerabilidades identificadas
- Casi-incidentes (near misses)
- Incidentes relacionados con el dispositivo médico
- Brechas de datos personales
- Incidentes de la cadena de suministro
Estructura del registro de incidentes
3.1 Información básica del incidente
ID_Incidente: INC-YYYY-MM-DD-NNNN
Fecha_Detección: YYYY-MM-DD HH:MM:SS
Fecha_Ocurrencia: YYYY-MM-DD HH:MM:SS (estimada si es necesario)
Reportado_Por: [Nombre, Rol, Contacto]
Severidad: Crítica | Alta | Media | Baja
Estado: Abierto | En Investigación | Contenido | Resuelto | Cerrado
Tipo: Malware | Acceso No Autorizado | DoS | Fuga Datos | Física | Otro
Sistemas_Afectados: [Lista de sistemas]
Datos_Comprometidos: Sí | No | En Investigación
Impacto_Dispositivo_Médico: Sí | No | Potencial
3.2 Clasificación detallada
Categorización NIS2:
- Impacto en servicios esenciales: Sí/No
- Número de usuarios afectados: [Cantidad]
- Duración de la interrupción: [Horas]
- Alcance geográfico: Local/Nacional/Internacional
- Impacto económico estimado: [EUR]
Categorización médica:
- Impacto en seguridad del paciente: Ninguno/Menor/Moderado/Grave/Crítico
- Funciones clínicas afectadas: [Lista]
- Datos clínicos comprometidos: Tipo y volumen
- Necesidad de notificación AEMPS: Sí/No
Fases de registro
4.1 Registro inicial (T=0 a T+1h)
Campos obligatorios:
{
"incidentId": "INC-2024-11-15-0001",
"detectionTime": "2024-11-15T10:30:00Z",
"reporterInfo": {
"name": "Juan Pérez",
"role": "Security Analyst",
"contact": "juan.perez@legithealth.com"
},
"initialAssessment": {
"summary": "Descripción breve del incidente",
"affectedSystems": ["API Gateway", "Database Server"],
"initialSeverity": "HIGH",
"containmentActions": ["Sistema aislado", "Accesos bloqueados"]
},
"timeline": [
{
"time": "10:30:00",
"action": "Detección inicial por IDS",
"performer": "Sistema automatizado"
},
{
"time": "10:35:00",
"action": "Verificación manual del alerta",
"performer": "Juan Pérez"
}
]
}
4.2 Registro de investigación (T+1h a T+24h)
Información adicional:
- Vector de ataque identificado
- Vulnerabilidades explotadas (CVE si aplica)
- Indicadores de Compromiso (IoCs)
- Alcance real del incidente
- Datos/sistemas confirmados como afectados
- Evidencias recolectadas
- Análisis de causa raíz preliminar
Formato de IoCs:
{
"indicators": [
{
"type": "IP",
"value": "192.168.1.100",
"context": "IP origen del ataque"
},
{
"type": "HASH",
"value": "5d41402abc4b2a76b9719d911017c592",
"algorithm": "MD5",
"context": "Malware detectado"
},
{
"type": "DOMAIN",
"value": "malicious-domain.com",
"context": "C&C server"
}
]
}
4.3 Registro de contención y erradicación (T+24h a T+72h)
Acciones documentadas:
Contención:
- Acciones_Inmediatas:
- Aislamiento_Red: "Completado 11:00"
- Bloqueo_Cuentas: "3 cuentas bloqueadas 11:15"
- Preservación_Evidencias: "Imagen forense creada 11:30"
- Acciones_Corto_Plazo:
- Parcheo_Vulnerabilidades: "CVE-2024-1234 parcheado"
- Cambio_Credenciales: "Todas las contraseñas admin cambiadas"
- Reglas_Firewall: "Nuevas reglas implementadas"
Erradicación:
- Eliminación_Malware: "Antivirus ejecutado, 5 archivos eliminados"
- Cierre_Backdoors: "Puerto 4444 cerrado, servicio eliminado"
- Limpieza_Logs: "Entradas maliciosas identificadas y marcadas"
- Verificación: "Scan completo sin detecciones"
4.4 Registro de recuperación (T+72h a cierre)
Plan de recuperación ejecutado:
- Orden de restauración de servicios
- Verificaciones realizadas por servicio
- Problemas encontrados durante recuperación
- Medidas adicionales implementadas
- Monitorización post-incidente
Plantilla completa de registro
# REGISTRO DE INCIDENTE - [ID_INCIDENTE]
## INFORMACIÓN GENERAL
- **ID Incidente:** INC-YYYY-MM-DD-NNNN
- **Fecha/Hora Detección:** YYYY-MM-DD HH:MM:SS UTC
- **Fecha/Hora Ocurrencia (estimada):** YYYY-MM-DD HH:MM:SS UTC
- **Fecha/Hora Cierre:** YYYY-MM-DD HH:MM:SS UTC
- **Duración Total:** XX horas
- **Clasificación:** [Severidad] / [Tipo] / [Estado]
## RESUMEN EJECUTIVO
[Descripción concisa del incidente, impacto y resolución - máx 200 palabras]
## CRONOLOGÍA DETALLADA
| Hora | Evento | Responsable | Evidencia |
| ----- | --------------- | ----------- | ---------- |
| HH:MM | [Acción/Evento] | [Nombre] | [Link/Ref] |
## ANÁLISIS TÉCNICO
### 4.1 Vector de Ataque
[Descripción del método utilizado]
### 4.2 Vulnerabilidades Explotadas
- CVE-XXXX-XXXXX: [Descripción]
- Configuración incorrecta: [Detalle]
### 4.3 Sistemas Afectados
| Sistema | Impacto | Datos Comprometidos | Tiempo Inactivo |
| -------- | ------------- | ------------------- | --------------- |
| [Nombre] | [Descripción] | [Sí/No - Tipo] | [Minutos] |
### 4.4 Indicadores de Compromiso
- **IPs Maliciosas:** [Lista]
- **Dominios:** [Lista]
- **Hashes de Archivos:** [Lista]
- **Patrones de Comportamiento:** [Descripción]
## IMPACTO
### 5.1 Impacto en el Negocio
- **Disponibilidad:** [% tiempo inactivo]
- **Usuarios Afectados:** [Número]
- **Pérdida Económica:** [Estimación EUR]
- **Impacto Reputacional:** [Bajo/Medio/Alto]
### 5.2 Impacto en Datos
- **Confidencialidad:** [Datos expuestos]
- **Integridad:** [Datos modificados]
- **Disponibilidad:** [Datos no accesibles]
### 5.3 Impacto Regulatorio
- **RGPD:** [Brecha notificable Sí/No]
- **NIS2:** [Incidente significativo Sí/No]
- **MDR:** [Impacto dispositivo médico Sí/No]
## RESPUESTA
### 6.1 Contención
[Medidas implementadas]
### 6.2 Erradicación
[Acciones tomadas]
### 6.3 Recuperación
[Proceso de restauración]
### 6.4 Mejoras Implementadas
[Controles adicionales]
## LECCIONES APRENDIDAS
### 7.1 Qué Funcionó Bien
- [Punto 1]
- [Punto 2]
### 7.2 Qué Necesita Mejora
- [Punto 1]
- [Punto 2]
### 7.3 Recomendaciones
- [Acción 1] - Responsable: [Nombre] - Fecha: [YYYY-MM-DD]
- [Acción 2] - Responsable: [Nombre] - Fecha: [YYYY-MM-DD]
## COMUNICACIONES
### 8.1 Notificaciones Internas
| Stakeholder | Fecha/Hora | Método | Confirmación |
| ------------ | ------------------ | --------------- | ------------ |
| [Nombre/Rol] | [YYYY-MM-DD HH:MM] | [Email/Llamada] | [Sí/No] |
### 8.2 Notificaciones Externas
| Entidad | Requisito | Fecha/Hora | Referencia |
| ------- | ----------- | ------------------ | ---------- |
| AEPD | RGPD Art.33 | [YYYY-MM-DD HH:MM] | [Ref#] |
| INCIBE | NIS2 | [YYYY-MM-DD HH:MM] | [Ref#] |
## EVIDENCIAS
### 9.1 Capturas de Pantalla
- [evidence_001.png] - Descripción
- [evidence_002.png] - Descripción
### 9.2 Logs
- [logs_YYYYMMDD.json] - Sistema X
- [audit_trail.csv] - Base de datos
### 9.3 Análisis Forense
- [memory_dump.raw] - Servidor afectado
- [network_capture.pcap] - Tráfico sospechoso
## MÉTRICAS
- **MTTD (Time to Detect):** XX minutos
- **MTTR (Time to Respond):** XX minutos
- **MTTC (Time to Contain):** XX horas
- **MTTE (Time to Eradicate):** XX horas
- **Total Downtime:** XX horas
## FIRMAS Y APROBACIONES
- **Preparado por:** [Nombre] - [Fecha]
- **Revisado por:** [CISO] - [Fecha]
- **Aprobado por:** [CTO/CEO] - [Fecha]
Base de datos de incidentes
6.1 Estructura de la base de datos
CREATE TABLE incidents (
incident_id VARCHAR(20) PRIMARY KEY,
detection_timestamp TIMESTAMP NOT NULL,
occurrence_timestamp TIMESTAMP,
reporter_id INTEGER REFERENCES users(user_id),
severity ENUM('CRITICAL', 'HIGH', 'MEDIUM', 'LOW'),
status ENUM('OPEN', 'INVESTIGATING', 'CONTAINED', 'RESOLVED', 'CLOSED'),
type VARCHAR(50),
affected_systems JSON,
data_breach BOOLEAN,
medical_device_impact BOOLEAN,
description TEXT,
root_cause TEXT,
iocs JSON,
timeline JSON,
communications JSON,
evidence_links JSON,
metrics JSON,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
closed_at TIMESTAMP,
INDEX idx_severity (severity),
INDEX idx_status (status),
INDEX idx_dates (detection_timestamp, occurrence_timestamp)
);
CREATE TABLE incident_actions (
action_id INTEGER AUTO_INCREMENT PRIMARY KEY,
incident_id VARCHAR(20) REFERENCES incidents(incident_id),
action_timestamp TIMESTAMP NOT NULL,
action_type ENUM('DETECTION', 'CONTAINMENT', 'ERADICATION', 'RECOVERY', 'COMMUNICATION'),
action_description TEXT,
performed_by INTEGER REFERENCES users(user_id),
evidence_link VARCHAR(500),
INDEX idx_incident (incident_id),
INDEX idx_timestamp (action_timestamp)
);
6.2 APIs de registro
Crear nuevo incidente:
POST /api/incidents
Content-Type: application/json
Authorization: Bearer [token]
{
"detection_time": "2024-11-15T10:30:00Z",
"severity": "HIGH",
"type": "UNAUTHORIZED_ACCESS",
"affected_systems": ["api-gateway", "database"],
"initial_description": "Acceso no autorizado detectado en API Gateway"
}
Actualizar incidente:
PATCH /api/incidents/{incident_id}
Content-Type: application/json
{
"status": "CONTAINED",
"root_cause": "Credenciales comprometidas por phishing",
"containment_actions": [...]
}
Notificaciones y reportes
7.1 Notificaciones automáticas
Evento | Destinatarios | Canal | Tiempo |
---|---|---|---|
Nuevo incidente P1/P2 | CISO, CTO, On-call | SMS + Email | Inmediato |
Cambio estado | Incident Manager | Inmediato | |
Cierre incidente | Stakeholders | < 1 hora | |
Informe semanal | Management | Lunes 9:00 | |
Informe mensual | Board | Portal | Día 1 del mes |
7.2 Reportes periódicos
Reporte semanal:
- Resumen de incidentes nuevos
- Estado de incidentes abiertos
- Métricas de respuesta
- Tendencias identificadas
Reporte mensual:
- Análisis estadístico completo
- Comparativa con meses anteriores
- Top 10 vulnerabilidades
- Efectividad de controles
- Recomendaciones de mejora
Reporte anual:
- Análisis comprehensivo
- Evolución de la postura de seguridad
- ROI de inversiones en seguridad
- Benchmarking con industria
- Plan de mejora para siguiente año
Análisis y métricas
8.1 KPIs del proceso de registro
Métrica | Objetivo | Medición |
---|---|---|
Completitud registro inicial | 100% campos obligatorios | Por incidente |
Tiempo registro inicial | < 1 hora desde detección | Por incidente |
Actualización timeline | Cada 2 horas durante incidente | Por incidente |
Calidad de RCA | 90% con causa raíz identificada | Mensual |
Cumplimiento notificaciones | 100% en plazo legal | Mensual |
8.2 Análisis de tendencias
Análisis mensual:
def analyze_monthly_trends():
metrics = {
'total_incidents': count_by_month(),
'by_severity': group_by_severity(),
'by_type': group_by_type(),
'mttr_trend': calculate_mttr_trend(),
'repeat_incidents': find_recurring_patterns(),
'cost_impact': estimate_monthly_cost()
}
return generate_trend_report(metrics)
Retención y archivo
9.1 Políticas de retención
Tipo de registro | Retención online | Archivo | Eliminación |
---|---|---|---|
Incidentes críticos | 5 años | 10 años | Nunca |
Incidentes altos | 3 años | 7 años | 10 años |
Incidentes medios | 2 años | 5 años | 7 años |
Incidentes bajos | 1 año | 3 años | 5 años |
Evidencias forenses | 5 años | Indefinido | Caso por caso |
9.2 Proceso de archivo
- Exportación trimestral: JSON + PDF
- Verificación de integridad: Hash SHA-256
- Cifrado: AES-256
- Almacenamiento: S3 Glacier + Copia física
- Indexación: Base de datos de archivo
- Prueba de recuperación: Anual
Integración con otros sistemas
- SIEM: Alimentación automática de eventos
- Ticketing: Creación de tickets para acciones
- CMDB: Actualización de estado de activos
- Risk Management: Actualización de matriz de riesgos
- Compliance: Evidencias para auditorías
- Threat Intelligence: Compartir IoCs
Formación y procedimientos
- Formación inicial: Cómo registrar incidentes correctamente
- Actualizaciones: Cambios en procedimientos (trimestral)
- Simulacros: Práctica de registro durante ejercicios
- Lecciones aprendidas: Sesiones post-incidente
- Certificación: Personal autorizado para registro
Signature meaning
The signatures for the approval process of this document can be found in the verified commits at the repository for the QMS. As a reference, the team members who are expected to participate in this document and their roles in the approval process, as defined in Annex I Responsibility Matrix
of the GP-001
, are:
- Author: Team members involved
- Reviewer: JD-003, JD-004
- Approver: JD-001