# Политика безопасности

**Языки:** [English](SECURITY.md) · **Русский** · [简体中文](SECURITY.zh.md)

## Поддерживаемые версии

Этот репозиторий содержит **спецификацию** формата Ktav и общую
conformance-сьюту. Здесь нет рантайма и нет скомпилированного
артефакта, поэтому "безопасность" трактуется узко: нас интересуют
spec-дефекты, из-за которых реализации **расходятся так, что
атакующий может этим воспользоваться downstream**.

| Версия  | Поддерживается         |
|---------|------------------------|
| 0.1.x   | ✅                     |
| старше  | ❌ — сперва обновитесь |

## Сообщение об уязвимости

**Пожалуйста, не открывайте публичные issue для security-relevant
проблем спецификации.**

Напишите на **phpcraftdream@gmail.com** и укажите:

- Краткое описание неоднозначности или ошибки в фикстуре.
- Минимальный Ktav-фрагмент, на котором две реальные реализации
  расходятся, или фикстуру, чей JSON-оракл неверен.
- Против каких реализаций вы тестировали (например, `ktav-lang/rust`
  0.1.0, `ktav-lang/python` 0.1.0, свой ридер) и в чём именно расхождение.
- Предпочтительный таймлайн раскрытия, если у вас он есть.

Подтверждение получите в течение **72 часов**. Опубликованный фикс
(уточнение формулировки спеки, правка фикстуры, новый тест) обычно
выходит в течение **недели**, дольше — если реализациям нужно
синхронно подтянуться.

## Область

Что считается security-relevant для этого репо:

- **Parser divergence:** две spec-совместимые реализации принимают /
  отклоняют один и тот же вход по-разному. Атакующий, знающий на
  какой стороне потребитель, может пронести данные мимо валидатора,
  написанного на другой.
- **Ошибки оракла:** `.json`-оракл в `versions/*/tests/valid/`, не
  соответствующий тому, что спека реально требует — калиброванные по
  нему реализации дрейфуют от настоящей грамматики.
- **Недоопределённое поведение:** уголок грамматики, оставленный
  спекой неоднозначным, при условии, что реальные реализации
  принимают по нему противоположные решения.
- **Потерянные инварианты:** свойство, которое спека подразумевает, но
  нигде явно не утверждает (например, класс ошибки, ограничение,
  гарантия детерминизма).

Что **не** считается проблемой безопасности здесь — пожалуйста,
используйте обычные issue:

- Ясность / формулировка prose спеки.
- Запросы на расширение формата новыми фичами — через обычный
  RFC-подобный процесс обсуждения.
- Баги в конкретной реализации — репортите в соответствующий репо
  биндинга (`ktav-lang/rust`, `ktav-lang/python`, `ktav-lang/js`,
  `ktav-lang/golang`, …).
