Не открывайте публичный issue. Воспользуйтесь приватным каналом GitHub: вкладка Security → Report a vulnerability в этом репозитории.
Опишите, что происходит, как это воспроизвести и чем это грозит. Ответ постараюсь дать в течение недели.
izba скачивает исполняемый код из сети и запускает его. Уязвимостью здесь считается любая возможность:
- заставить izba скачать файл с хоста вне списка разрешённых;
- обойти сверку контрольной суммы или подсунуть файл с неверной суммой;
- записать файл за пределы каталога проекта при распаковке архива;
- добиться выполнения произвольного кода через конфиг, аргументы командной строки или ответ API;
- незаметно ослабить настройки безопасности сервера — в первую очередь
online-mode, RCON и query.
- Вредоносный плагин или мод. Плагин — это произвольный код с правами процесса сервера, песочницы в Minecraft нет. izba показывает, что устанавливает, и проверяет контрольные суммы, но не анализирует содержимое.
- Осознанно отключённая защита.
server.online_mode = false, включённый RCON, запуск с-force— это выбор пользователя, о рисках которого izba предупреждает. - Уязвимости в самом Minecraft, Paper или JVM. Сообщайте о них соответствующим проектам. Здесь уместен запрос на предупреждение о затронутых версиях, как это сделано для Log4Shell.
Стоит понимать, откуда в системе берётся код и данные:
| Источник | Уровень доверия |
|---|---|
| Mojang, PaperMC, Adoptium | доверенные, но ответы проверяются по хешу |
| Архивы из сети | недоверенные данные: пути, ссылки и размеры проверяются при распаковке |
| Плагины и моды | недоверенный код, исполняется с правами сервера |
izba.toml |
доверенный, но валидируется (опасные флаги JVM отвергаются) |
- Единственная точка выхода в сеть — пакет
internal/netx, толькоhttpsи только хосты из зашитого списка. Каждый редирект проверяется отдельно. - Загрузка без контрольной суммы невозможна: такой вызов возвращает ошибку. Файл с несовпавшей суммой удаляется, не оставаясь даже временным.
- При распаковке отвергаются
.., абсолютные пути, зарезервированные имена Windows, символические и жёсткие ссылки; действуют лимиты на число файлов и распакованный объём. - Запуск от root блокируется, порты ниже 1024 запрещены на уровне конфига.
- Флаги удалённой отладки JVM (
-agentlib:jdwp,-Dcom.sun.management.jmxremote) отвергаются валидацией; переменныеJAVA_TOOL_OPTIONSи_JAVA_OPTIONSвычищаются из окружения сервера. online-mode=false, появившийся вserver.propertiesмимо конфига, останавливает запуск: это расценивается как регрессия безопасности.
Каждый релиз собирается в GitHub Actions и снабжается подтверждением происхождения. Проверить, что бинарник собран именно из этого репозитория:
gh attestation verify izba-linux-amd64 --repo <владелец>/izba
Контрольные суммы всех файлов релиза лежат в SHA256SUMS.
Проект находится в ранней стадии. Исправления выпускаются только для последнего релиза.