Campaña City-Forum: Robo de Datos de Salesforce y ServiceNow con Herramientas Personalizadas (2025-2026)
Nombres Alternativos / Aliases
- City-Forum Campaign (Nombre de la campaña, por el dominio asociado)
- Salesforce/ServiceNow Guest User Attack (Por el vector explotado)
- Go-http-client Data Harvesting (Por el user-agent utilizado)
- LWR UI-API Exploitation (Por la técnica en Salesforce LWR)
- ServiceNow Search Endpoint Abuse (Por el vector en ServiceNow)
Fecha de Detección / Actividad
- Primera evidencia de infraestructura: Marzo de 2025 (dominio
city-forum.comresuelve a la IP) - Campaña activa desde: Al menos marzo de 2025
- Fecha del informe de Reco: 12 de agosto de 2026
- Duración de la campaña: Más de 17 meses (en el mismo servidor)
- Sectores objetivo: Telecomunicaciones, banca y servicios financieros, software empresarial (incluyendo seguridad y privacidad de datos), portales del sector público
- Estado: Activa (el volumen de actividad está aumentando)
Actor de Amenaza (Atribución)
| Característica | Detalle |
|---|---|
| Nombre del Actor | Desconocido (no atribuido) |
| Vínculo Gubernamental | No establecido |
| Tipo de Actor | Ciberdelincuencia / Robo de datos |
| Sofisticación | MUY ALTA. El actor demuestra: |
- Desarrollo de herramientas personalizadas en Go para múltiples plataformas (Salesforce y ServiceNow)
- Investigación y mapeo de vectores de filtración de datos no documentados
- Conocimiento profundo de las APIs de Salesforce (Aura, LWR UI-API) y ServiceNow (endpoint de búsqueda no documentado)
- Persistencia con una única infraestructura estática durante más de 17 meses
- Capacidad para extraer datos de manera sigilosa y a gran escala | | Motivación | Financiera (extorsión / venta de datos) | | Relación con ShinyHunters | No determinada. Reco no atribuye la campaña a ShinyHunters, señalando que el uso de herramientas personalizadas y la infraestructura estática difieren de las tácticas de ShinyHunters
Resumen Ejecutivo
La campaña City-Forum, identificada por la firma de seguridad Reco, consiste en un robo de datos a gran escala y de larga duración dirigido a Salesforce Experience Cloud y ServiceNow en organizaciones de todo el mundo . El atacante utiliza herramientas personalizadas para explotar permisos de usuario invitado (guest user) mal configurados, no vulnerabilidades de las plataformas, para extraer datos a los que los administradores han otorgado acceso sin darse cuenta .
Descubrimientos clave
| Descubrimiento | Detalle |
|---|---|
| Vector principal | Usuarios invitados con permisos excesivos en Salesforce y ServiceNow |
| Infraestructura | Un único servidor VPS (Contabo, IP 158.220.87.79) y dominio city-forum.com (activo desde marzo de 2025)
|
| User-agent | Go-http-client/1.1 (todas las solicitudes)
|
| Objetivo principal (Salesforce) | Más de 560,000 eventos de enumeración Aura en un solo objetivo |
| Técnica LWR (Salesforce) | Consultas GraphQL al endpoint /webruntime/api/services/data/{version}/graphql
|
| Técnica ServiceNow | Solicitudes POST anónimas al endpoint /api/now/sp/search?sysparm_cancelable=true
|
| Prueba de auto-registro | El atacante prueba SiteRegister y CommunitiesSelfReg para escalar privilegios
|
| Estado | Activa (continúa a volumen creciente) |
El núcleo del problema: Usuarios Invitados (Guest Users)
Tanto Salesforce como ServiceNow utilizan un usuario invitado para gestionar visitantes no autenticados a portales públicos :
- Salesforce Experience Cloud: Cada sitio tiene su propio Guest User. Si está mal configurado con permisos excesivos, un atacante puede consultar objetos de Salesforce (Account, Contact, Case, etc.) sin iniciar sesión.
- ServiceNow: Tiene un usuario
guestsimilar. Los portales de servicio pueden exponer datos a través de fuentes de búsqueda (sp_search_source) si el acceso de invitados no está restringido.
"If the guest can read a record, so can anyone on the internet. That is not a platform vulnerability." — Nitay Bachrach, Investigador de Reco
Vector de Ataque / Métodos de Distribución
Componentes de la infraestructura
| Componente | Detalle |
|---|---|
| IP de origen | 158.220.87.79 (Contabo GmbH - VPS en Alemania)
|
- ☑ Dominio |
city-forum.com(resuelve a la IP desde marzo de 2025) - ☑ User-agent |
Go-http-client/1.1(por defecto en Go)
Vectores de ataque específicos
1. Salesforce Aura (técnica principal)
El atacante utiliza el endpoint /aura (o /s/sfsites/aura) para:
- Enumerar objetos mediante
HostConfigController.getConfigData, que devuelve una lista de objetos accesibles (Account, Contact, Case, etc.). - Extraer registros mediante
SelectableListDataProviderController.getItems, que permite paginar a través de los registros de cada objeto.
"The busiest target logged over 560,000 events from this IP across the campaign window, essentially all of it guest Aura enumeration." — Reco
2. Salesforce LWR (Lightning Web Runtime)
El atacante utiliza el UI-API de LWR, un vector no documentado en herramientas públicas, para realizar consultas GraphQL al endpoint /webruntime/api/services/data/{version}/graphql :
- Enumera el esquema mediante
EntityDefinitionpara obtener todos los objetos consultables. - Extrae registros paginando con cursores.
- Barre versiones de API desde v56.0 hasta v66.0
3. Prueba de auto-registro (Salesforce)
El atacante prueba sistemáticamente los endpoints /SiteRegister y /CommunitiesSelfReg para determinar si el auto-registro está habilitado. Si es así, un visitante anónimo podría crear una cuenta autenticada, obteniendo acceso a datos adicionales .
4. ServiceNow Portal Search
El atacante utiliza el endpoint de búsqueda nativo de ServiceNow, /api/now/sp/search?sysparm_cancelable=true :
- Es un endpoint sin autenticación que procesa consultas de búsqueda del portal.
- El atacante envía solicitudes POST con diferentes términos de búsqueda para enumerar el contenido de las bases de conocimiento y catálogos expuestos.
- El cuerpo de la solicitud JSON incluye los parámetros
query,portal,source(ej.kbpara base de conocimiento,scpara catálogo) ycount.
Técnicas, Tácticas y Procedimientos (TTPs) - MITRE ATT&CK
| Táctica (MITRE ATT&CK) | Técnica / Subtécnica | Descripción / Implementación |
|---|---|---|
| Initial Access (TA0001) | Exploit Public-Facing Application (T1190) | Explotación de permisos de usuario invitado mal configurados en portales públicos |
| Reconnaissance (TA0043) | Active Scanning (T1595) | Enumeración de objetos y registros en Salesforce (Aura y LWR) |
| Reconnaissance (TA0043) | Search Open Websites/Domains (T1593) | Sondeo de portales de ServiceNow y endpoints de auto-registro de Salesforce |
| Collection (TA0009) | Data from Information Repositories (T1213) | Extracción de datos de Salesforce (Accounts, Contacts, Cases) y ServiceNow (KB articles, catálogos) |
| Exfiltration (TA0010) | Exfiltration Over Web Service (T1567) | Envío de datos robados a la infraestructura del atacante (no especificado) |
Impacto y Riesgo
| Categoría | Nivel | Descripción |
|---|---|---|
| Alcance | MUY ALTO | Organizaciones en sectores críticos a nivel mundial (telecom, finanzas, gobierno) |
| Duración | MUY ALTA | Más de 17 meses de actividad continuada |
| Detección | BAJA | Tráfico HTTP legítimo, sin exploits, user-agent no malicioso (Go-http-client/1.1) |
| Tipo de datos | MUY SENSIBLE | Nombres, números de teléfono, direcciones de correo, números de Seguro Social, datos médicos, datos financieros, números de tarjetas de crédito, datos de pasaportes |
| Riesgo de extorsión | MUY ALTO | La filtración de datos sensibles puede ser utilizada para extorsión y otros ataques posteriores (phishing, ingeniería social, fraude) |
Consecuencias para las organizaciones afectadas
| Consecuencia | Gravedad | Detalle |
|---|---|---|
| Filtración de datos de clientes | Crítica | Exposición de PII (nombre, correo, teléfono, SSN), datos financieros y médicos |
| Daño reputacional | Alta | Pérdida de confianza de clientes y socios |
| Multas regulatorias | Alta | Posibles sanciones por incumplimiento de GDPR, CCPA, etc. |
| Riesgo de extorsión | Alta | El atacante podría exigir un rescate para no publicar los datos robados |
| Riesgo de phishing | Alta | Los datos robados pueden ser utilizados para ataques de phishing dirigidos (spear-phishing) y vishing a empleados y clientes |
Recomendaciones de Mitigación
Para Salesforce Experience Cloud
| Acción | Prioridad | Descripción |
|---|---|---|
| Auditar permisos de usuario invitado | CRÍTICA | Revisar y restringir los permisos de objeto, campo y registro del perfil de usuario invitado al mínimo absoluto necesario para el funcionamiento del sitio |
- ☑ Deshabilitar "Allow guest users to access public APIs" | CRÍTICA | Configuración en Experience Builder > Workspaces > Administration > Preferences. Cierra el acceso a la UI-API (GraphQL) para invitados
- ☑ Eliminar permisos de "API Enabled" | ALTA | Desmarcar "API Enabled" en los permisos del sistema del perfil de usuario invitado
- ☑ Deshabilitar auto-registro | ALTA | Si no se requiere, deshabilitar la auto-registración para evitar que los invitados creen cuentas y amplíen el acceso
- ☑ Revisar reglas de compartición (sharing rules) | ALTA | Asegurar que las reglas de compartición para el usuario invitado no concedan acceso a datos no públicos
- ☑ Monitorear Event Monitoring | ALTA | Buscar eventos de
AuraRequestySitescon user-agentGo-http-client/1.1o IP158.220.87.79, y patrones de actividad anómala (ej. altas tasas degetItemsen Aura)
Para ServiceNow
| Acción | Prioridad | Descripción |
|---|---|---|
| Revisar fuentes de búsqueda de portales públicos | CRÍTICA | Identificar qué fuentes de búsqueda (sp_search_source) están expuestas a través de portales públicos (m2m_sp_portal_search_source) y eliminar aquellas que no sean estrictamente necesarias
|
- ☑ Auditar fuentes de búsqueda basadas en script | CRÍTICA | Revisar el script
data_fetch_scriptde cada fuente de búsqueda. Asegurar que incluyangs.isLoggedIn()antes de consultar datos y que utilicenGlideRecordSecure(que respeta ACLs) en lugar deGlideRecord - ☑ Revisar criterios de "Can Read" para Knowledge Bases | CRÍTICA | Auditar
kb_uc_can_read_mtomyuser_criteria. Eliminar los criterios "Any User" que conceden acceso de lectura a invitados a bases de conocimiento sensibles - ☑ Revisar logs de transacciones | ALTA | Buscar en
syslog_transactionactividad de la IP158.220.87.79o del endpoint/api/now/sp/search, especialmente con usuarioguesty volúmenes anómalos de solicitudes
Herramientas de Detección
Para Salesforce
Salesforce Event Monitoring (requiere Shield o add-on):
- Consultar logs de
AuraRequestySites. - Buscar el user-agent
Go-http-client/1.1y la IP158.220.87.79. - Buscar altos volúmenes de
SelectableListDataProviderController/ACTION$getItemsenACTION_MESSAGE.
Para ServiceNow
Log de transacciones syslog_transaction :
- Filtrar por IP Address
158.220.87.79. - Filtrar por URL que comience con
/api/now/sp/search. - Observar el campo
Created by(buscarguest) y la columnaOutput length(valores grandes indican datos devueltos)
Antecedentes: La Campaña de ShinyHunters (Marzo 2026)
ShinyHunters llevó a cabo una campaña similar contra Salesforce Experience Cloud entre mediados de 2025 y marzo de 2026, utilizando una versión modificada de la herramienta AuraInspector para explotar permisos de usuario invitado mal configurados . Salesforce confirmó que se trataba de una mala configuración del cliente, no de una vulnerabilidad de la plataforma.
Diferencias clave con City-Forum:
| Aspecto | ShinyHunters | City-Forum |
|---|---|---|
| Herramienta | AuraInspector (modificado) | Herramienta personalizada en Go |
| Alcance | Solo Salesforce Aura | Salesforce Aura + LWR + ServiceNow |
| Infraestructura | Múltiples IPs | IP estática durante >17 meses |
| User-agent | Variable | Go-http-client/1.1
|
Opiniones de Expertos
"The threat actor created their own toolset, based on research and techniques which are not well documented online. They studied the services to map different common data leak vectors – this is an advanced actor." — Nitay Bachrach, Investigador de Reco
"If the guest can read a record, so can anyone on the internet. That is not a platform vulnerability." — Nitay Bachrach, Investigador de Reco
"The core issue is that 'what is public' and 'what should be public' are two different things, and that's exactly what the attacker exploited." — Nitay Bachrach, Investigador de Reco
Referencias y Fuentes
- Reco AI. (2026, 12 de agosto). The "City-Forum" Campaign - An advanced attacker is targeting Salesforce and ServiceNow instances worldwide.
- BleepingComputer. (2026, 12 de agosto). "City-Forum" data-theft attacks target Salesforce, ServiceNow portals.
- The Register. (2026, 13 de agosto). Mystery attacker spent a year raiding Salesforce and ServiceNow portals.
- Help Net Security. (2026, 12 de agosto). A stranger has been reading Salesforce and ServiceNow portals worldwide for 17 months.
- Dark Reading. (2026, 13 de agosto). Long-running Data Theft Campaign Targeting Salesforce, ServiceNow.
- Techzine. (2026, 12 de agosto). City-Forum extracts data from Salesforce and ServiceNow.
- CyberSecurity Help. (2026, 12 de agosto). City-Forum campaign targets exposed Salesforce and ServiceNow data.
- SC Media. (2026, 10 de marzo). Salesforce confirms ShinyHunters exploited Experience Cloud sites.
- TechRepublic. (2026, 12 de agosto). City-Forum attacks target Salesforce and ServiceNow.
- HEAL Security. (2026, 12 de agosto). New "City-Forum" Hackers Attacking Salesforce and ServiceNow Instances Worldwide.
- DIVD. (2026, 24 de abril). DIVD-2026-00005 - Salesforce Experience Cloud – Data Exposure via Misconfiguration.
Historial de Revisiones
| Fecha | Versión | Autor | Cambios Realizados |
|---|---|---|---|
| 2026-08-13 | 1.0 | Fernando Vargas Hincapié | Creación inicial basada en el informe de Reco y fuentes asociadas |
Indicadores de Compromiso (IOCs)
Infraestructura
| Tipo | Indicador |
|---|---|
| IP | 158.220.87.79 (Contabo GmbH - ASN 51167)
|
- Dominios |
city-forum.com| | |www.city-forum.com| | |server.city-forum.com| | |mail.city-forum.com| | |www.server.city-forum.com| | |www.mail.city-forum.com| | User-agent |Go-http-client/1.1
Comportamiento a monitorear
| Plataforma | Endpoint/Comportamiento | Detalle |
|---|---|---|
| Salesforce Aura | /aura, /s/sfsites/aura
|
Altos volúmenes de getConfigData y getItems desde IP/User-Agent sospechoso
|
- Salesforce LWR |
/webruntime/api/services/data/v{56..66}/graphql| Solicitudes GraphQL desde invitados a versiones de API consecutivas | | Salesforce (auto-registro) |/SiteRegister,/CommunitiesSelfReg| Sondeo de estos endpoints en sitios de Experience Cloud | | ServiceNow |POST /api/now/sp/search?sysparm_cancelable=true| Solicitudes POST anónimas al endpoint de búsqueda del portal |
Etiquetas / Categorías
city-forum-data-theft salesforce-servicenow-breach guest-user-exploitation salesforce-experience-cloud-lwr-ui-api servicenow-sp-search-endpoint go-http-client-data-harvesting shinyhunters-alternative-actor