Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
prometheus-bearer-redirect — Prometheus v3.15.0 — High — Remote — Утечка учётных данных — remote_write google_iam/azuread передаёт Bearer при кросс-хостовых 3xx | Kitploit
Инструменты/GitHubGitHub/abraxas/prometheus-bearer-redirect
Анализ уязвимостейЭксплуатацияВиртуализация для безопасностиВеб-безопасностьЛаборатории и Практика
GitHubabraxas/prometheus-bearer-redirect

prometheus-bearer-redirect

Prometheus v3.15.0 — High — Remote — Утечка учётных данных — remote_write google_iam/azuread передаёт Bearer при кросс-хостовых 3xx

Репозиторий
239 дней назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Abraxas Labs - prometheus-bearer-redirect

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  prometheus-bearer-redirect

Разбор: https://abraxaslabs.tech/research/prometheus-bearer-redirect

prometheus-bearer-redirect

Класс: Утечка учётных данных Доступ: Удалённый

Prometheus v3.15.0 (5241a27) - CNCF / Prometheus

prometheus/common v0.71.0 уже удаляет учётные данные scrape / HTTPClientConfig при кросс-хостовых редиректах (isCrossHostRedirect, #901). NewWriteClient сначала создаёт этот клиент, а затем оборачивает azuread.NewAzureADRoundTripper или googleiam.NewRoundTripper поверх механизма удаления. follow_redirects по-прежнему по умолчанию имеет значение true.

Если настроенный URL remote_write отвечает 301/302/307 на другой хост, Prometheus отправляет Authorization: Bearer вместе с токеном monitoring.write Azure AD или GCP на этот хост. Go уже удалил скопированный заголовок. Эти RoundTripper'ы устанавливают его снова.

Не CVE-2026-42151 (дамп client_secret на /-/config). В prometheus.yml по умолчанию нет remote_write. Это срабатывает только при наличии azuread: или google_iam:.

IDCVE пока нет
КлассУтечка учётных данных (Bearer remote_write при кросс-хостовом 3xx)
ДоступУдалённый (исходящий от Prometheus к цели 3xx)
CWECWE-201
CVSSВысокий: 8.6 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:N
ПродуктPrometheus
Затронутоv3.15.0 (5241a27fe3c6983549fccc32f6e65917408c63cd), образ prom/prometheus:v3.15.0
Аутентификацияremote_write, управляемый конфигурацией, с azuread: или google_iam:
ЛицензияGNU Affero GPL v3.0
Лабораториятолько 127.0.0.1

Что может сделать злоумышленник

У оператора настроен remote_write с azuread: или google_iam:. URL RW или хост, на который он перенаправляет через 3xx, контролируется злоумышленником.

ПривилегияМетод / приёмникДоказано в лаборатории или выведено
Прочитать действующий GCP monitoring.write Bearer при кросс-хостовом 3xxPOST remote_write google_iam, 307 на другой хостДоказано в лаборатории. Oracle POST /write получил Authorization: Bearer lab-gcp-PROMETHEUS-BEARER-REDIRECT-WITNESS
Та же утечка для azureadazureADRoundTripper.RoundTrip всегда выполняет Header.Set("Authorization", "Bearer "+token) без isCrossHostRedirectВыведено из исходного кода закреплённой версии. Тот же сайт обёртки в NewWriteClient. В лаборатории использовался google_iam, поэтому Azure не вызывался
Повторно использовать этот токен против Azure Monitor / GCP Monitoring от имени той же учётной записиТокен является реальными облачными учётными данными, когда эти блоки аутентификации настроеныВыведено. В лаборатории был сгенерирован фиктивный токен; Azure или GCP не вызывались
Scrape / oauth2 / basic / bearer на той же закреплённой версииRoundTripper'ы HTTPClientConfig из common v0.71.0Доказано в лаборатории как закрытое. GET scrape oauth2 проследовал за 302 к тому же oracle без Authorization
OSS по умолчаниюremote_write пустЗакрыто
remote_write.headers, задающий AuthorizationотклоняетсяЗакрыто
/-/config, выводящий client_secretCVE-2026-42151; поле имеет тип Secret в этой закреплённой версииЗакрыто
Администрирование / жизненный цикл Prometheusфлаги по умолчанию выключеныЗакрыто
RCE / получение оболочкине этот остаточный дефектЗакрыто

Как я это нашёл

Я закрепил тег v3.15.0 репозитория prometheus/prometheus после волны исправлений по скрытию секретов и ограничению snappy в 3.11/3.12. Девятнадцать поисков. OSS по умолчанию: admin API, lifecycle HTTP, remote-write receiver и OTLP receiver выключены. Common #901 присутствует в v0.71.0. Остаточный дефект — это две обёртки remote_write, которые находятся вне этого клиента.

func (rt *azureADRoundTripper) RoundTrip(req *http.Request) (*http.Response, error) {
	accessToken, err := rt.tokenProvider.getAccessToken(req.Context())
	// ...
	req.Header.Set("Authorization", bearerAccessToken)
	return rt.next.RoundTrip(req)
}

googleiam.NewRoundTripper — это google.golang.org/api/transport/http -> oauth2.Transport, который вызывает SetAuthHeader на каждом переходе.

Уже зафиксированные ошибки: повторная подача CVE-2026-42151; трактовка scrape oauth2 как всё ещё уязвимого для утечки (это не так); называние этого уязвимостью уровня High при установке по умолчанию (это не так — remote_write пуст, пока вы его не включите). Театральщина: обратная оболочка. Оракул — Bearer в перенаправленном POST.

Лаборатория

python3 prometheus-bearer-redirect-Abraxas-Labs.py

или

cd lab
./run.sh

Только loopback: Prometheus http://127.0.0.1:19380, oracle http://127.0.0.1:19381. Образ prom/prometheus:v3.15.0. run.sh записывает лабораторный gcp-sa.json с token_uri: http://hop:8080/token, чтобы google_iam никогда не обращался к Google.

SUCCESS prometheus-bearer-redirect how=live rw-method=POST rw-bearer=yes token-has-witness=yes scrape-method=GET scrape-bearer=no PROMETHEUS-BEARER-REDIRECT-WITNESS

Исправление

Пропускать прикрепление Azure AD / Google IAM Bearer, когда isCrossHostRedirect(req), так же, как в common #901. Не устанавливать повторно Authorization после того, как Go удалил его при кросс-хостовом 3xx.

Ссылки

  • github.com/prometheus/prometheus тег v3.15.0 (5241a27fe3c6983549fccc32f6e65917408c63cd)
  • storage/remote/client.go · storage/remote/azuread/azuread.go · storage/remote/googleiam/googleiam.go
  • prometheus/common #901
  • Рядом исправлено (не в этом обёртке): CVE-2026-42151
  • CWE-201

Лицензия

GNU Affero GPL v3.0. См. LICENSE. Только для лабораторной среды с loopback. Без гарантий.

Скачать инструмент