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

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

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

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

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

Категории

Все категории
Loading categories
mcpguard-dynamic — Песочница eBPF на уровне ядра для защиты вызовов инструментов LLM-агентов, совершаемых через Model Context Protocol (MCP) | Kitploit
Инструменты/GitHubGitHub/facebook/mcpguard-dynamic
Оборонительные ИнструментыБезопасность контейнеровДинамический анализ (песочница)Анализ КодаВиртуализация для безопасностиОбнаружение ВторженийСтатьи и ИсследованияНеправильная КонфигурацияОбучение и ОбразованиеРеагирование на ИнцидентыБезопасность ИИ
6898214 дней назадПроверено Kitploit

Популярное

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

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

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

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

Смотреть все инструменты →
GitHubfacebook/mcpguard-dynamic

mcpguard-dynamic

Песочница eBPF на уровне ядра для защиты вызовов инструментов LLM-агентов, совершаемых через Model Context Protocol (MCP)

Репозиторий
Поделиться

MCPGuard-Dynamic

Песочница на уровне ядра для вызовов инструментов LLM-агентов через Model Context Protocol (MCP).

MCPGuard работает как прозрачный прокси между MCP-клиентом (агентом / раннером) и подпроцессом MCP-сервера, применяя три уровня защиты к каждому вызову инструмента. Нижний уровень реализован на eBPF и обеспечивает соблюдение политик возможностей на границе системных вызовов, поэтому вредоносный MCP-сервер не может обойти политику, жёстко закодировав чувствительное поведение внутри своей реализации.

Этот репозиторий содержит прокси, программы eBPF, бенчмарк из 14 серверов / 82 сценариев и средство оценки, использованное в сопроводительной статье Kernel-Level Sandboxing for LLM Agent Tool Calls via eBPF.

Архитектура

УровеньКомпонентНазначение
L1proxy/policy_engine.pyПолитика возможностей для каждого сервера, выводимая из MCP-схемы каждого инструмента; списки разрешённых путей, сетевых назначений, процессов, переменных окружения.
L2proxy/argument_validator.pyПроверка аргументов вызова инструмента на уровне приложения: канонизация путей, валидация URL, обнаружение prompt-injection, обнаружение утечки переменных окружения / command-injection, сканирование чувствительных ключей, санитизация ответов.
L3ebpf/*.bpf.c + proxy/ebpf_sandbox.pyПринудительное применение на уровне ОС: три программы BPF LSM (file_guard, net_guard, proc_guard) перехватывают open() / connect() / execve(), а одна программа tracepoint (fork_guard) отслеживает дочерние процессы через sched_process_fork, чтобы политика сохранялась при форках.

Шесть переключаемых конфигураций защиты (proxy/proxy_base.py) покрывают пространство абляций, использованное в статье: C0 (passthrough), C-AB (базовый AgentBound), C-app (L1 + L2), C-ebpf (только L3), C-full (L1 + L2 + L3), C-AB+ebpf (AgentBound + L3).

Структура репозитория

.
├── proxy/        L1 policy engine, L2 argument validator, L3 eBPF controller, AgentBound baseline
├── ebpf/         BPF C sources for file/net/proc/fork guards + Makefile + vmlinux.h
├── policies/     Per-server JSON capability policies (defaults + overrides)
├── servers/      14 MCP servers: 11 Python (filesystem, notes, weather, shell, sqlite, git, env + malicious/trojan variants) + 3 JavaScript (servers/js/)
├── test_cases/   82 benchmark scenarios across 7 categories (file_read, exfiltration, env_leak, sandbox_escape, priv_escalation, cross_language, benign)
├── notes_data/   170 valid synthetic notes JSON fixtures used by notes_server
├── runner/       evaluate.py, aggregate.py, agentbound_check.py, ebpf_edge_tests.py, latency_benchmark.py, override_workflow.py, smoke_test.py
└── EXECUTION_PLAN.md   Phase-by-phase reproduction instructions

Требования

  • Ядро Linux 6.x с включённым BPF LSM (CONFIG_BPF_LSM=y, lsm=bpf в командной строке ядра)
  • clang 21 или новее с поддержкой BPF target
  • bpftool для загрузки программ и карт BPF
  • Python 3.12 (только стандартная библиотека — без сторонних зависимостей)
  • Node.js 16+ (только для JavaScript MCP-серверов в servers/js/)

Быстрый старт

# Build the eBPF programs
cd ebpf && make && cd ..

# Smoke test (one server, a handful of cases)
python3 runner/smoke_test.py

# Full benchmark for one configuration
python3 runner/evaluate.py --config C-full --run-id trial

# Aggregate a reproduced run
python3 runner/aggregate.py --run-id trial

# Reproduce the steady-state latency table after installing eBPF
sudo python3 runner/latency_benchmark.py --run-id codex_20260523_latency --iterations 100 --warmup 20

# Reproduce the audit/override workflow
python3 runner/override_workflow.py --run-id codex_20260523_override

# Run focused eBPF edge tests after installing eBPF
sudo python3 runner/ebpf_edge_tests.py --run-id codex_20260523_ebpf_edges

# Run AgentBound-style baseline conformance checks
python3 runner/agentbound_check.py --run-id codex_20260523_agentbound

C-ebpf, C-full и C-AB+ebpf теперь отказывают безопасно (fail closed), если программы BPF LSM и закреплённые карты недоступны. Запускайте их только после установки слоя eBPF с правами root.

Ключевые результаты

Attack Prevention Rate (APR), viable-attack APR (V-APR) и False Positive Rate (FPR) для единственного закреплённого запуска codex_20260523_full (бенчмарк из 14 серверов, 82 сценариев; это профиль fx_r по категориям — в Таблице 1 статьи приводятся средние по N=5, поэтому C-app здесь показывает 13/48 против среднего 12/48):

КонфигурацияAPRV-APRЗаблокировано жизнеспособныхFPR
C021.3%0.0%0/480/21
C-AB37.7%20.8%10/480/21
C-app42.6%27.1%13/480/21
C-ebpf60.7%50.0%24/480/21
C-full68.9%60.4%29/480/21
C-AB+ebpf67.2%58.3%28/480/21

APR включает атаки, которые изначально не проходят при C0. V-APR использует в качестве знаменателя только атаки, которые успешны при C0, что является более консервативной мерой покрытия защиты.

Бенчмарк повторяющейся задержки benign-вызовов хранится во внутреннем рабочем пространстве статьи как results/latency/codex_20260523_latency.md. Он измеряет BN-01 (filesystem_server.read_file) с 20 прогревочными вызовами и 100 измеряемыми вызовами на конфигурацию; C-full добавляет +0.488 мс к медианной задержке относительно C0 и остаётся на уровне 1.141 мс p95 для этого фиксированного benign-вызова. Публичное дерево CodeSync исключает results/, поэтому внешние пользователи воспроизводят этот артефакт с помощью команды выше.

Рабочий процесс аудита/переопределения хранится внутри как results/audit/codex_20260523_override.md. Он демонстрирует, как benign-отказ записывается как структурированное событие аудита и разрешается путём добавления ограниченного операторского переопределения в layout, совместимый с policies/overrides.

Сфокусированные граничные тесты eBPF хранятся внутри как results/ebpf_edges/codex_20260523_ebpf_edges.md. Они охватывают доступность карт в режиме fail-closed, разрешение записи в рабочее пространство, отказ на границе префикса каталога, отказ на стейджинге в /tmp и отказ на эксфильтрации через localhost.

Проверка базовой линии в стиле AgentBound хранится внутри как results/agentbound/codex_20260523_agentbound.md. Она документирует, что C-AB является воспроизведением на уровне приложения для каждого сервера, и подтверждает ожидаемое покрытие, видимое через аргументы, и слепую зону, скрытую в реализации.

Модель угроз

MCP-сервер считается недоверенным. Он может быть benign, но неправильно настроенным, намеренно вредоносным или троянизированным форком легитимного сервера. Агент / раннер и хостовая ОС считаются доверенными. Слой eBPF предполагает, что ядро не скомпрометировано; повышения привилегий внутри ядра (CWE-269 в модулях ядра) вне области рассмотрения.

Цитирование

Запись BibTeX будет добавлена здесь после публикации статьи.

Участие в разработке

См. CONTRIBUTING.md. Все участники должны подписать CLA Meta.

Безопасность

Чтобы сообщить о проблеме безопасности, см. SECURITY.md. Пожалуйста, не создавайте публичные issues на GitHub для отчётов о безопасности.

Лицензия

MIT — см. LICENSE.

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