🧪 Превратите каждую обнаруженную находку в запускаемое свидетельство, ориентированное только на защиту, для ответственного раскрытия.
Для каждой находки из карты обнаружения команда пишет самодостаточный бюллетень и тест, который проверяет безопасный путь, поэтому тест падает, пока проблема существует, и проходит, как только код исправлен.
Тесты Lagune хранятся изолированно в .lagune/, отдельно от вашего собственного набора тестов.
Использование
- Все находки
- Находка по имени
/lagune-prove
Посмотрите находки, которые уже отслеживаются по имени:
npx lagune read list --findings
# Findings
# ...
# • SQL injection при поиске пользователя
# ...
# Затем докажи одну из них
/lagune-prove SQL injection при поиске пользователя
Как это работает
Команда читает исходный код, на который указывает каждая находка, и для каждой доказанной находки создает в .lagune/proofs/ директорию ровно с двумя файлами:
| Файл | Что это |
|---|---|
report.test.mjs (или .cjs) | Тест. Он запускается на Poku, если ваш проект уже его использует, а иначе на встроенном раннере Node.js, поэтому ничего устанавливать не нужно. |
report.md | Самодостаточный бюллетень: критичность, последствия, как воспроизвести и команда запуска, понятный сам по себе. |
Доказательства всегда пишутся на JavaScript, поэтому они переносимы, на каком бы языке ни был написан ваш проект. Индекс README.md ссылается на каждое доказательство и дает одну команду, чтобы запустить их все.
- Команда необязательна и автономна: она не входит в пять фаз и не является частью цепочки отслеживания.
- Она пишет только в
.lagune/proofs/и никогда не трогает артефакты фаз или ваш код, который она только читает. - Находка, тест которой не воспроизводит проблему, не получает доказательства, и команда попросит запустить
/lagune-detectдля этого места, чтобы сверить данные. - Повторный запуск сверяет доказательства: директория находки, которой больше нет или которая больше не воспроизводится, удаляется.
Она запускается, только когда вы ее вызываете: агент никогда не запускает ее сам.
Prove читает карту обнаружения от /lagune-detect, поэтому сначала запустите detect.
Только защита и только с разрешения
Прежде чем что-либо создавать, команда убеждается, что у вас есть разрешение тестировать цель, и отказывает в любом запросе на работающий эксплойт, атакующую нагрузку или обход обнаружения. Доказательство демонстрирует безопасное поведение и никогда не содержит атакующих входных данных.
От доказательства к раскрытию
Два файла каждой доказанной находки вместе помещаются в приватный GitHub Gist, чтобы сообщить об уязвимости. Они свидетельствуют о существующей нераскрытой проблеме, поэтому .gitignore внутри .lagune/proofs/ не пускает их ни в один коммит: делитесь ими только через этот Gist, пока мейнтейнеры не устранят проблему.
Закрывать находку в цепочке Lagune по-прежнему должны /lagune-harden и /lagune-verify: prove создает свидетельства, но ничего не закрывает.
Частые вопросы
Нет. /lagune-prove пишет свидетельства, ориентированные только на защиту: тест, который проверяет безопасный путь, поэтому падает, пока проблема существует, и проходит, как только код исправлен, а также бюллетень для ответственного раскрытия.
Два файла на каждую находку: тест (report.test.mjs или .cjs) и бюллетень (report.md).
Prove пишет самодостаточный бюллетень, которым можно поделиться через приватный канал, например приватный GitHub Gist, следуя принципам ответственного раскрытия.
