РуБенч (RuBench) от vibecoding.ru · NEST2
Мидлварь Fastify не должна пропускать trailing slash
nestjs/nest · TYPESCRIPT · base 426ed52ed743
вход агента
Постановка
У нас бэкенд на NestJS на Fastify-адаптере (наш форк NestJS).
Безопасники заметили дырку: auth-middleware, повешенный на маршруты,
не срабатывает, если клиент дёргает URL С ЗАВЕРШАЮЩИМ слэшем. /users
защищён, а /users/ проходит мимо middleware прямо к хендлеру. На
Express-адаптере такого нет — только на Fastify.
Покопались: Fastify-адаптер матчит путь запроса против шаблона
маршрута регуляркой, и шаблон, собранный со слэшем на конце, не
совпадает с путём без слэша (и наоборот) — middleware решает «не мой
маршрут» и пропускает запрос дальше без себя.
Почини матчинг в Fastify-адаптере:
1. Middleware, повешенный на маршрут, должен срабатывать и на путь со
слэшем на конце, и без него — /users и /users/ оба проходят через
middleware.
2. Матчинг не должен стать шире: пути ДРУГИХ маршрутов (например
/users/123 при шаблоне /users без параметров) как не матчились, так
и не матчатся.
3. Поведение Express-адаптера не трогать.
Родные тесты фреймворка должны проходить.
(тикет LAVKA-SEC-MW)
артефакты билета
Verifier / Solution
- VERIFIER
- приватный оракул · SHA-256 в манифесте
- SOLUTION
- золотой фикс мейнтейнера
полный публичный артефакт — task.md; оракул не раскрывается
раунд 1 · 12 конфигураций × 3 прогона
Поячеечные исходы · раунд 1
| конфигурация | прогоны | итог |
|---|---|---|
| Claude Code + Fable 5 | PASS—— | 1/1 |
| Codex + GPT-5.6 Sol | PASSPASSPASS | 3/3 |
| Claude Code + Opus 4.8 | PASSPASSPASS | 3/3 |
| Codex + GPT-5.6 Luna | PASSPASSPASS | 3/3 |
| Claude Code + Sonnet 5 | PASSPASSPASS | 3/3 |
| SourceCraft CLI + ds | PASSPASSFAIL | 2/3 |
| Codex + GPT-5.5 | PASSPASSPASS | 3/3 |
| Claude Code + Haiku 4.5 | PASSPASSFAIL | 2/3 |
| Koda CLI + koda-pro | ——— | — |
| Antigravity + Gemini 3.1 Pro | FAILPASSFAIL | 1/3 |
| Antigravity + Gemini 3.5 Flash | FAILFAILFAIL | 0/3 |
| SourceCraft CLI + legacy | FAILFAILFAIL | 0/3 |
оракул приватный · правильность = зелёный регресс-тест мейнтейнера