Skip to main content
Critical

Exposición de Datos Sensibles

CategoríaExposición de Datos y Configuración IncorrectaOWASPA02:2021 – Fallos CriptográficosPrimera aparición2004Tiempo de lectura10 minVerificado2026-03-11
DEFINICIÓN

La exposición de datos sensibles ocurre cuando una aplicación no protege adecuadamente información confidencial — como credenciales, datos financieros, registros de salud, identificadores personales o claves criptográficas — debido a la falta de cifrado, algoritmos criptográficos débiles, gestión inadecuada de claves, controles de acceso insuficientes o divulgación involuntaria a través de mensajes de error, logs, copias de seguridad o repositorios públicos.

Cómo Funciona Exposición de Datos Sensibles

La exposición de datos sensibles no es una técnica de ataque única sino una clase de vulnerabilidades que surgen de cómo las aplicaciones almacenan, transmiten y manejan información confidencial. Los datos pueden exponerse en reposo (bases de datos, sistemas de archivos, copias de seguridad), en tránsito (comunicaciones de red) o en uso (memoria, logs, mensajes de error). Los atacantes explotan estas exposiciones a través de acceso directo (almacenamiento mal configurado, endpoints expuestos), ataques criptográficos (algoritmos débiles, mala gestión de claves), fugas de canal lateral (ataques de temporización, análisis de caché) o divulgación indirecta (errores verbosos, páginas de depuración, historial de git). La exposición frecuentemente ocurre no a través de hacking sofisticado sino por descuidos fundamentales en las prácticas de protección de datos.

1

Identificar activos de datos sensibles

El atacante examina la aplicación para identificar qué datos sensibles existen y cómo se manejan. Los objetivos comunes incluyen: credenciales de autenticación (contraseñas, claves API, tokens), datos financieros (números de tarjetas de crédito, cuentas bancarias), información de identificación personal (SSN, documentos nacionales de identidad, fechas de nacimiento), información de salud protegida (PHI bajo HIPAA), y datos críticos para el negocio (secretos comerciales, claves de cifrado, configuraciones internas). El atacante busca cualquier endpoint, archivo o funcionalidad que procese o muestre dichos datos.

2

Descubrir vectores de exposición

El atacante sondea rutas de divulgación comunes: endpoints HTTP sin cifrar que transmiten datos sensibles, buckets de almacenamiento en la nube (S3, GCS, Azure Blob) con permisos mal configurados, directorios .git expuestos que revelan código fuente y secretos en el historial de commits, mensajes de error verbosos que filtran esquemas de base de datos y trazas de pila, páginas de depuración/estado dejadas habilitadas en producción, respuestas de API que devuelven más datos de los que muestra la interfaz, archivos de respaldo accesibles mediante URLs predecibles (.bak, .sql, .old), y credenciales codificadas en JavaScript del lado del cliente o binarios de aplicaciones móviles.

3

Explotar criptografía débil

Si los datos están cifrados, el atacante evalúa la implementación criptográfica: algoritmos obsoletos (MD5, SHA1, DES, RC4) pueden romperse con hardware moderno; contraseñas hasheadas sin salt son vulnerables a ataques de tablas rainbow; el cifrado en modo ECB preserva patrones del texto plano; claves de cifrado débiles o reutilizadas pueden ser forzadas por fuerza bruta; la falta de TLS o el uso de TLS 1.0/1.1 permite ataques de degradación de protocolo; errores de validación de certificados permiten la intercepción man-in-the-middle.

4

Acceder y exfiltrar los datos expuestos

Una vez que se encuentra un vector de exposición, el atacante extrae los datos: descargando volcados de base de datos de copias de seguridad desprotegidas, raspando respuestas de API por datos excesivos, capturando credenciales del tráfico sin cifrar, clonando repositorios git con secretos en el historial, o accediendo a almacenamiento en la nube mal configurado a escala. Las herramientas automatizadas escanean todo internet en busca de exposiciones comunes — Shodan, Censys y escáneres especializados indexan continuamente bases de datos, APIs y recursos en la nube expuestos.

Ejemplos Reales

2017

Brecha de datos de Equifax

Equifax expuso datos personales de 147 millones de consumidores incluyendo números de Seguro Social, fechas de nacimiento, direcciones y 209,000 números de tarjetas de crédito. Si bien el vector inicial fue una vulnerabilidad sin parche en Apache Struts, el impacto masivo se debió a fallos de exposición de datos sensibles: datos cifrados almacenados con algoritmos obsoletos, credenciales almacenadas en texto plano en archivos de configuración, y tráfico de red interna transmitido sin cifrar. La brecha costó a Equifax más de $1.4 mil millones y resultó en un acuerdo de $575 millones con la FTC.

2019

Almacenamiento de contraseñas en texto plano de Facebook

Facebook reveló que cientos de millones de contraseñas de usuarios habían sido almacenadas en texto plano en archivos de log internos, accesibles a más de 20,000 empleados. Las contraseñas, que abarcaban cuentas de Facebook, Facebook Lite e Instagram, fueron registradas por aplicaciones internas desde 2012. Aunque Facebook declaró que no había evidencia de acceso externo o abuso, el incidente violó principios fundamentales de protección de datos y resultó en escrutinio regulatorio bajo GDPR.

2021

Exposición de datos en Microsoft Power Apps

Investigadores de seguridad descubrieron que 38 millones de registros de 47 organizaciones eran accesibles públicamente a través de portales de Microsoft Power Apps mal configurados. Los datos expuestos incluían información de rastreo de contactos de COVID-19, números de Seguro Social, registros de empleados y estado de vacunación de organizaciones como American Airlines, Ford, gobiernos estatales y escuelas públicas. La exposición se debió a configuraciones por defecto que hacían las tablas de datos accesibles públicamente a menos que se aseguraran explícitamente.

Impacto y Evaluación de Riesgo

La exposición de datos sensibles tiene el impacto potencial más amplio de cualquier vulnerabilidad de seguridad web porque compromete directamente la confidencialidad que los controles de seguridad están diseñados para proteger. Las credenciales expuestas permiten la toma de control de cuentas y el movimiento lateral. Los datos personales expuestos activan sanciones regulatorias — las multas del GDPR pueden alcanzar el 4% de los ingresos globales anuales (mínimo de 20 millones de euros), las violaciones de HIPAA conllevan multas de hasta $1.9 millones por incidente, y el incumplimiento de PCI DSS resulta en multas de hasta $100,000 por mes. Más allá de las sanciones financieras, la exposición de datos causa daño reputacional irreversible: el 65% de los consumidores pierden la confianza en una empresa después de una brecha de datos, y el 31% terminan su relación por completo. Las claves criptográficas o configuraciones internas expuestas pueden permitir ataques adicionales, creando fallos de seguridad en cascada a través de la infraestructura de la organización.

Cómo Detectar Exposición de Datos Sensibles

Realizar escaneos regulares de descubrimiento de datos sensibles a través de bases de datos, sistemas de archivos, repositorios de código y almacenamiento en la nube para identificar dónde residen los datos sensibles y cómo están protegidos. Monitorear datos sin cifrar en tránsito analizando el tráfico de red en busca de patrones sensibles (números de tarjetas de crédito, SSNs) en solicitudes HTTP. Escanear repositorios públicos (GitHub, GitLab, Bitbucket) en busca de secretos comprometidos accidentalmente usando herramientas como TruffleHog, GitLeaks o GitHub Secret Scanning. Auditar los permisos de los buckets de almacenamiento en la nube regularmente — herramientas automatizadas pueden verificar continuamente que los buckets de S3, GCS y los contenedores de Azure no sean accesibles públicamente. Revisar logs de aplicación y mensajes de error en busca de fugas de datos sensibles. Implementar sistemas de prevención de pérdida de datos (DLP) que monitoreen los flujos de datos salientes en busca de contenido sensible. Probar las respuestas de API para asegurar que no devuelvan más datos de los necesarios (exposición excesiva de datos). Realizar pruebas de penetración regulares enfocadas en los controles de protección de datos.

Cómo Prevenir Exposición de Datos Sensibles

Clasificar todos los datos por nivel de sensibilidad y aplicar controles de protección proporcionales a la clasificación. Cifrar todos los datos sensibles en reposo usando algoritmos fuertes (AES-256) con gestión adecuada de claves (HSMs, rotación de claves, separación de funciones). Forzar TLS 1.2+ para todos los datos en tránsito — desplegar cabeceras HSTS con max-age largo e includeSubDomains. Hashear contraseñas con algoritmos adaptativos (Argon2id, bcrypt) con factores de trabajo apropiados. Nunca almacenar datos de tarjetas de crédito a menos que sea absolutamente necesario — usar tokenización a través de procesadores de pagos. Minimizar la recopilación y retención de datos: no recopile lo que no necesita, elimine lo que ya no necesita. Configurar el manejo de errores para devolver mensajes genéricos en producción sin trazas de pila, detalles de base de datos ni rutas internas. Auditar las respuestas de API para asegurar que devuelvan solo los campos necesarios (usar DTOs/serializadores para controlar la salida). Asegurar el almacenamiento en la nube con el principio de mínimo privilegio — todos los buckets privados por defecto, acceso público solo a través de CDN/URLs firmadas. Implementar gestión de secretos (HashiCorp Vault, AWS Secrets Manager) en lugar de codificar credenciales. Escanear repositorios de código en busca de secretos comprometidos en los pipelines de CI/CD. Realizar evaluaciones de impacto de protección de datos (DPIAs) regulares para sistemas que procesan datos sensibles.

Ejemplos de Código

Vulnerable: Multiple data exposure issues
import hashlib
from flask import Flask, jsonify, request

app = Flask(__name__)

# VULNERABLE: Hardcoded database credentials
DB_PASSWORD = 'super_secret_db_pass_2026'
API_KEY = 'sk-live-abc123def456ghi789'

# VULNERABLE: Weak password hashing (unsalted MD5)
def hash_password(password):
return hashlib.md5(password.encode()).hexdigest()

# VULNERABLE: Excessive data exposure in API response
@app.route('/api/users/<int:user_id>')
def get_user(user_id):
user = db.query('SELECT * FROM users WHERE id = %s', (user_id,))
# Returns ALL fields including password hash, SSN, internal notes
return jsonify(dict(user))

# VULNERABLE: Sensitive data in error messages
@app.route('/api/login', methods=['POST'])
def login():
try:
user = authenticate(request.json)
except Exception as e:
# Leaks database schema, query details, stack trace
return jsonify({'error': str(e)}), 500
Secure: Proper data protection
import os
import bcrypt
from flask import Flask, jsonify, request
from dataclasses import dataclass, asdict

app = Flask(__name__)

# SECURE: Credentials from environment/secrets manager
DB_PASSWORD = os.environ['DB_PASSWORD']
API_KEY = os.environ['API_KEY']

# SECURE: Strong adaptive password hashing
def hash_password(password):
return bcrypt.hashpw(password.encode(), bcrypt.gensalt(rounds=12))

# SECURE: DTO pattern — explicitly define returned fields
@dataclass
class UserResponse:
id: int
username: str
display_name: str
created_at: str
# Excludes: password_hash, ssn, internal_notes, email (unless needed)

@app.route('/api/users/<int:user_id>')
def get_user(user_id):
user = db.query('SELECT * FROM users WHERE id = %s', (user_id,))
if not user:
return jsonify({'error': 'User not found'}), 404

# Return only safe fields via DTO
safe_user = UserResponse(
id=user.id,
username=user.username,
display_name=user.display_name,
created_at=user.created_at.isoformat()
)
return jsonify(asdict(safe_user))

# SECURE: Generic error messages in production
@app.route('/api/login', methods=['POST'])
def login():
try:
user = authenticate(request.json)
return jsonify({'token': create_session(user.id)})
except AuthError:
return jsonify({'error': 'Invalid credentials'}), 401
except Exception:
# Log full error internally, return generic message
app.logger.exception('Login error')
return jsonify({'error': 'An error occurred'}), 500
Audit: Scan for common data exposures
# Check for exposed .env files
curl -s -o /dev/null -w "%{http_code}" https://example.com/.env

# Check for exposed .git directory
curl -s -o /dev/null -w "%{http_code}" https://example.com/.git/HEAD

# Check for exposed backup files
for ext in .bak .sql .dump .old .backup .tar.gz .zip; do
status=$(curl -s -o /dev/null -w "%{http_code}" "https://example.com/db${ext}")
echo "db${ext}: ${status}"
done

# Scan for secrets in git history (using TruffleHog)
trufflehog git https://github.com/org/repo --only-verified

# Check S3 bucket permissions
aws s3api get-bucket-acl --bucket my-bucket
aws s3api get-bucket-policy --bucket my-bucket
aws s3api get-public-access-block --bucket my-bucket

# Scan for sensitive data patterns in API responses
# Look for SSN, credit card, or API key patterns
curl -s https://api.example.com/users/1 | \
grep -iE '(\d{3}-\d{2}-\d{4}|\d{16}|sk-live-|AKIA[A-Z0-9])'

Fortalece tus defensas contra Exposición de Datos Sensibles con PowerWAF.

Seguridad integral para aplicaciones web con WAF, rate limiting y monitoreo de amenazas en tiempo real.

Los cupos del plan gratuito son limitados

Preguntas Frecuentes

Los datos sensibles incluyen: credenciales de autenticación (contraseñas, claves API, tokens), información de identificación personal (PII — nombres, direcciones, SSN, documentos nacionales de identidad, fechas de nacimiento), datos financieros (números de tarjetas de crédito, cuentas bancarias, historial de transacciones), información de salud protegida (PHI — registros médicos, diagnósticos, datos de seguros), datos biométricos, comunicaciones legales/privilegiadas, secretos comerciales, claves criptográficas, y cualquier dato sujeto a protección regulatoria (datos personales del GDPR, datos de titulares de tarjetas del PCI, PHI de HIPAA). En caso de duda, clasifique los datos como sensibles — el costo de sobreproteger es mucho menor que el costo de la exposición.
El cifrado en reposo es necesario pero no suficiente. Los datos aún pueden exponerse a través de: acceso a nivel de aplicación (la aplicación descifra los datos para uso legítimo, por lo que las vulnerabilidades de la aplicación pueden acceder a datos descifrados), fallos en la gestión de claves (claves almacenadas junto a los datos cifrados), exposición de copias de seguridad (los respaldos pueden no tener el mismo cifrado), fugas en logs y mensajes de error (datos sensibles registrados en texto plano antes/después del cifrado), y volcados de memoria. La protección integral requiere cifrado en reposo, en tránsito, gestión adecuada de claves, controles de acceso y políticas de manejo de datos a lo largo de todo el ciclo de vida de los datos.
Descubrimiento proactivo: escanee su propia superficie de ataque externa usando herramientas como Shodan, Censys o herramientas específicas de la nube (escáner de S3 de AWS, Azure Advisor). Ejecute escaneo de secretos en GitHub/GitLab en todos los repositorios de la organización. Use servicios de monitoreo de brechas de datos (HaveIBeenPwned, SpyCloud) para verificar si las credenciales de empleados aparecen en brechas. Realice pruebas de penetración regulares con la exposición de datos como alcance específico. Despliegue soluciones de gestión de superficie de ataque externa (EASM) para monitoreo continuo.
Un WAF proporciona protección limitada contra la exposición de datos sensibles. Puede enmascarar datos sensibles en las respuestas del servidor (enmascaramiento de tarjetas de crédito, redacción de SSN), bloquear el acceso a rutas de archivos sensibles conocidos (.env, .git, archivos de respaldo), y detectar algunos patrones de fuga de datos en respuestas salientes. Sin embargo, la exposición de datos es fundamentalmente un problema de gestión de datos y arquitectura de aplicaciones. El almacenamiento en la nube mal configurado, el cifrado débil, el almacenamiento de credenciales en texto plano y las respuestas excesivas de API deben abordarse a nivel de aplicación e infraestructura, no en el perímetro del WAF.