mirror of
https://github.com/JefferyHcool/BiliNote.git
synced 2026-06-24 01:03:42 +08:00
starlette < 0.47.2 在解析 multipart 表单的大文件时,SpooledTemporaryFile 从内存溢写到磁盘的 rollover 是在事件循环线程内同步执行的,攻击者可借大文件 上传阻塞事件循环造成拒绝服务(GHSA-2c2j-9gv5-cj73)。0.47.2 把 rollover 写入移到线程池(UploadFile.write 命中 _will_roll 时走 run_in_threadpool)。 由于 FastAPI 0.115.12 的约束为 starlette<0.47.0,同步升级 FastAPI 0.115.12→0.116.2(约束放宽至 starlette<0.48.0/<0.49.0),与现有 pydantic 2.11.2 / anyio 4.9.0 / python-multipart 0.0.20 均兼容。 验证:pip check 无冲突;2MB multipart 上传走 rollover 路径正常; docker 整套栈在新框架下 boot 健康(sys_health backend/db ok)。 Closes #411 Refs GHSA-2c2j-9gv5-cj73 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>