From ebd94f3fc55ea97ea458129b5557a07fd9fe4d0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=94=D0=BC=D0=B8=D1=82=D1=80=D0=B8=D0=B9?= Date: Thu, 18 Jun 2026 06:13:56 +0300 Subject: [PATCH] =?UTF-8?q?docs(security):=20go-live=20=D1=82=D1=80=D0=B5?= =?UTF-8?q?=D0=BA=D0=B5=D1=80=20=E2=80=94=20=D0=B2=D1=81=D0=B5=20=D0=B1?= =?UTF-8?q?=D0=BB=D0=BE=D0=BA=D0=B5=D1=80=D1=8B=20B1-B6=20=D1=81=D0=BD?= =?UTF-8?q?=D1=8F=D1=82=D1=8B=20(GO),=20B2=20anon=20=D0=BD=D0=B0=20=D0=BF?= =?UTF-8?q?=D1=80=D0=BE=D0=B4=D0=B5;=20gitignore=20lychee/walk=20=D0=B0?= =?UTF-8?q?=D1=80=D1=82=D0=B5=D1=84=D0=B0=D0=BA=D1=82=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 ++ docs/security/2026-06-17-open-items.md | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index da22e5b0..907778ca 100644 --- a/.gitignore +++ b/.gitignore @@ -49,6 +49,8 @@ gitleaks-report.json # ward (security-сканер) — отчёты в корне ward-report.* +lychee-links-report.txt +walk-*.png # ── IDE / редакторы ───────────────────────────────────────────────────────── .vscode/* diff --git a/docs/security/2026-06-17-open-items.md b/docs/security/2026-06-17-open-items.md index 6ff56195..9228805b 100644 --- a/docs/security/2026-06-17-open-items.md +++ b/docs/security/2026-06-17-open-items.md @@ -8,12 +8,12 @@ ## 🔴 Блокеры безопасности (мешают выходу в интернет) -> **Живые блокеры на 17.06: только B2.** B1 закрыт (`d1976c9c`); B3/B6 закрыты на проде 17.06 (боевой `.env`: `APP_DEBUG=false`, `APP_ENV=production`, `SAAS_ADMIN_TEST_BYPASS=false` + `config:cache`); B4/B5 сняты проверкой кода — см. «ПОПРАВКА» ниже. +> **Живых блокеров нет — все сняты.** B1 (`d1976c9c`); B2 anon-маски применены на прод (`8bb72b34`); B3/B6 прод-`.env` (`APP_DEBUG=false`, `APP_ENV=production`, `SAAS_ADMIN_TEST_BYPASS=false` + `config:cache`); B4/B5 — код. **Security go-live: GO** (CSP пока Report-Only; 152-ФЗ — ручное). | # | Пункт | Суть | Зона | Коллизия | |---|---|---|---|---| | B1 | **F-P1 / 152-ФЗ retention** | ✅ ЗАКРЫТО (`d1976c9c`) — Телефоны удалённых лидов не вычищаются (нет анонимизации/hard-delete после soft-delete). Подтверждён фактом по `Deal`-модели + схеме. | `app/Console/Commands` + миграция (бэкенд/БД) | низкая (бэкенд) | -| B2 | **pg_anonymizer не установлен** | `pg_dump` отдаёт ПДн открыто. Расширение `anon` — фаза 3, может быть не поставлено. Проверить: `SELECT extname FROM pg_extension WHERE extname='anon';` | БД/инфра + `docs/security` | нет | +| B2 | **pg_anonymizer** | ✅ ЗАКРЫТО (17.06, прод) — anon стоял, но было 0 правил маскирования; применены SECURITY LABEL на ПДн-колонки (`db/anon_masking_labels.sql`, `8bb72b34`) → `pg_dump` под masked-ролью маскирует. | БД/инфра + `docs/security` | нет | | B3 | **SAAS_ADMIN_TEST_BYPASS** | ✅ ЗАКРЫТО (17.06, прод) — в боевом `.env` выставлено `SAAS_ADMIN_TEST_BYPASS=false` + `php artisan config:cache`; `/api/admin/**` снова только за middleware `saas-admin`. Бэкап `.env.bak-2026-06-17-b3`. | `.env.production` / config | нет | | B4 | **SSRF через `/api/webhooks/test`** | ✅ ЗАКРЫТО (код: `WebhookUrlGuard`) — Нет фильтрации URL → запрос на metadata YC `169.254.169.254` → IAM-токен. | бэкенд (контроллер/сервис) | низкая | | B5 | **Открытые без auth ручки** | ✅ ЗАКРЫТО (код: `web.php` auth:sanctum) — `/api/dashboard/summary` (E18), `/api/managers` + `/api/lead-statuses` (E9). | `routes/api.php` + middleware (бэкенд) | низкая |