From b7dd060ba0e0e7f901741d6e66327673707bd306 Mon Sep 17 00:00:00 2001 From: Anton Vakhrushev Date: Tue, 11 Aug 2026 16:42:10 +0300 Subject: [PATCH] =?UTF-8?q?CLAUDE.md:=20=D0=B2=20=D0=B8=D0=BD=D0=B2=D0=B0?= =?UTF-8?q?=D1=80=D0=B8=D0=B0=D0=BD=D1=82=20=D0=BF=D1=80=D0=B8=D0=B2=D0=B0?= =?UTF-8?q?=D1=82=D0=BD=D0=BE=D1=81=D1=82=D0=B8=20=D0=B4=D0=BE=D0=BF=D0=B8?= =?UTF-8?q?=D1=81=D0=B0=D0=BD=D0=BE=20=D0=B8=D0=B7=D1=8A=D1=8F=D1=82=D0=B8?= =?UTF-8?q?=D0=B5=20=D0=BF=D1=80=D0=BE=20=D1=80=D0=B0=D1=81=D1=88=D0=B8?= =?UTF-8?q?=D1=80=D0=B5=D0=BD=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - хвост после последней точки попадает в журнал внутри пути файла и остаётся там осознанно; наружу он выходит только приведённым к перечню - в модели угроз это перестало читаться незакрытым остатком --- CLAUDE.md | 6 ++++++ docs/security.md | 5 +++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 69db07a..55cb93b 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -40,6 +40,12 @@ SpeechKit v3, Prometheus, `slog`. Сборка — Taskfile, образ — Dock пользователя и его сообщение в лог не пишутся — только длина и идентификаторы. Нарушение необратимо: строки уже уехали в журнал контейнера. **critical** + *Изъятие:* расширение — хвост после последней точки — в журнал попадает, потому + что стоит в собственном имени файла на диске, а путь логируется. Изъятие узкое + и кончается журналом: наружу, меткой метрики, расширение выходит только + приведённым к перечню известных форматов. Границу держит спека `intake`, + цена — [adr/ADR-2026-08-11-known-format-label.md](docs/adr/ADR-2026-08-11-known-format-label.md), + остаток — [docs/security.md](docs/security.md). - **Бот отвечает только тем, кто в белом списке.** Бот проверяет отправителя до любой работы, включая скачивание файла. Нарушение обратимо правкой конфига, но чужие записи к тому моменту уже обработаны за наши деньги. **critical** diff --git a/docs/security.md b/docs/security.md index 563032a..c730fc7 100644 --- a/docs/security.md +++ b/docs/security.md @@ -190,8 +190,9 @@ Telegram отправителю. 2026-08-11 задачей `no-user-filename-in-log`; запрет проверяют тесты приёма по HTTP на успешном пути и на пути отказа — они ищут значение, а не имя поля. -**Остаток: хвост после последней точки остаётся в журнале.** Расширение берётся -из имени отправителя дословно (`filepath.Ext`), поэтому имя +**Хвост после последней точки остаётся в журнале, и это объявленное изъятие** +инварианта приватности из [../CLAUDE.md](../CLAUDE.md), а не незакрытый остаток. +Расширение берётся из имени отправителя дословно (`filepath.Ext`), поэтому имя `запись.тайное-слово` отдаёт `тайное-слово`, а `Разговор с Петровым 11.08` — `08`. Оно стоит в собственном имени файла на диске, а путь к файлу логируется. Читает этот журнал владелец сервиса. Нормализация расширения на диске — отдельная