🧪 Перетворіть кожну виявлену знахідку на виконуваний, суто оборонний доказ для відповідального розкриття.
Для кожної знахідки з карти виявлення вона пише самодостатній бюлетень безпеки й тест, що перевіряє безпечний шлях, тож тест не проходить, поки проблема існує, і проходить, щойно код виправлено.
Тести 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.
Лише захист і лише з дозволу
Перш ніж щось генерувати, вона підтверджує, що ви маєте дозвіл тестувати ціль, і відхиляє будь-який запит на робочий експлойт, payload атаки чи обхід виявлення. Доведення демонструє безпечну поведінку й ніколи не видає вхідних даних для атаки.
Від доведення до розкриття
Два файли кожної доведеної знахідки разом вирушають у приватний GitHub Gist, щоб повідомити про вразливість. Вони є доказом чинної, ще не розкритої проблеми, тож .gitignore усередині .lagune/proofs/ не пускає їх у жоден коміт: діліться ними лише через цей Gist, доки мейнтейнери не розв'яжуть проблему.
Закривати знахідку в ланцюжку Lagune і далі мають /lagune-harden і /lagune-verify: prove створює докази, а не закриває щось.
Часті запитання
Ні. /lagune-prove пише суто оборонні докази: тест, що перевіряє безпечний шлях, тож він не проходить, поки проблема існує, і проходить, щойно код виправлено, а також бюлетень безпеки для відповідального розкриття.
Два файли на кожну знахідку: тест (report.test.mjs або .cjs) і бюлетень безпеки (report.md).
Prove пише самодостатній бюлетень безпеки, яким можна поділитися через приватний канал, як-от приватний GitHub Gist, дотримуючись принципів відповідального розкриття.
