Как утечка конфигов Spring Boot привела к краже данных из SharePoint в обход MFA?

Злоумышленник получил доступ к корпоративному SharePoint без единого вируса, без эксплойта нулевого дня и без взлома в классическом смысле. Только легитимный токен Microsoft Graph, полученный через цепочку из трёх банальных ошибок конфигурации. Именно так выглядят современные корпоративные взломы.
Как утечка конфигов Spring Boot привела к краже данных из SharePoint в обход MFA?
Изображение носит иллюстративный характер

Всё началось с открытого эндпоинта Spring Boot Actuator. Spring Boot — Java-фреймворк для построения веб-приложений и микросервисов, а Actuator — его встроенный модуль, отдающий операционную информацию о приложении. Проблема в том, что эндпоинты /health, /heapdump, /env и /configprops были доступны публично без какой-либо аутентификации, и сервер радостно возвращал HTTP 200. Когда аналитики обратились к /configprops, они нашли блок конфигурации для интеграции с SharePoint. Пароль в ответе был замаскирован звёздочками (), зато стало ясно: учётная запись существует, а сами учётные данные хранятся в файле application.yml.
Следующий кирпич в фундаменте взлома обнаружился в самом неожиданном месте — в обычной таблице. Внутренние секреты приложения лежали в открытом виде в spreadsheet-файле на общем ресурсе. Технически client ID и client secret функционируют как пара логин/пароль: они нужны, чтобы запросить токены у Azure AD. Любой, у кого есть доступ к этому файлу, может представиться приложением. Таблицы легко копируются, обходят централизованное управление секретами и вообще не предполагают никакого аудита доступа.
Третья уязвимость — протокол ROPC (Resource Owner Password Credentials). Это легаси-поток OAuth 2.0, при котором приложение передаёт логин и пароль пользователя напрямую в Azure AD / Entra ID, минуя страницу входа. В ответ провайдер выдаёт access token, дающий доступ к Microsoft Graph, SharePoint Online и OneDrive. Главная опасность ROPC в том, что он полностью обходит MFA: никакого второго фактора, никаких push-уведомлений, ничего. Весь процесс происходит через API-запросы, и пользователь даже не догадывается, что от его имени кто-то входит в систему.
Атака разворачивалась в несколько попыток. Первые две провалились: в одной не хватало client_assertion, в другой — корректного client secret. Первая была направлена против приложения Dynamics 365 Finance and Operations Service – Dev, вторая — против внутреннего тестового приложения Azure AD с маской [REDACTED]-2024. Временны́е метки обоих запросов практически совпадали, что указывало на работу автоматизированного скрипта. Третья попытка оказалась успешной: атакующий скомбинировал plaintext client secret приложения [REDACTED]-2024 из таблицы с паролем сервисного аккаунта SharePoint, идентифицированного через application.yml. Azure AD принял учётные данные как валидные и выдал токен Microsoft Graph.
С этим токеном злоумышленник вошёл в SharePoint, перебрал библиотеки документов и скачал файлы. В логах зафиксированы обращения к сайтам SharePoint, перечисление document library и сам факт загрузки. При этом на машине жертвы не было установлено ни одной вредоносной программы, не использовался ни один эксплойт. Только легитимный аутентифицированный доступ через штатные инструменты Microsoft.
Исправить всё это не особо сложно, если понимать, где именно находятся дыры. Эндпоинты /env и /configprops не должны быть публично доступны в продакшене ни при каких обстоятельствах — их закрывают через IP-allowlist, реверс-прокси и обязательную аутентификацию. Секреты приложений нельзя хранить в таблицах, общих папках, документации и конфиг-файлах без шифрования: всё найденное нужно немедленно ротировать, а хранилища заменить на специализированные системы управления секретами. ROPC-аутентификацию следует отключить полностью, если нет жёсткой технической необходимости её сохранять.
На уровне идентичности ситуацию исправляет внедрение Conditional Access политик и принципа минимальных привилегий. ROPC опасен именно тем, что существует вне современных механизмов защиты: он создавался для совместимости с легаси-системами, которые не умеют работать с браузерным редиректом. Там, где такой совместимости нет, этот поток просто не нужен.
Для системного управления подобными рисками предназначен TrendAI Vision One™ Cyber Risk Exposure Management (CREM). Продукт непрерывно картирует состояние идентичности, оценивает поверхность атаки и коррелирует отдельные экспозиции в полные цепочки атак — вместо того чтобы рассматривать каждый риск изолированно. CREM детектирует конкретные сигналы: открытые метаданные приложений в интернете, использование легаси-потоков OAuth 2.0 включая ROPC, отсутствие MFA или Conditional Access, применение долгоживущих статических client secret, а также цепочки, связывающие открытые сервисы с чувствительными облачными данными вроде SharePoint Online.
Реальный урок этого инцидента не в том, что Spring Boot небезопасен или что Microsoft Graph слишком открыт. Три банальные вещи создали цепочку: публичный Actuator без аутентификации, секрет в таблице и включённый ROPC. Каждая из них по отдельности — проблема средней серьёзности. Вместе они дали атакующему всё необходимое для тихой кражи данных из SharePoint Online через Entra ID без единого подозрительного файла на хосте.


Новое на сайте

20984Уязвимость SonicOS может обходить SAML-аутентификацию и MFA 20983Как злоумышленники использовали доступ Qubole к AWS для кражи данных? 20982ИИ-агенты вскрыли данные экстренных служб Тайваня 20981Почему LNbits попросила операторов отключить серверы? 20980Холодильники под атакой: киберсбой может испортить продукты и кровь 20979Как пароль admin:admin открыл доступ к автомобилям? 20978PapRAT: три пути проникновения в сети южной Азии 20977Кража или спасение: что произошло с кошельками Keplr? 20976Что известно о деле бывшего инженера OpenAI Альфозана? 20975Критические уязвимости Langflow открывают путь к серверу 20974Почему уязвимость WordPress CVE-2026-119977 уже требует срочного обновления? 20973Как cwpdoor выполняет команды на серверах CWP, не оставляя записей в логах? 20972Как DNS-подмена превратила Sogou в канал для шпионажа? 20971Уязвимость в Paint исправили — почему Windows Update не поможет? 20970Как понять, защищён ли Android от ноябрьских уязвимостей?
Ссылка