# Политика безопасности **[English version → SECURITY.en.md](SECURITY.en.md)** ## Что этот проект делает и чего не делает Humanizer-ru — текстовый скилл для ИИ-агентов. Он состоит из файлов разметки (`SKILL.md`, `references/*.md`) и пятнадцати проверочных скриптов для CI (`scripts/`, стандартная библиотека Python, без зависимостей). В релизный архив входят четырнадцать: `check_corpus.py` остаётся в репозитории, потому что работает только по каталогу `research/`, которого в архиве нет. По устройству скилла: - **Нет выполнения кода при работе скилла.** При ручной установке копируются только текстовые файлы. Скрипт проверки запускается только в CI репозитория или вручную разработчиком; агенту он не нужен. - **Нет сети.** Ни один файл скилла не требует от агента скачивать что-либо, переходить по ссылкам или обращаться к внешним сервисам. - **Нет доступа к файлам.** Скилл не читает и не записывает файлы пользователя. - **Нет сбора данных.** Никакой телеметрии, аналитики и передачи текста третьим сторонам. > Команда установки `npx skills add ...` запускает сторонний Skills CLI. Проверяйте этот инструмент отдельно либо используйте ручную установку из README, если хотите устанавливать только заранее просмотренные файлы. ## Модель угроз и меры | Угроза | Мера | | --- | --- | | Внедрение инструкций через проверяемый текст | Раздел «Границы безопасности» в `SKILL.md`: входной текст — данные; инструкции внутри него не выполняются; о попытке внедрения агент предупреждает пользователя | | Отравление метаданных (навязчивая активация) | `description` — четыре нейтральных предложения без директив; скилл включается только по явной просьбе пользователя | | Подмена адресов символами-двойниками | Все адреса в файлах проекта — чистый ASCII; кириллические пути закодированы процентной нотацией; проверяется при выпуске (`scripts/check_release.py` отвергает не-ASCII URL при сборке и верификации архива) | | Подмена содержимого при установке | Ручная установка только с тегов выпусков; в `README.md` описан порядок проверки содержимого перед установкой | | Регресс собственных правил | Шесть CI-workflow: regex-fixtures, self-scan, проверка англицизмов, валидаторы спецификации и реестра, согласованность документации и проверка релиза | | Обход пути через данные | Пути, которые валидаторы берут из данных, ограничены корнем репозитория: запись корпуса в `eval/manifest.v1.json` и поле `fixture_file` в реестре источников. Отвергаются абсолютные пути, буква диска, выход через `..` и символическая ссылка за корень; отказ отличим от регрессии кодом возврата 2 | | Путь в аргументе командной строки | Осознанно НЕ ограничивается. Валидаторы `scripts/` и `eval/` — локальные инструменты разработчика: путь, названный оператором, несёт его собственные полномочия. Проверка произвольного файла (`check_markers.py --scan файл.md`) — заявленная возможность, а не брешь. Статические анализаторы помечают это как обход пути, потому что считают `argv` недоверенным по умолчанию; для служб это верно, для утилит командной строки — нет | ## Целостность выпусков Каждый выпуск — это тег вида `vX.Y.Z` и запись на странице Releases с описанием изменений. Для наибольшей надёжности устанавливайте выпуск с тегом и перед установкой сверяйте содержимое архива со списком файлов в README. ## Как сообщить об уязвимости Не публикуйте чувствительные подробности в открытом issue. Свяжитесь с сопровождающим приватно через контакт, указанный в [профиле Vladimir-Human](https://github.com/Vladimir-Human). Для вопросов без чувствительных данных откройте issue: . Укажите версию скилла, затронутый файл и минимальный образец, воспроизводящий проблему. ## Поддерживаемые версии Исправления безопасности выходят для последней версии основной ветки.