fix(deps/site-finder): 53 advisory в backend/uv.lock — точечный апгрейд восьми пакетов #3207

Merged
bot-backend merged 1 commit from fix/deps-sitefinder-backend-cve into main 2026-08-29 10:54:57 +00:00
Collaborator

Прогнал все локи репозитория через OSV batch API (2026-08-29, 1878 пакет-версий). Уязвимые версии нашлись только в backend/uv.lock. Корневой лок «Меры» (tradein-mvp/uv.lock — именно из него собирается её образ) чист: ноль находок.

Измерение, а не оценка

OSV прогнан по локу до и после:

пакетов в локе уязвимых advisory
до 138 8 53
после 138 0 0

Что поднято

пакет было стало почему
pillow 12.2.0 12.3.0 26 advisory: heap OOB write в Image.paste/crop, в ImageFilter.RankFilter, обходы decompression-bomb. Image.open у нас на внешнем входе
starlette 1.0.0 1.6.0 10 advisory, в т.ч. молча игнорируемые лимиты request.form()
cryptography 47.0.0 50.0.1 7 advisory; транзитив pdfminer-six
urllib3 2.6.3 2.7.0 4 advisory; обход защиты от decompression-bomb в streaming API
weasyprint 68.1 69.0 CSS injection via presentational hints
idna 3.13 3.19 2 advisory
mako 1.3.11 1.4.1 path traversal в TemplateLookup; вектор Windows-only, у нас Linux — взято попутно
pydantic-settings 2.14.0 2.15.0 1 advisory

Почему точечный апгрейд, а не общий

Все спеки в pyproject.toml вида >=X без верхней границы. Общий uv lock --upgrade затянул бы заодно мажоры (redis 7→8, numpy, и т.д.) — это отдельная работа с отдельной приёмкой. Здесь --upgrade-package на 8 имён.

Проверено диффом: из 138 пакетов изменились ровно эти 8. Прямые спеки в pyproject.toml не тронуты — файл не в диффе.

Проверка совместимости

Локально после uv sync --frozen:

fastapi 0.136.1 | starlette 1.6.0
pillow 12.3.0 | cryptography 50.0.1 | urllib3 2.7.0
TestClient: {'ok': True}

FastAPI 0.136.1 поднимается на starlette 1.6.0, роут отвечает. WeasyPrint на Windows не импортируется (нет GTK) — его гоняет CI на Linux, это и есть гейт для мажора 68→69.

Что осталось за кадром

fastapi.testclient на starlette 1.6 предупреждает StarletteDeprecationWarning: Using httpx with starlette.testclient is deprecated; install httpx2 instead. Это ворнинг, не отказ; тесты проходят. Отдельная задача.

Прогнал **все** локи репозитория через OSV batch API (2026-08-29, 1878 пакет-версий). Уязвимые версии нашлись только в `backend/uv.lock`. Корневой лок «Меры» (`tradein-mvp/uv.lock` — именно из него собирается её образ) чист: ноль находок. ## Измерение, а не оценка OSV прогнан по локу **до** и **после**: | | пакетов в локе | уязвимых | advisory | |---|---|---|---| | до | 138 | 8 | 53 | | после | 138 | **0** | **0** | ## Что поднято | пакет | было | стало | почему | |---|---|---|---| | pillow | 12.2.0 | 12.3.0 | 26 advisory: heap OOB write в `Image.paste`/`crop`, в `ImageFilter.RankFilter`, обходы decompression-bomb. `Image.open` у нас на внешнем входе | | starlette | 1.0.0 | 1.6.0 | 10 advisory, в т.ч. молча игнорируемые лимиты `request.form()` | | cryptography | 47.0.0 | 50.0.1 | 7 advisory; транзитив `pdfminer-six` | | urllib3 | 2.6.3 | 2.7.0 | 4 advisory; обход защиты от decompression-bomb в streaming API | | weasyprint | 68.1 | 69.0 | CSS injection via presentational hints | | idna | 3.13 | 3.19 | 2 advisory | | mako | 1.3.11 | 1.4.1 | path traversal в `TemplateLookup`; вектор Windows-only, у нас Linux — взято попутно | | pydantic-settings | 2.14.0 | 2.15.0 | 1 advisory | ## Почему точечный апгрейд, а не общий Все спеки в `pyproject.toml` вида `>=X` без верхней границы. Общий `uv lock --upgrade` затянул бы заодно мажоры (redis 7→8, numpy, и т.д.) — это отдельная работа с отдельной приёмкой. Здесь `--upgrade-package` на 8 имён. Проверено диффом: из 138 пакетов изменились **ровно эти 8**. Прямые спеки в `pyproject.toml` не тронуты — файл не в диффе. ## Проверка совместимости Локально после `uv sync --frozen`: ``` fastapi 0.136.1 | starlette 1.6.0 pillow 12.3.0 | cryptography 50.0.1 | urllib3 2.7.0 TestClient: {'ok': True} ``` FastAPI 0.136.1 поднимается на starlette 1.6.0, роут отвечает. WeasyPrint на Windows не импортируется (нет GTK) — его гоняет CI на Linux, это и есть гейт для мажора 68→69. ## Что осталось за кадром `fastapi.testclient` на starlette 1.6 предупреждает `StarletteDeprecationWarning: Using httpx with starlette.testclient is deprecated; install httpx2 instead`. Это ворнинг, не отказ; тесты проходят. Отдельная задача.
bot-backend added 1 commit 2026-08-29 10:29:33 +00:00
fix(deps/site-finder): 53 advisory в backend/uv.lock — точечный апгрейд восьми пакетов
All checks were successful
CI Trade-In / browser-tests (pull_request) Has been skipped
CI / changes (pull_request) Successful in 9s
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI Trade-In / changes (pull_request) Successful in 8s
CI Trade-In / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Successful in 2m9s
CI / backend-tests (pull_request) Successful in 17m38s
e059e41f5f
Прогон всех локов через OSV batch API (2026-08-29) показал: уязвимые версии есть
только в backend/uv.lock. Корневой лок «Меры» (tradein-mvp/uv.lock, из которого и
собирается её образ) чист полностью — ноль находок.

Было 8 пакетов / 53 advisory, стало 0. Проверено повторным прогоном OSV по
получившемуся локу.

  pillow            12.2.0 -> 12.3.0   26 advisory, среди них heap OOB write в
                                       Image.paste/crop и ImageFilter.RankFilter;
                                       Image.open у нас на внешнем входе (загрузка фото)
  starlette         1.0.0  -> 1.6.0    10 advisory, в т.ч. обход лимитов request.form()
  cryptography      47.0.0 -> 50.0.1   7 advisory; транзитив pdfminer-six
  urllib3           2.6.3  -> 2.7.0    4 advisory; обход защиты от decompression-bomb
  weasyprint        68.1   -> 69.0     CSS injection via presentational hints
  idna              3.13   -> 3.19     2 advisory
  mako              1.3.11 -> 1.4.1    path traversal в TemplateLookup (Windows-only,
                                       у нас Linux — берём попутно)
  pydantic-settings 2.14.0 -> 2.15.0   1 advisory

Апгрейд ТОЧЕЧНЫЙ (--upgrade-package на 8 имён), не общий --upgrade: спеки в
pyproject все вида ">=" без верхней границы, и общий апгрейд затянул бы мажоры
вроде redis 7->8 и numpy заодно. Диффом подтверждено: из 138 пакетов изменились
ровно эти 8, прямые спеки в pyproject.toml не тронуты.

Проверка совместимости локально: fastapi 0.136.1 поднимается на starlette 1.6.0,
TestClient отвечает. weasyprint импортировать на Windows нельзя (нет GTK), его
гоняет CI на Linux.

NB: fastapi.testclient на starlette 1.6 предупреждает, что связка с httpx
устарела в пользу httpx2 — это ворнинг, не отказ; отдельная задача.
bot-backend merged commit 8af5e226cd into main 2026-08-29 10:54:57 +00:00
bot-backend deleted branch fix/deps-sitefinder-backend-cve 2026-08-29 10:54:57 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: lekss361/gendesign#3207
No description provided.