Skip to content

Security: ArtVsMark/Stepik-Python-Grader

Security

SECURITY.md

Политика безопасности

Спасибо, что помогаете держать Stepik-Python-Grader безопасным. Документ короткий и ссылочный — детали threat model живут в docs/configuration.md § Ограничения и безопасность.

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

Поддерживается только последний релиз (актуальный MINOR). Жёсткого номера версии здесь нет намеренно: версия динамическая, из git-тегов (setuptools-scm) — см. CONTRIBUTING.md § Версионирование. Обновитесь до последнего релиза перед тем, как сообщать об уязвимости.

Как сообщить об уязвимости

Основной канал — GitHub Private Vulnerability Reporting (вкладка Security → Report a vulnerability в репозитории). Резервный канал — личное сообщение мейнтейнеру @ArtVsMark. Не открывайте публичный issue для уязвимостей.

In English: please report security issues via GitHub Private Vulnerability Reporting (Security → Report a vulnerability), or contact @ArtVsMark directly — do not open a public issue.

Область (scope)

В скоупе — уязвимости, дающие реальный риск в локальном использовании:

  • Веб-оболочка (web.py, --serve): XSS в рендере stdout/stderr решения, выход за пределы localhost, path traversal при указании путей.
  • Секреты: утечка secrets.json / OAuth-токенов (в логи, отчёты, кэш).
  • Downloader: обработка недоверенного ZIP-архива с тестами, распаковка вне целевой папки (zip-slip), парсинг ответов Stepik.
  • Утечка токена в артефакты (отчёты, .grader_cache, вывод).

Вне скоупа (non-goals)

Исполнение локального недоверенного кода без OS-sandbox — это by design, а не уязвимость сама по себе. У грейдера нет изоляции ФС/сети (есть только таймаут и best-effort лимит памяти на POSIX); он предназначен для запуска доверенных решений (своих или скачанных из Stepik as-is). Сообщения вида «решение может выполнить произвольный код» не считаются уязвимостью — это документированное ограничение (см. ниже).

Предупреждение о локальном исполнении

Запускайте только доверенный код. Полная threat model, настройки таймаута и лимитов памяти — docs/configuration.md § Ограничения и безопасность.

Обращение с секретами

  • secrets.json и stepik_config.json не коммитятся.gitignore); используйте secrets.json.example как шаблон.
  • Не вставляйте реальные токены в issue, PR, отчёты или логи.
  • Настройка OAuth — docs/installation.md § Работа с API Stepik (OAuth).

Server / IDE-режим (на будущее)

Текущий --serve слушает только 127.0.0.1. Любой переход к серверному исполнению (общий доступ, удалённый прогон решений) меняет threat model и потребует настоящего проектирования sandbox — до этого недоверенный код в серверном режиме запускать нельзя. Дизайн будущего server mode (Runner-слой, API удалённого исполнения, обязательные требования sandbox — сеть off, эфемерные tmp-каталоги, квоты) и решение по нему — docs/server-mode.md и ADR-0001.

There aren't any published security advisories