Elasticsearch Accesible Públicamente
Tu instancia de Elasticsearch es accesible desde internet sin autenticación, exponiendo todos los datos indexados a cualquiera que conozca la URL del endpoint.
Cómo Funciona
La API REST de Elasticsearch corre en el puerto 9200 y devuelve datos en respuesta a simples requests HTTP GET sin autenticación por defecto (en versiones antiguas). Si la instancia está vinculada a una IP pública y el puerto 9200 está abierto, un atacante puede consultar curl http://tu-elastic:9200/_search?size=10000 y dumpear todo tu índice. Esto ha expuesto millones de registros en numerosas brechas.
// MAL: cliente de Elasticsearch conectándose a un endpoint público sin auth
const client = new Client({
node: 'http://search.example.com:9200'
// Sin auth, HTTP (no HTTPS), endpoint público
});// BIEN: usa HTTPS y autentícate con API key o usuario/contraseña
const client = new Client({
node: process.env.ELASTICSEARCH_URL, // https://... con endpoint privado de VPC
auth: {
apiKey: process.env.ELASTICSEARCH_API_KEY
}
});Ejemplo Real
El salón de la fama de brechas de Elasticsearch es extenso: 1.2 mil millones de registros de Facebook (2019), 2.7 mil millones de registros de email (2020), 533 millones de registros scrapeados de LinkedIn — muchos vía instancias de Elasticsearch sin autenticación. El investigador de seguridad Bob Diachenko ha reportado cientos de instancias abiertas de Elasticsearch que contienen datos sensibles.
Cómo Prevenirlo
- Habilita la seguridad X-Pack en Elasticsearch para requerir autenticación para todas las requests
- Despliega Elasticsearch en una VPC privada sin IP pública — expónlo solo a través de tus servidores de app
- Siempre usa HTTPS (puerto 9243 para Elastic Cloud) — nunca HTTP en el puerto 9200 para ninguna configuración que no sea localhost
- Crea API keys con permisos mínimos de índice por aplicación, no una sola key de admin
- Escanea regularmente tu cluster de Elasticsearch en busca de índices accesibles públicamente con herramientas como Shodan
Tecnologías Afectadas
Data Hogo detecta esta vulnerabilidad automáticamente.
Escanea Tu Repo GratisVulnerabilidades Relacionadas
Conexión a Base de Datos Sin Cifrado
highTu conexión a la base de datos no usa SSL/TLS, lo que significa que todas las consultas y resultados viajan por la red en texto plano y pueden ser interceptados.
Base de Datos Accesible Públicamente
criticalTu base de datos está vinculada a 0.0.0.0 o expuesta en una IP pública sin VPC o firewall, haciéndola directamente accesible desde internet.
Credenciales de Base de Datos por Defecto
criticalTu base de datos usa credenciales predeterminadas de fábrica como postgres:postgres, root:root o admin:admin — lo primero que prueba cualquier atacante.
Cadena de Conexión con Contraseña Inline
highUna cadena de conexión a base de datos con contraseña en texto plano está hardcodeada en tu código fuente, comprometiendo tus credenciales de base de datos en el control de versiones.