Skip to content

build(deps): bump starlette from 0.46.2 to 1.3.1 in /src/bin/calaos_mcp - #175

Open
dependabot[bot] wants to merge 1 commit into
masterfrom
dependabot/pip/src/bin/calaos_mcp/starlette-1.3.1
Open

build(deps): bump starlette from 0.46.2 to 1.3.1 in /src/bin/calaos_mcp#175
dependabot[bot] wants to merge 1 commit into
masterfrom
dependabot/pip/src/bin/calaos_mcp/starlette-1.3.1

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Aug 24, 2026

Copy link
Copy Markdown

Bumps starlette from 0.46.2 to 1.3.1.

Release notes

Sourced from starlette's releases.

Version 1.3.1

What's Changed

Full Changelog: Kludex/starlette@1.3.0...1.3.1

Version 1.3.0

What's Changed

New Contributors

Full Changelog: Kludex/starlette@1.2.1...1.3.0

Version 1.2.1

What's Changed

New Contributors

Full Changelog: Kludex/starlette@1.2.0...1.2.1

Version 1.2.0

What's Changed

Full Changelog: Kludex/starlette@1.1.0...1.2.0

Version 1.1.0

... (truncated)

Changelog

Sourced from starlette's changelog.

1.3.1 (June 12, 2026)

Fixed

  • Enforce max_fields and max_part_size in FormParser #3329.
  • Enforce FormParser limits in parser callbacks #3331.

1.3.0 (June 11, 2026)

Added

  • Add httpx2 to the full extra #3323.
  • Annotate the URLPath protocol parameter with Literal #3285.

Fixed

  • Build request.url from structured components #3326.
  • Clamp oversized suffix ranges in FileResponse #3307.
  • Catch OSError alongside MultiPartException when closing temp files #3191.
  • Avoid collapsing exception groups raised from user code #2830.
  • Use removeprefix to strip the weak ETag indicator in is_not_modified #3193.
  • Fix IndexError in URL.replace() on a URL with no authority #3317.
  • Adjust testclient typing and warnings #3322.

1.2.1 (May 31, 2026)

Fixed

  • Use httpx2 for type checking in the testclient module #3304.
  • Add assert error for requires() when the request parameter is not a Request type #3298.

1.2.0 (May 28, 2026)

Added

  • Support httpx2 in the test client #3291.

1.1.0 (May 23, 2026)

Added

  • Use "application/octet-stream" as the FileResponse media type fallback #3283.

Fixed

  • Only dispatch standard HTTP verbs in HTTPEndpoint #3286.
  • Reject absolute paths in StaticFiles.lookup_path #3287.

1.0.1 (May 21, 2026)

... (truncated)

Commits
  • 8ebffd0 Version 1.3.1 (#3330)
  • 25b8e17 Enforce FormParser limits in parser callbacks (#3331)
  • dba1c4b Enforce max_fields and max_part_size in FormParser (#3329)
  • 45e51dc Use StarletteDeprecationWarning instead of DeprecationWarning (#3119)
  • 5f8610c Version 1.3.0 (#3327)
  • 167b585 Build request.url from structured components (#3326)
  • 3730925 Use removeprefix to strip weak ETag indicator in is_not_modified (#3193)
  • e6f7ad1 avoid collapsing exception groups from user code (#2830)
  • 115228f Annotate URLPath protocol parameter with Literal (#3285)
  • 113f193 docs: replace inline ASGI server list with link to canonical implemen… (#3204)
  • Additional commits viewable in compare view

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    You can disable automated security fix PRs for this repo from the Security Alerts page.

Bumps [starlette](https://github.com/Kludex/starlette) from 0.46.2 to 1.3.1.
- [Release notes](https://github.com/Kludex/starlette/releases)
- [Changelog](https://github.com/Kludex/starlette/blob/main/docs/release-notes.md)
- [Commits](Kludex/starlette@0.46.2...1.3.1)

---
updated-dependencies:
- dependency-name: starlette
  dependency-version: 1.3.1
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file python Pull requests that update python code labels Aug 24, 2026
@raoulh

raoulh commented Aug 24, 2026

Copy link
Copy Markdown
Member

Taken, but not as proposed: this PR as it stands produces a dependency set that cannot be installed anywhere.

ERROR: Cannot install fastapi==0.115.12 and starlette==1.3.1 because these
package versions have conflicting dependencies.
  The user requested starlette==1.3.1
  fastapi 0.115.12 depends on starlette<0.47.0 and >=0.40.0
ERROR: ResolutionImpossible

Dependabot bumped starlette in isolation without touching fastapi, which pyproject.toml pins at 0.115.12. The green CI above did not catch this, and could not: .github/workflows/ci.yml has no Python step, and nothing in the build ever resolves src/bin/calaos_mcp/pyproject.toml (it is not even in EXTRA_DIST; Makefile.am installs the .py files directly). So the checkmark on this PR is not evidence about this change.

Landed instead as a coordinated bump on branch chore/dependabot-2026-08-24, grouped with #174 so that only one docker-publish-dev cycle is spent:

mcp       1.16.0   -> 1.28.1
starlette 0.46.2   -> 1.3.1
fastapi   0.115.12 -> 0.141.1   (required: first fastapi series accepting
                                 starlette 1.x is around 0.13x)

Exposure assessment. Most of the seven starlette advisories do not reach this sidecar: no StaticFiles (GHSA-wqp7-x3pw-xc5r is Windows-only anyway), no HTTPEndpoint (GHSA-x746-7m8f-x49c), no FileResponse (GHSA-7f5h-v6xp-fcq8), no multipart or urlencoded form parsing (GHSA-2c2j-9gv5-cj73, GHSA-82w8-qh3p-5jfq). The two that do matter are the Host / URL poisoning pair, GHSA-86qp-5c8j-p5mr and GHSA-jp82-jpqv-5vv3: the sidecar sits behind the calaos_server C++ reverse proxy which forwards external Host values as-is, and BearerAuthMiddleware discriminates on request.url.path to let /healthz through unauthenticated. A poisoned request.url.path is aimed at exactly that check. That alone justifies the upgrade.

Verified out of band in a python3.11 venv with the full coordinated set: create_app() builds, GET /healthz -> 200, POST /mcp initialize -> 200 (protocol 2025-06-18), POST /mcp without Bearer -> 401, tests/python 34 passed / 2 skipped.

This PR will close automatically when the grouped branch lands on master.

raoulh added a commit that referenced this pull request Sep 7, 2026
Reprend la PR Dependabot #175, mais PAS telle quelle : la PR est
INSTALLABLE NULLE PART en l'etat. fastapi==0.115.12 exige
"starlette>=0.40.0,<0.47.0" ; poser starlette==1.3.1 a cote rend le jeu de
dependances irresoluble (pip: ResolutionImpossible). Dependabot ne l'a pas
vu et la CI non plus, parce que .github/workflows/ci.yml ne resout jamais
ce pyproject.toml. D'ou la montee coordonnee de fastapi : la premiere serie
qui accepte starlette 1.x se situe vers 0.13x ; on prend la derniere,
0.141.1, celle qui a ete verifiee de bout en bout.

CVE starlette adressees (toutes < 1.3.1) :
  - GHSA-7f5h-v6xp-fcq8 (high)   DoS O(n^2) via fusion d'en-tetes Range
                                 dans FileResponse.
  - GHSA-wqp7-x3pw-xc5r (high)   SSRF / vol d'identifiants NTLM via chemins
                                 UNC dans StaticFiles (Windows).
  - GHSA-82w8-qh3p-5jfq (high)   limites de request.form() ignorees en
                                 silence sur x-www-form-urlencoded -> DoS.
  - GHSA-x746-7m8f-x49c (medium) methode HTTP arbitraire dispatchee vers un
                                 attribut de HTTPEndpoint via getattr.
  - GHSA-86qp-5c8j-p5mr (medium) absence de validation de l'en-tete Host
                                 empoisonnant request.url.path.
  - GHSA-2c2j-9gv5-cj73 (medium) DoS a l'analyse de gros fichiers multipart.
  - GHSA-jp82-jpqv-5vv3 (low)    chemin de requete non valide concatene dans
                                 l'autorite, empoisonne request.url.hostname.

Portee reelle : plusieurs de ces failles ne s'appliquent pas au sidecar
(pas de StaticFiles, pas de HTTPEndpoint, pas de FileResponse, cible Linux,
pas de formulaire multipart). En revanche les deux failles Host/URL touchent
directement un composant derriere un reverse proxy C++ qui transmet des Host
externes tels quels, et BearerAuthMiddleware discrimine sur request.url.path
pour laisser passer /healthz sans authentification : c'est exactement le
chemin qu'un empoisonnement de request.url.path viserait.

Verification : le conteneur de build n'embarque ni starlette ni fastapi ni
pytest, donc "make check" ne couvre PAS ce changement (les suites python
retombent sur unittest et n'importent jamais calaos_mcp.server). Verifie
hors bande dans un venv python3.11 : jeu complet resolu, create_app()
construit, GET /healthz -> 200, POST /mcp initialize -> 200 (protocole
2025-06-18), POST /mcp sans Bearer -> 401, tests/python : 34 passed /
2 skipped.
raoulh added a commit that referenced this pull request Sep 7, 2026
…rdonnée mcp/fastapi/starlette

7 PR instruites : 5 fermées (npm dev-only, jamais shippées — dont #168 immutable
3.8.3 qui était une régression), 2 fusionnées en une montée coordonnée.
mcp 1.16.0→1.28.1, fastapi 0.115.12→0.141.1, starlette 0.46.2→1.3.1 : #175 seule
donnait ResolutionImpossible, fastapi==0.115.12 exigeant starlette<0.47.

Premier merge qui a un effet réel sur l'image : avant T3.23 ce pyproject.toml
n'était lu par aucun chemin de build. Vérifié dans l'image reconstruite — les
trois versions sont effectivement installées, la sonde configure.ac de T3.23
(API privée mcp._session_manager comprise) reste verte face à mcp 1.28.1,
/healthz 200, POST /mcp 401 sans Bearer / 200 avec. make check 70/70.

Restent ouverts F-DEP-2, F-DEP-3, F-DEP-5, et les 12 alertes Dependabot :
fermer une PR ne ferme pas l'alerte.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file python Pull requests that update python code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant