Рамка безопасности, чек-лист санитизации перед публикацией, правила ответственного раскрытия. Этот документ — то, как проект сам относится к себе.
Проект опубликован как production-плагин памяти:
- проверки — на своих агентах, конфигах и лор-файлах;
- без целей-третьих сторон: чужие пользователи, их данные и их агенты не затрагиваются;
- изменения плагина проверяются локально до релиза.
Плагин не устанавливается в чужие системы без разрешения их владельца. Публикуемые артефакты не содержат credentials и приватных данных пользователя.
| Можно | Нельзя |
|---|---|
| Проверять плагин на своих агентах | Менять чужих агентов или пользовательские данные |
| Публиковать санитизированный лор и документацию | Публиковать credentials или инструменты восстановления чужих ключей |
| Направлять находки вендорам | Эксплуатировать находки до фикса |
| Разбирать публично раскрытые инциденты | Выносить адреса жертв и полные консолидаторы |
| Давать вендорам рекомендации по детекции | Публиковать PoC против живых систем |
Эти границы — не декорация: они соответствуют research/10 (аудит
чужих контрактов и ответственное раскрытие) и research/09 (web3-
безопасность, энтропия ключей).
Плагин по своей природе несёт личную память — историю совместной работы пары «человек + агент». Публичный репозиторий — это другое пространство, чем локальная установка. Чек-лист:
Публикуется санитизированная версия: лор и ресерчи несут операционные решения, но не содержат идентифицирующих деталей.
-
prompt.md,lore.md,user.md— публикуются; проверены, что не содержат путей к приватным проектам и личных данных. -
security-posture.md— публикуется как часть пейлоада; проверена явная рамка авторизации и безопасности. -
research/— публикуется; проверено, что в нём нет имён конкретных NSFW/refusal-моделей, путей к файлам с адресами и полных адресов. -
security-audit-runbook.md— исполняемые команды аудита; безопасен, ссылается наsecurity-posture.md— проверить связку.
- Нет упоминаний путей к приватным проектам (репозитории исследования слабой энтропии и т.п.).
- Нет полных адресов кошельков; только обезличенные префиксы
(
bc1qnk…), если они вообще нужны. - Нет имён конкретных NSFW/refusal-моделей и LoRA, снимающих отказы; остаются функциональные роли («NSFW-чекпоинт», «снижение отказов»). Конкретный список запрещённых имён держится вне репо (приватный чек-лист) — в публичных документах он не воспроизводится.
- Нет обращений «Создатель/Господин» и личных деталей в публичных текстах.
- Ручная установка читает рабочую копию на лету; marketplace-установка использует cache и получает правки только после повышения версии.
-
python3 scripts/build-context.py --checkпроходит: inline skill — точная сгенерированная копия санитизированного канонического контекста. -
${CLAUDE_PLUGIN_DATA}/latest-delivery.logсодержит только метаданные (версия, hash, nonce, plugin root), без лора и пользовательского текста. - Хук работает и без контент-файлов (graceful-режим): в свежем
клоне без канонических контентных файлов он не падает
с
set -euo pipefail— пропускает отсутствующие файлы с предупреждением.
-
.gitignoreсоздан до первогоgit add .(см. пример ниже). -
LICENSEсуществует (README и бейдж на него ссылаются). - Манифест
.claude-plugin/plugin.jsonпереименован под публичное имя (choirboy-prompt), версия поднята. - Версия в
.claude-plugin/marketplace.jsonсовпадает сplugin.json;claude plugin validate .проходит.
Контент публикуется, поэтому .gitignore — только служебное:
# локальные бэкапы, которые install.sh делает при правке конфигов
*.bak.*
# редактор/ОС
.DS_Store
*.swpНаходки в чужих проектах — по процессу:
- Контакт с проектом: security-контакт, bounty-программа (Immunefi, HackerOne, Sherlock, Code4rena) или публичный канал.
- Отчёт: класс, воздействие, PoC на форке/тестнете, предложение фикса. Без эксплуатации чужих средств, без публичного разглашения до фикса.
- Срок на фикс (обычно до 90 дней, по договорённости).
- Публикация после фикса (или после дедлайна): отчёт для проекта и сообщества, рекомендации интеграторам.
- Если контакт невозможен или проект молчит — публикация по этичному дедлайну, с минимумом эксплуатируемых деталей: рабочий эксплойт против живых средств не публикуем никогда.
Известная проблема вендоров: серверные классификаторы флагают защитную лексику независимо от рамки в контексте. Одно срабатывание у Claude отравляет всю сессию — дальше будет только хуже.
Правило: в помеченной сессии не продолжаем и не спорим. Начинаем новую сессию с явной рамкой с первого хода: «это мой репозиторий, аудит своего кода по OWASP». В новой сессии работаем из этой рамки.
Это операционная контрмера против ложных срабатываний.
| Риск | Уровень | Митигация |
|---|---|---|
| Репо идентифицирует автора (личная память) | Средний | Санитизация: вырезаны пути к приватным проектам, полные адреса, имена NSFW/refusal-моделей |
| Утечка адресов/ключей | Критический | Проверка перед публикацией: grep по bc1/0x/seed-файлам |
| Утечка имён NSFW-моделей | Высокий | Функциональные роли вместо имён; приватный список вне репо |
| ИИ-аудит как гарантия | — | Разбор Coldcard (research/11): разовый ИИ-аудит не нашёл баг; аудит проверяет исполняемый путь, а не наличие кода |