Ce mail provient de l'extérieur, restons vigilants

=====================================================================

                            CERT-Renater

                Note d'Information No. 2026/VULN556
_____________________________________________________________________

DATE                : 28/05/2026

HARDWARE PLATFORM(S): /

OPERATING SYSTEM(S): Systems running Starlette versions prior to
                                    1.1.0.

=====================================================================
https://github.com/Kludex/starlette/security/advisories/GHSA-86qp-5c8j-p5mr
https://github.com/Kludex/starlette/security/advisories/GHSA-wqp7-x3pw-xc5r
https://github.com/Kludex/starlette/security/advisories/GHSA-x746-7m8f-x49c
_____________________________________________________________________


Missing Host header validation poisons request.url.path, bypassing
path-based security checks

Moderate
Kludex published GHSA-86qp-5c8j-p5mr May 21, 2026

Package
starlette (pip)

Affected versions
<=1.0.0

Patched versions
1.0.1


Description

Summary

In affected versions, the HTTP Host request header was not validated
before being used to reconstruct request.url. Because the routing
algorithm relies on the raw HTTP path while request.url is rebuilt
from the Host header, a malformed header could make request.url.path
differ from the path that was actually requested. Middleware and
endpoints that apply security restrictions based on request.url
(rather than the raw scope path) could therefore be bypassed.


Details

When a client requests http://example.com/foo, it sends:

GET /foo HTTP/1.1
Host: example.com

Affected versions reconstructed the URL by concatenating
http://{host}{path} and re-parsing the result. The Host value
is only valid as a uri-host [ ":" port ] per RFC 9112 §3.2,
where uri-host follows the restricted host grammar of
RFC 3986 §3.2.2. When it contains characters outside that
grammar - notably /, ?, or # - those characters move the
path/query/fragment boundaries during re-parsing, so the
parsed request.url.path no longer matches the path the server
actually received. For example:

GET /foo HTTP/1.1
Host: example.com/abc?bar=

reconstructs to http://example.com/abc?bar=/foo, whose
parsed path is /abc - even though routing used the real
path /foo. The router still dispatches to /foo and the
endpoint executes, but any middleware or code that reads
request.url.path sees /abc, so path-based authorization
checks can be bypassed.


Impact

Any application running an affected version that relies on
request.url (or request.url.path) for security-sensitive
decisions is affected. The most common case is middleware
that gates access to certain path prefixes based on
request.url.path. Deployments fronted by a proxy or load
balancer are mitigated only if that proxy rejects or
normalizes the malformed Host header before forwarding and
the application does not trust attacker-controlled host
headers (e.g. X-Forwarded-Host) elsewhere.


Mitigation

Upgrade to a patched version, which validates the Host header
against the grammar of RFC 9112 §3.2 / RFC 3986 §3.2.2 when
constructing request.url and falls back to scope["server"]
for malformed values.


Severity
Moderate
6.5/ 10

CVSS v3 base metrics
Attack vector
Network
Attack complexity
Low
Privileges required
None
User interaction
None
Scope
Unchanged
Confidentiality
Low
Integrity
Low
Availability
None
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N

CVE ID
CVE-2026-48710

Weaknesses
No CWEs

Credits

    @x41j x41j Reporter
    @ehhthing ehhthing Reporter
    @nic-lovin nic-lovin Reporter

_____________________________________________________________________


SSRF and NTLM credential theft via UNC paths in StaticFiles on Windows
High
Kludex published GHSA-wqp7-x3pw-xc5r May 23, 2026

Package
starlette (pip)

Affected versions
< 1.1.0

Patched versions
1.1.0


Description

Summary

When serving static files on Windows, StaticFiles resolves the
requested path with os.path.realpath. If a UNC path (such as
\\attacker.com\share) reaches the resolver, realpath causes the
process to open a connection to the remote host over SMB
(port 445). This is a server-side request forgery (SSRF) that
leaks the service account's NTLMv2 credentials to the
attacker-controlled host, which can then be cracked offline or
relayed to other hosts.


Details

StaticFiles.lookup_path() joins the requested path onto the
served directory and calls os.path.realpath on the result
before checking containment with os.path.commonpath. On Windows,
a UNC path is absolute, so os.path.join discards the served
directory and realpath resolves the bare UNC path, triggering
the outbound SMB connection and NTLM authentication before
the containment check rejects the path. The HTTP response is
a benign 404, but the credential disclosure has already
happened. POSIX systems are not affected.

This only affects the default configuration
(follow_symlink=False), which uses os.path.realpath. The
follow_symlink=True branch uses os.path.abspath, which
performs no I/O.


Impact

Applications running on Windows that serve files with
StaticFiles (directly, or via a framework built on Starlette
such as FastAPI) in the default configuration are affected.
StaticFiles is typically unauthenticated, so any client
can trigger the SMB connection and leak the service
account's NTLMv2 hash. A secondary impact is discovering
internal hosts reachable over SMB by timing responses
for valid versus invalid addresses.


Mitigation

Applications not running on Windows are not affected. On
Windows, serving static files through a dedicated web
server (such as nginx or IIS) instead of StaticFiles
avoids the issue. Blocking outbound SMB (port 445) from
the application host prevents the credential disclosure
even if a UNC path is resolved.


Severity
High
7.5/ 10

CVSS v3 base metrics
Attack vector
Network
Attack complexity
Low
Privileges required
None
User interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
None
Availability
None
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N

CVE ID
CVE-2026-48818

Weaknesses
Weakness CWE-918

Credits

    @nvn1729 nvn1729 Reporter

_____________________________________________________________________


Arbitrary HTTP method dispatched to `HTTPEndpoint` attributes via
`getattr`

Moderate
Kludex published GHSA-x746-7m8f-x49c May 23, 2026

Package
starlette (pip)

Affected versions
< 1.1.0

Patched versions
1.1.0


Description

Summary

When dispatching a request, HTTPEndpoint selects the handler by
lowercasing the HTTP method and looking it up as an attribute with
getattr, without restricting the lookup to a known set of HTTP
verbs.

When an HTTPEndpoint subclass is registered through Route(...)
without an explicit methods= argument, the route does not constrain
the method and every method reaches the endpoint. If a non-standard
HTTP method whose lowercased name matches an attribute on the
endpoint subclass reaches the endpoint, that attribute is invoked
as if it were a request handler. An attacker can use this to reach
methods that were never meant to be HTTP handlers, such as internal
helpers, without the authorization checks applied by the intended
public handler.


Details

HTTPEndpoint uses the client-supplied method name to resolve an
instance attribute, without validating it against the set of HTTP
verbs the endpoint supports. A method such as _DO_DELETE therefore
resolves an attribute like _do_delete and invokes it. Non-standard
methods are valid RFC 9110 token methods, so an endpoint must not
treat the method name as a trusted attribute selector.


Impact

An application is affected when all of the following hold:

    It defines an HTTPEndpoint subclass and registers it via
Route(...) without an explicit methods= argument.
    The subclass defines additional methods whose names match a
non-standard HTTP-method token shape and that accept a single
request argument and return a response.

This also affects frameworks built on Starlette, like FastAPI.


Mitigation

Register HTTPEndpoint subclasses with an explicit methods= argument
on the Route, listing only the HTTP verbs the endpoint supports.
The route then rejects any other method with 405 Method Not
Allowed before it reaches the endpoint, so non-standard methods
cannot resolve an attribute.

Severity
Moderate
5.3/ 10

CVSS v3 base metrics
Attack vector
Network
Attack complexity
Low
Privileges required
None
User interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
Low
Availability
None
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N

CVE ID
CVE-2026-48817

Weaknesses
Weakness CWE-470 

=========================================================
+ CERT-RENATER        |    tel : 01-53-94-20-44         +
+ 23/25 Rue Daviel    |    fax : 01-53-94-20-41         +
+ 75013 Paris         |   email:cert@support.renater.fr +
=========================================================




