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

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

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

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

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

Категории

Все категории
Loading categories
sandboxed-untrusted-code-execution-runner — Выполняет недоверенный код Python, JavaScript и Bash в усиленной изолированной среде с ограничениями в 5 секунд, 128 МБ, 0,5 ядра, а также лимитами на PID и объём вывода. | Kitploit
Инструменты/GitLabGitLab/kavryxdev-group/sandboxed-untrusted-code-execution-runner
Оборонительные ИнструментыБезопасность контейнеровДинамический анализ (песочница)Скриптинг и автоматизацияАудит конфигурацииВиртуализация для безопасностиБезопасность APIАнализ Журналов

Популярное

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

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

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

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

Смотреть все инструменты →
GitLabkavryxdev-group/sandboxed-untrusted-code-execution-runner

sandboxed-untrusted-code-execution-runner

Выполняет недоверенный код Python, JavaScript и Bash в усиленной изолированной среде с ограничениями в 5 секунд, 128 МБ, 0,5 ядра, а также лимитами на PID и объём вывода.

Репозиторий
41 день назадЕщё не проверено
Поделиться

🛡️ Sandboxed Untrusted Code Execution Runner

Выполнение недоверенного кода под принудительным контролем ядра — каждая полезная нагрузка изолирована cgroups v2, пространствами имён, seccomp-BPF и корневой ФС только для чтения, а каждый запуск фиксируется в аудите PostgreSQL.

Go Linux PostgreSQL Redis Docker Status

python · javascript · bash → изоляция на 5 секунд, 128 МБ, 0.5 ядра, 32 PID, 512 КБ вывода


Обзор

Служба выполнения кода с усиленной безопасностью для кода, которому вы не доверяете. Клиенты отправляют исходный код через небольшой REST API; демон запускает каждую полезную нагрузку в эфемерной изоляции на уровне ядра, где само ядро Linux — а не логика приложения — гарантирует сдерживание:

  • процесс не может вырваться за пределы файловой системы (pivot_root на корневую ФС только для чтения),
  • он не может общаться с сетью или хостом (приватные пространства имён + lo отключён + seccomp блокирует socket),
  • он не может исчерпать ресурсы машины (потолки памяти/CPU/PID в cgroups v2),
  • он не может пережить свой бюджет времени (сторожевой таймер 5 с по настенным часам), и
  • каждый результат — включая нарушения — попадает в неизменяемый журнал аудита.

Ключевые возможности

  • 🧱 Эшелонированная защита — шесть пространств имён Linux (PID · MOUNT · NET · IPC · UTS · USER), строгий белый список seccomp-BPF, ресурсные ограничения cgroups v2 и файловая система pivot_root только для чтения с 16 МБ временного пространства tmpfs.
  • ⚡ Запуск менее чем за секунду — пул из 16 прогретых слотов выполнения с таймаутом получения 3 секунды позволяет избежать затрат на холодный старт для каждого запроса, ограничивая при этом параллелизм.
  • ⏱️ Детерминированные лимиты — жёсткий таймаут 5 с по настенным часам, потолок памяти 128 МБ (swap отключён, мгновенное уничтожение по OOM), 0.5 ядра CPU, pids.max = 32 для защиты от fork-бомб и ограничение вывода 512 КБ для stdout/stderr.
  • 📜 Полный аудит выполнения — код выхода, время выполнения, пиковая память, время CPU, флаги усечения и события безопасности асинхронно записываются в PostgreSQL (execution_runs).
  • 🧪 Тестовый набор уровня атак — выделенные интеграционные тесты для fork-бомб, сетевого выхода, OOM по памяти, сторожевого таймера и стресс-теста параллелизма, запускаемые внутри привилегированного контейнера против реального ядра.

Архитектура системы

flowchart LR
    CLI["👤 API Client<br/><i>tenant / CI job</i>"]

    subgraph CP["🔐 Trusted Control Plane — Go daemon"]
        API["Ingestion Daemon<br/><i>net/http :8080</i>"]
        POOL["Warm Runner Pool<br/><i>16 slots · 3 s cap</i>"]
        RUN["Process Runner<br/><i>watchdog + pipes</i>"]
        ISO["Kernel Isolation<br/><i>cgroups v2 · namespaces · seccomp-BPF</i>"]
    end

    subgraph JAIL["⛓️ Ephemeral Kernel Jail — untrusted"]
        INIT["sandbox_init<br/><i>exec trampoline</i>"]
        GUEST["💀 Untrusted Code<br/><i>python · node · bash</i>"]
    end

    PG[("🗄️ PostgreSQL 16<br/><i>execution_runs</i>")]
    RD[("📮 Redis 7 Queue<br/><i>sandbox:jobs</i>")]

    CLI -->|"POST /api/v1/execute"| API
    API -->|"validate + acquire"| POOL
    POOL -->|"spawn + limits"| RUN
    RUN -.->|"apply jail"| ISO
    ISO ==>|"seccomp · pivot_root"| GUEST
    RUN -->|"fork / exec"| INIT
    INIT -->|"syscall.Exec"| GUEST
    RUN -.->|"stdout / stderr ≤ 512 KB"| POOL
    API -.->|"async audit INSERT"| PG
    RD -.->|"BRPop drain · worker module"| POOL

    style JAIL fill:#2a1215,stroke:#f87171,stroke-width:2px
    style CP fill:#0d1b2a,stroke:#38bdf8,stroke-width:1px

Разбор компонентов

КомпонентОтветственностьИсходный код
Демон приёмаREST-интерфейс: POST /api/v1/execute + /health; валидация запросов; асинхронная отправка аудитаcmd/server/main.go
Пул прогретых раннеровСлоты выполнения, ограниченные семафором (16), с таймаутом захвата 3 с → обратное давление при исчерпании в стиле 503internal/runner/pool.go
Раннер процессовФормирует команду языка, подключает cgroup, передаёт потоки через усекающие писатели, обеспечивает 5-секундный сторожевой таймер, собирает метрики cgroup, классифицирует результатыinternal/runner/process.go
Изоляция ядраОграничитель cgroups v2 (memory.max, cpu.max, pids.max), флаги пространств имён (CLONE_NEWPID/NET/NS/IPC/UTS/USER), компилятор фильтра seccomp-BPFinternal/isolation/
sandbox_initДочерний трамплин: pivot_root только для чтения + tmpfs /dev//tmp, отключение сети (lo down), применение seccomp, затем syscall.Exec целевой программыcmd/sandbox_init/main.go
Недоверенный кодГостевая полезная нагрузка. Устройства хоста удалены, /proc скрыт (hidepid=2), все системные вызовы вне белого списка блокируютсяобразы rootfs в runtimes/
PostgreSQL 16Долговечный журнал аудита каждого запуска, включая нарушения безопасностиmigrations/001_init_sandbox_schema.sql
Redis 7Очередь sandbox:jobs + воркер BRPop, вычерпывающий задания в пул (модуль реализован, но ещё не подключён к демону — см. Известные ограничения)internal/queue/redis_consumer.go

Границы доверия

ГраницаЧто разделяетМеханизм обеспечения
Клиент ↔ ДемонНеаутентифицированная отправка полезной нагрузки от плоскости управлениявалидация схемы (tenant_id, language, code)
Плоскость управления ↔ Изолированная средаДоверенный код на Go против враждебной полезной нагрузкиfork в приватные пространства имён; pivot_root; наследование seccomp при exec
Изолированная среда ↔ Ограничения ядраПотребление ресурсов гостем против ёмкости хостаcgroups v2 memory.max=128MB, swap.max=0, cpu.max="50000 100000", pids.max=32
Изолированная среда ↔ СетьЛюбой исходящий трафик или доступность со стороны хостаприватное пространство имён NET, lo down, системный вызов socket блокируется

🔍 Интерактивная версия этой диаграммы с поддержкой тем (с экспортом в PNG/SVG) создана на основе кандидатов, подкреплённых доказательствами, в docs/archify/.


Жизненный цикл выполнения — от запроса до аудита

sequenceDiagram
    autonumber
    participant C as Client
    participant A as REST API
    participant P as Warm Pool
    participant R as Process Runner
    participant I as sandbox_init
    participant G as Untrusted Code
    participant DB as PostgreSQL
Скачать инструмент