Lagune группирует свои встроенные специализации по категориям, всего их 13. Категории, которые использует проект, определяют, какие встроенные специализации попадут в его каталог, и делятся на две группы: что делает система и на чем она написана.
Пока не зафиксировано ни одной категории, проект использует только owasp. /lagune-charter фиксирует каждую категорию, которую подтверждает анализ проекта, а вы можете менять их сами в любой момент.
Что делает система
| Категория | Ключ | Что она защищает |
|---|---|---|
| OWASP | owasp | Риски безопасности приложений, которые отслеживает OWASP: инъекции, нарушение контроля доступа, сбои аутентификации и криптографии |
| Инфраструктура | infra | Конфигурация контейнеров, рабочих нагрузок и serverless: Dockerfile, Compose, безопасность подов, IAM и триггеры FaaS |
| ИИ / LLM | ai | Интеграции с ИИ и LLM, от prompt injection и небезопасного подключения инструментов, агентов, поиска данных и MCP |
| Lovable | lovable | Сгенерированные ИИ приложения на Supabase (Lovable и подобные): пробелы в RLS, утечки ключей service_role и небезопасные настройки по умолчанию |
На чем она написана
| Категория | Ключ | Что она защищает |
|---|---|---|
| JavaScript | javascript | RCE через eval и child_process, path traversal и prototype pollution во всех его средах выполнения |
| Python | python | RCE через десериализацию pickle и YAML, обход через строки str.format и class pollution |
| Rust | rust | Некорректные unsafe API, неправильное использование transmute, целочисленное переполнение и неопределенное поведение на границе FFI |
| C / C++ | c-cpp | Ошибки форматных строк, переполнения буфера и запись за границами памяти, ведущие к выполнению кода |
| PHP | php | Обход аутентификации через type juggling, цепочки гаджетов object injection и небезопасные настройки по умолчанию |
| Go | go | Ошибки с typed nil в интерфейсах, data races в горутинах и небезопасная конкурентность на путях безопасности |
| Java | java | Цепочки гаджетов десериализации ObjectInputStream, ведущие к удаленному выполнению кода |
| Ruby | ruby | Цепочки гаджетов десериализации Marshal.load и YAML, ведущие к удаленному выполнению кода |
| .NET / C# | dotnet | RCE через десериализацию BinaryFormatter и обходы кодировщиков, ведущие к XSS |
Lagune не зависит от языка: весь процесс читает проект, на каком бы языке он ни был написан, а эти категории лишь добавляют глубины в ловушках, характерных для конкретного языка.
Добавляйте и убирайте в любой момент
Категория служит отправной точкой, а не обязательством. Используйте то, что подходит проекту сейчас, и меняйте в любой момент по ключу с помощью write add и write remove. --categories без значения открывает в терминале интерактивный выбор (пробел переключает, enter подтверждает, пустой выбор пропускает). Вне терминала передайте категории после флага.
- Добавить
- Убрать
npx lagune write add --categories # interactive
npx lagune write add --categories owasp
npx lagune write add --categories owasp rust
npx lagune write remove --categories # interactive
npx lagune write remove --categories owasp
npx lagune write remove --categories owasp rust
Первый write add или write remove начинает с owasp, поэтому если убрать все категории, останется пустой список, а не значение по умолчанию. Каждое изменение попадает в .lagune/configs.json, поэтому вся команда работает с одним и тем же набором.
Посмотрите, что использует проект
read list --categories показывает каждую категорию и то, использует ли ее проект:
npx lagune read list --categories
# Categories
# • owasp [used] Harden against the application security risks OWASP tracks
# • javascript [available] Harden JavaScript and its runtimes
# • php [available] Harden PHP against type-juggling auth bypass
# • go [available] Harden Go against typed-nil interface bugs
# ...
#
# No category is recorded yet, so this project uses the default: owasp.
Какие специализации входят в каждую категорию, смотрите в разделе Каталог. Ваши собственные специализации, написанные с помощью /lagune-specialize, попадают в каталог при любых категориях.
Частые вопросы
Передайте ключ категории в --categories, например npx lagune write add --categories javascript. Пока не зафиксировано ни одной категории, charter также фиксирует категории, которые подтверждает анализ проекта.
Да. Перечислите их в одной строке одну за другой.
Начните с owasp, значения по умолчанию, затем добавьте категорию для своего языка или стека. Специализации загружаются только по запросу, поэтому категория ничего не стоит, пока фазе не понадобится одна из ее специализаций.
