Filtración de datos
Cómo ocurrió la filtración
De dónde salieron los datos publicados y por qué el propio panel de Exoliner estaba abierto a ello.
De dónde salieron los datos
El export del panel (28 de septiembre de 2026)
Todo lo de este sitio se exportó a través del propio panel de moderación de Exoliner: cuentas de usuario, registros de ejecución de scripts, transcripciones de tickets de Discord, registros de moderación y la instantánea de estadísticas del propio panel. El export se hizo en varias extracciones con rango de personal desde más de una fuente.
Cruzado con una filtración anterior (junio de 2025)
Se incorporó un export más antiguo de la base de datos de Exoliner, de junio de 2025, para cubrir huecos que dejó el export del panel: miles de correos de cuentas, IDs de Discord, IDs de Roblox vinculados, indicadores de correo verificado y las fechas exactas de registro que ahora se muestran en la página de cuentas.
Por qué fue posible
Una evaluación de seguridad independiente del panel y la API de Exoliner encontró que cualquier cuenta con rango de personal podía ejecutar operaciones globales sin auditoría, sin límites de exportación ni alertas de auditoría. Los datos de abajo corresponden solo al panel y la API. La evaluación señala que el sitio web principal tiene otros problemas que no se catalogan aquí.
Por qué fue posible
La evaluación no encontró ninguna vía de entrada para un externo. La exposición que documenta es el radio de impacto: cualquier cuenta con rango de personal podía ejecutar operaciones de escritura sin auditoría sobre la configuración de toda la plataforma, incluida una que podía romper el ejecutor de todos los usuarios a la vez.
Qué encontró la evaluación
Cada hallazgo se describe a partir de la evaluación del panel y la API de Exoliner. No cubre el sitio web principal, que según la evaluación tiene otros problemas.
Crítico
1Sobrescritura global de offsets sin auditoría
C-1La evaluación informa de que PUT /v1/staff/offsets aceptaba cualquier token de personal sin restricción de propietario y no dejaba ningún registro de auditoría. Una sola solicitud reemplazaba los offsets de los que depende el ejecutor de todos los usuarios. En las pruebas, el total de offsets pasó de 401 a 1 en una llamada, sin vista previa, confirmación ni aprobación.
Alto
3Cualquier transcripción de soporte legible por ID
H-1Se informa de que GET /v1/staff/tickets/{id}/transcript devuelve cualquier ticket por número entero secuencial sin comprobar la propiedad, lo que expone conversaciones privadas completas, incluidos IDs de usuario de Discord y archivos adjuntos.
Borrado de scripts al alcance del personal
H-2Se informa de que DELETE /v1/scripts/delete devolvió éxito con un token de personal sin comprobar la propiedad, lo que daba la capacidad de borrar cualquier script por ID sin borrado lógico ni registro de auditoría.
Sin límite de tasa para enumerar tablas completas
H-3La evaluación informa de que volcó toda la tabla de usuarios, 13,483 registros, en 135 solicitudes durante 25 segundos sin ninguna respuesta de límite de tasa.
Medio
5Sin 2FA adicional en escrituras privilegiadas
M-1Se informa de que offsets, ejecución, sanciones, activación de juegos, máximo de jugadores, ajustes de revisión por IA, inteligencia de moderación y silencio de chat aceptan un simple token bearer, así que una sesión robada no necesita un segundo factor.
Tokens de 30 días, sin interruptor de revocación obligatorio
M-2Se informa de que los tokens duran exactamente 30 días sin endpoint de renovación, y de que el campo authVersion, que permitiría revocar todas las sesiones con una sola acción, se devuelve pero el servidor no lo aplica.
Reglas antidetección editables por cualquier miembro del personal
M-3Se informa de que los endpoints de inteligencia de moderación que guardan las reglas antidetección de Exoliner aceptan crear y borrar desde cualquier cuenta de personal, por lo que esas reglas podrían desactivarse o corromperse.
Mensajes privados borrados expuestos al personal
M-4Se informa de que el endpoint de auditoría de chat expone completos a cualquier miembro del personal los mensajes privados borrados, con el contenido, el ID del usuario destinatario y el miembro del personal que los borró.
Exposición de datos de nivel de personal
M-5Se informa de que los endpoints de personal filtran una estimación de ingresos, la distribución exacta de rangos, IDs de Discord, el registro de moderación completo y la latencia y el número de servidores por lugar.
Bajo
5Política de seguridad de contenido débil en el frontend
L-1Se informa de que la política del frontend permite unsafe-inline y unsafe-eval sin nonce, así que cualquier fallo de cross-site scripting podría leer una sesión de personal del almacenamiento local.
Búsqueda de usuarios rota
L-2Se informa de que todos los parámetros de búsqueda del endpoint de usuarios se ignoran y devuelven la misma primera página sin filtrar, por lo que el personal podría estar actuando sobre las cuentas equivocadas.
Divulgación pública de información
L-3Se informa de que los endpoints de estado y estadísticas sin autenticación filtran el tiempo de actividad y totales en vivo, y de que los cuerpos 404 uniformes permiten enumerar la tabla de rutas.
Errores de servidor por confusión de tipos
L-4Se informa de que las entradas que no son cadenas provocan errores 500 no controlados en varios endpoints. Los cuerpos de error se mantienen limpios, así que esto se lee como un problema de fiabilidad y no de divulgación.
Nombre de host duplicado en el backend
L-5Se informa de que dos nombres de host sirven rutas y autorización idénticas desde el mismo proceso, lo que duplica la superficie de ataque y permite eludir una lista de permitidos por host a través del gemelo.
¿Prefieres el registro con búsqueda? Explora las cuentas