
Серия атак City-Forum нацелилась на данные, которые компании сами открыли для анонимных посетителей в Salesforce Experience Cloud и клиентских порталах ServiceNow. SaaS-компания Reco пишет, что за кампанией стоит один сервер, а атаки продолжаются и становятся активнее.
В списке пострадавших целей — телеком-компании, банки и финансовые организации, поставщики корпоративного софта, компании из сферы безопасности и защиты данных, а также государственные порталы. Reco связывает кампанию с IP-адресом 158.220.87.79, который размещён у немецкого VPS-провайдера Contabo. В атаках почти всегда используется стандартный user agent Go-http-client/1.1.
Этот IP связан с доменом city-forum.com, который указывает на тот же сервер как минимум с марта 2025 года. Набор признаков повторяется почти во всех атаках против Salesforce и ServiceNow в рамках этой кампании. Reco отдельно отмечает, что видела только действия гостевых пользователей, а не вход под учётной записью.
Главная особенность City-Forum в том, что кампания не использует уязвимость в Salesforce или ServiceNow. Атакующие забирают данные, которые организации сами сделали доступными для незалогиненных гостей через слишком широкие правила доступа, права или настройки порталов.
И Salesforce Experience Cloud, и ServiceNow используют гостевые учётные записи для анонимных посетителей. Если таким аккаунтам разрешён доступ к записям, их можно извлечь через API и связанные с порталами интерфейсы. В Reco говорят, что на одном из самых загруженных объектов зафиксировали более 560 000 событий с IP атакующего, и почти все они были связаны с перечислением объектов через гостевой доступ в Aura.
На Salesforce злоумышленник в первую очередь работает со старым фреймворком Aura и обращается к /aura или /s/sfsites/aura, чтобы понять, какие объекты доступны публично. Затем используется HostConfigController.getConfigData для перечисления доступных гостевому аккаунту объектов и SelectableListDataProviderController.getItems для получения записей из открытых сущностей, среди которых могут быть Accounts, Contacts и Cases.
При этом City-Forum не ограничивается только Aura. На сайтах Salesforce, построенных на новом фреймворке Lightning Web Runtime, атакующий использует UI API и делает GraphQL-запросы к /webruntime/api/services/data/{version}/graphql, чтобы забрать данные, открытые для гостевых аккаунтов. По словам Reco, публичных инструментов, которые используют именно такой метод, исследователи не видели, а AuraInspector, S-RET и CirrusGo к интерфейсу webruntime не обращаются.
Ещё одна цель в этой кампании — страницы Experience Cloud с /SiteRegister и /CommunitiesSelfReg. Там злоумышленник проверяет, включена ли саморегистрация, потому что она может позволить гостю создать аутентифицированную внешнюю учётную запись с более широким доступом.
В ServiceNow атакующий использует нативный POST-эндпоинт /api/now/sp/search?sysparm_cancelable=true в Service Portals. Reco пишет, что раньше не видела злоупотребления именно этим эндпоинтом в атаках. Он обслуживает поиск в портале, принимает анонимные запросы и может возвращать данные, если источники поиска настроены на доступ для гостей.
Исследователи отмечают, что в ServiceNow можно варьировать поисковые запросы и перечислять открытые сведения. В одной из изученных сред число запросов выросло с десятков до сотен в день. При этом журналы транзакций ServiceNow не сохраняют POST-body, поэтому защитники видят сам факт автоматизированного поиска и объём возвращённых данных, но не могут восстановить точные поисковые слова.
Reco сравнивает City-Forum с более ранними кампаниями ShinyHunters, но не видит признаков, что текущая серия связана именно с этой группой. В прошлых атаках ShinyHunters использовали несколько систем и разные IP-адреса, а инфраструктура City-Forum, по данным исследователей, остаётся на одном и том же адресе с марта 2025 года.
Администраторам Salesforce Reco советует проверить правила гостевого доступа, права на объекты и поля, доступ к файлам, видимость участников и настройки саморегистрации. Для сайтов на LWR компания отдельно рекомендует отключить в Experience Builder возможность давать гостям доступ к публичным API, если она не нужна.
Для ServiceNow рекомендация другая: нужно проверить, какие источники поиска открыты через Service Portals, и убедиться, что чувствительные источники поиска требуют жёсткой аутентификации и контроля доступа. В противном случае сервис может продолжать отдавать данные анонимным запросам так же, как это уже происходит в кампании City-Forum.