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

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

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

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

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

Категории

Все категории
Loading categories
cve-2026-77521-lab — Безопасное самодостаточное воспроизведение CVE-2026-77521 (выполнение команд через внедрение промпта в MaxKB) | Kitploit
Инструменты/GitHubGitHub/inertfluid/cve-2026-77521-lab
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийОбучение и ОбразованиеБезопасность ИИЛаборатории и Практика
GitHubinertfluid/cve-2026-77521-lab

cve-2026-77521-lab

Безопасное самодостаточное воспроизведение CVE-2026-77521 (выполнение команд через внедрение промпта в MaxKB)

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

Популярное

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

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

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

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

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

CVE-2026-77521 — лабораторная работа: агент MaxKB с внедрением промпта → выполнение команд

Автономная, безопасная лабораторная работа, воспроизводящая GHSA-f36j-f34j-h3rx / CVE-2026-77521: в MaxKB (открытая корпоративная платформа ИИ-ассистента / RAG) любой ассистент с инструментом, MCP-инструментом, навыком или подприложением получает автоматически внедряемый shell-инструмент execute, который не защищён шлюзом одобрения человеком — поэтому внедрение промпта (из чата или из загруженного документа) достигает оболочки. Песочница должна была это сдерживать, но строка с shell=True позволила метасимволам вырваться из неё.

РекомендацияGHSA-f36j-f34j-h3rx
CVECVE-2026-77521
Проект1Panel-dev/MaxKB
Затронуто< 2.10.5-lts
Исправлено2.10.5-lts (коммит 594f50f) — частично, см. ниже
CVSS10.0 CRITICAL (AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H)
СлабостьCWE-78 (внедрение команд ОС) · CWE-250 (избыточные привилегии) · CWE-749 (открытый опасный метод)

⚠️ Этичное использование

Это воспроизводит исправленную, публично раскрытую уязвимость в образовательных и защитных целях. Всё выполняется полностью локально и безвредно:

  • Детерминированные PoC запускают только безвредные команды (id, запись файла-маркера, который PoC затем удаляет). Настоящие gosu/песочница/root не задействованы — обёртка сброса привилегий заменена инертным маркером env, чтобы демонстрация работала где угодно.
  • PoC 3 вызывает реальную модель, но только наблюдает за испускаемым ею вызовом инструмента; он его не выполняет. Внедряемая команда безвредна. Направляйте это только на инфраструктуру, которой владеете вы.

Ошибка в одном абзаце

Ассистент MaxKB с любой подключённой возможностью строится на deepagents с SandboxShellBackend. deepagents автоматически внедряет shell-инструмент execute (плюс read_file/write_file/…), а MaxKB не использует excluded_tools, поэтому execute присутствует всегда. Конфигурация interrupt_on — которая определяет, что требует одобрения человеком — имеет вид {"write_file": False, "read_file": False, "edit_file": False}: execute в ней отсутствует, поэтому он выполняется без одобрения. Любой текст, способный управлять моделью (сообщение в чате или отравленный документ, поглощаемый конвейером RAG), может тем самым заставить агента выполнять команды оболочки. При установке из исходников SANDBOX по умолчанию отключён, поэтому команды выполняются от имени пользователя приложения; в официальном (root) контейнере обёртка песочницы была строкой с shell=True, поэтому ;/>/$() выполнялись вне gosu, от имени root.

Что это доказывает

  1. Отсутствие шлюза с участием человека (ядро CVSS-10). С реальным interrupt_on в MaxKB внедрённый вызов execute выполняется без одобрения; добавление "execute": True закрывает его шлюзом. → poc/01_missing_hitl_gate.py
  2. Побег из песочницы через метасимволы оболочки. ;+перенаправление вырывается из префикса gosu в виде единой строки; повторное экранирование в _build_sandbox_command() из 2.10.5-lts нейтрализует это. → poc/02_sandbox_escape.py
  3. Реальная модель это делает. Получив только отравленный загруженный документ, реальная модель вызывает execute с командой атакующего (и не делает этого на чистом документе). → poc/03_real_llm.py

Исправление закрывает лишь половину дыры

Выпущенный патч 2.10.5-lts (коммит 594f50f) укрепляет только побег из песочницы — он добавляет _build_sandbox_command(), который разбивает по операторам оболочки, заново экранирует каждый токен с помощью shlex.quote и оборачивает каждую простую команду в префикс gosu. При проверке по исходному коду v2.10.5-lts, ядро агентства не изменено: interrupt_on по-прежнему не включает execute, бэкенд по-прежнему SandboxShellBackend, а SANDBOX по-прежнему по умолчанию равен 0. Таким образом, после исправления внедрённый через промпт execute всё ещё выполняется без одобрения человека — внутренняя стена была усилена, а ворота остались открытыми. PoC 1 демонстрирует рекомендуемое смягчение (шлюз для execute), которое поставщик не выпустил.

Запуск

Без зависимостей для PoC 1/2 (Python 3.9+):

./run.sh                               # all three (PoC 3 skips without an endpoint)
python3 poc/01_missing_hitl_gate.py    # missing approval gate
python3 poc/02_sandbox_escape.py       # metacharacter sandbox escape

Показываете это? DEMO.md — это сценарий демонстрации, а demo.sh проводит по нему нажатием одной клавиши за раз.

Опционально: PoC 3 против реальной LLM

Любая конечная точка, совместимая с OpenAI (self-hosted или размещённая open-model). Пример (Groq):

export OPENAI_BASE_URL=https://api.groq.com/openai/v1
export OPENAI_API_KEY=$GROQ_API_KEY     # read from env only; never logged
MODEL="openai/gpt-oss-20b" python3 poc/03_real_llm.py

За прокси-сервером с TLS-инспекцией он повторяет попытку без проверки с предупреждением (INSECURE_SSL=1 для принудительного включения). Он чисто пропускается, если endpoint не задан.

Файлы

ПутьЧто это
sandbox_shell.pyБезопасная модель построения команды execute() в MaxKB — уязвимая строка против исправленной _build_sandbox_command()
agent_sim.pyМинимальная модель шлюза человеческого одобрения interrupt_on в deepagents
payloads/poisoned-document.mdОтравленный злоумышленником документ базы знаний (косвенная инъекция)
poc/01_missing_hitl_gate.pyВнедрённый execute выполняется без одобрения; шлюз блокирует его
poc/02_sandbox_escape.pyМетасимволы выходят за пределы префикса gosu; парсер 2.10.5 содержит их
poc/03_real_llm.pyРеальная модель вызывает execute из отравленного документа (чистый против отравленного)
DEMO.md / demo.shСценарий для докладчика и размеренный драйвер демонстрации
assets/attack-flow.{svg,png}Диаграмма потока атаки (обложка блога)
assets/poc3-groq-sample.txtЗаписанный вывод PoC 3 (резервный вариант для демонстрации)
Скачать инструмент