Every CVE Search/ Get API key

CVE-2026-48818

Starlette: SSRF and NTLM credential theft via UNC paths in StaticFiles on Windows

7.5 HighFix available

Starlette is a lightweight ASGI framework/toolkit. In versions 1.0.1 and earlier, StaticFiles on Windows is vulnerable to SSRF. An UNC path such as \attacker.com\share can cause os.path.realpath to initiate an outbound SMB connection before the path is rejected, exposing the service account’s NTLMv2 credentials for offline cracking or relay even though the HTTP response is only a 404. The issue affects default follow_symlink=False deployments, including frameworks built on Starlette such as FastAPI; POSIX systems and follow_symlink=True are unaffected. The issue is fixed in 1.1.0.

Attack profile

How easy it is to exploit

Attack vector
Network
Complexity
Low
Privileges needed
None
User interaction
None

What an attacker can affect

Confidentiality
High
Integrity
None
Availability
None

Exploit likelihood

0.37%Up 0.3 points since Jun 12, 2026
90%50%10%1%

What each source reports

CVE List Score used 7.5

Starlette: SSRF and NTLM credential theft via UNC paths in StaticFiles on Windows

Starlette is a lightweight ASGI framework/toolkit. In versions 1.0.1 and earlier, StaticFiles on Windows is vulnerable to SSRF. An UNC path such as \attacker.com\share can cause os.path.realpath to initiate an outbound SMB connection before the path is rejected, exposing the service account’s NTLMv2 credentials for offline cracking or relay even though the HTTP response is only a 404. The issue affects default follow_symlink=False deployments, including frameworks built on Starlette such as FastAPI; POSIX systems and follow_symlink=True are unaffected. The issue is fixed in 1.1.0.

Record
CVE-2026-48818
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
Weakness
CWE-918, CWE-918
Updated
2026-11-02
EUVDEUVD-2026-37773 7.5

Starlette is a lightweight ASGI framework/toolkit. In versions 1.0.1 and earlier, StaticFiles on Windows is vulnerable to SSRF. An UNC path such as \attacker.com\share can cause os.path.realpath to initiate an outbound SMB connection before the path is rejected, exposing the service account’s NTLMv2 credentials for offline cracking or relay even though the HTTP response is only a 404. The issue affects default follow_symlink=False deployments, including frameworks built on Starlette such as FastAPI; POSIX systems and follow_symlink=True are unaffected. The issue is fixed in 1.1.0.

Record
EUVD-2026-37773
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
Updated
2026-11-02
GitHub AdvisoriesGHSA-wqp7-x3pw-xc5r 7.5

Starlette: SSRF and NTLM credential theft via UNC paths in StaticFiles on Windows

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.

Record
GHSA-wqp7-x3pw-xc5r
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
Weakness
CWE-918
Updated
2026-11-02
NVD 7.5

Starlette is a lightweight ASGI framework/toolkit. In versions 1.0.1 and earlier, StaticFiles on Windows is vulnerable to SSRF. An UNC path such as \attacker.com\share can cause os.path.realpath to initiate an outbound SMB connection before the path is rejected, exposing the service account’s NTLMv2 credentials for offline cracking or relay even though the HTTP response is only a 404. The issue affects default follow_symlink=False deployments, including frameworks built on Starlette such as FastAPI; POSIX systems and follow_symlink=True are unaffected. The issue is fixed in 1.1.0.

Record
CVE-2026-48818
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
Weakness
CWE-918
Updated
2026-11-02
OSV 7.5

Starlette: SSRF and NTLM credential theft via UNC paths in StaticFiles on Windows

Starlette is a lightweight ASGI framework/toolkit. In versions 1.0.1 and earlier, StaticFiles on Windows is vulnerable to SSRF. An UNC path such as \attacker.com\share can cause os.path.realpath to initiate an outbound SMB connection before the path is rejected, exposing the service account’s NTLMv2 credentials for offline cracking or relay even though the HTTP response is only a 404. The issue affects default follow_symlink=False deployments, including frameworks built on Starlette such as FastAPI; POSIX systems and follow_symlink=True are unaffected. The issue is fixed in 1.1.0.

Record
CVE-2026-48818
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
Weakness
CWE-918
Updated
2026-11-02
OSVGHSA-wqp7-x3pw-xc5r 7.5

Starlette: SSRF and NTLM credential theft via UNC paths in StaticFiles on Windows

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.

Record
GHSA-wqp7-x3pw-xc5r
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
Weakness
CWE-918
Updated
2026-11-02
Show 7 moreShow less
OSVPYSEC-2026-2281 7.5

Starlette is a lightweight ASGI framework/toolkit. In versions 1.0.1 and earlier, StaticFiles on Windows is vulnerable to SSRF. An UNC path such as \attacker.com\share can cause os.path.realpath to initiate an outbound SMB connection before the path is rejected, exposing the service account’s NTLMv2 credentials for offline cracking or relay even though the HTTP response is only a 404. The issue affects default follow_symlink=False deployments, including frameworks built on Starlette such as FastAPI; POSIX systems and follow_symlink=True are unaffected. The issue is fixed in 1.1.0.

Record
PYSEC-2026-2281
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
Updated
2026-11-02
OSVUBUNTU-CVE-2026-48818 7.5

Starlette is a lightweight ASGI framework/toolkit. In versions 1.0.1 and earlier, StaticFiles on Windows is vulnerable to SSRF. An UNC path such as \attacker.com\share can cause os.path.realpath to initiate an outbound SMB connection before the path is rejected, exposing the service account’s NTLMv2 credentials for offline cracking or relay even though the HTTP response is only a 404. The issue affects default follow_symlink=False deployments, including frameworks built on Starlette such as FastAPI; POSIX systems and follow_symlink=True are unaffected. The issue is fixed in 1.1.0.

Record
UBUNTU-CVE-2026-48818
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
Updated
2026-11-02
OSVCLSA-2026-1782867588 No score

TuxCare security update for starlette (2 CVEs)

TuxCare rebuilt starlette to address 2 CVEs. Fixed in 0.27.0.post4+tuxcare.

Record
CLSA-2026-1782867588
Updated
2026-11-02
OSVCLSA-2026-1789447406 No score

TuxCare security update for starlette (8 CVEs)

TuxCare rebuilt starlette to address 8 CVEs. Fixed in 0.25.0.post1+tuxcare.

Record
CLSA-2026-1789447406
Updated
2026-11-02
OSVCLSA-2026-1789537996 No score

TuxCare security update for starlette (4 CVEs)

TuxCare rebuilt starlette to address 4 CVEs. Fixed in 0.13.6.post5+tuxcare.

Record
CLSA-2026-1789537996
Updated
2026-11-02
OSVopenSUSE-SU-2026:11572-1 No score

python313-graphifyy-0.9.48-1.1 on GA media

These are all security issues fixed in the python313-graphifyy-0.9.48-1.1 package on the GA media of openSUSE Tumbleweed.

Record
openSUSE-SU-2026:11572-1
Updated
2026-11-02
OSVROOT-APP-PYPI-CVE-2026-48818 No score

CVE-2026-48818 in starlette - Patched by Root

Root has patched CVE-2026-48818 in the starlette package for Root:PyPI. Multiple fixed versions available.

Record
ROOT-APP-PYPI-CVE-2026-48818
Updated
2026-11-02

Affected products

Affected packages

Affected packages
PackageAffectedFixed
starlette
PyPI
before 1.1.0
1.1.0
starlette
TuxCare:PyPI
From an advisory covering 2 CVEs
0.27.0 up to 0.27.0.post4+tuxcare, plus listed versions
0.27.0.post1+tuxcare0.27.0.post2+tuxcare0.27.0.post3+tuxcare
0.27.0.post4+tuxcare
starlette
TuxCare:PyPI
From an advisory covering 8 CVEs
0.25.0 up to 0.25.0.post1+tuxcare
0.25.0.post1+tuxcare
starlette
TuxCare:PyPI
From an advisory covering 4 CVEs
0.13.6 up to 0.13.6.post5+tuxcare, plus listed versions
0.13.6.post1+tuxcare0.13.6.post2+tuxcare0.13.6.post3+tuxcare0.13.6.post4+tuxcare
0.13.6.post5+tuxcare
starlette
PyPI
before 1.1.0, plus listed versions
0.1.00.1.10.1.100.1.110.1.12
Show 45 moreShow less
0.1.130.1.140.1.150.1.160.1.170.1.20.1.30.1.40.1.50.1.60.1.70.1.80.1.90.10.00.10.10.10.20.10.30.10.40.10.50.10.60.10.70.11.00.11.10.11.20.11.30.11.40.12.00.12.0b10.12.0b20.12.0b30.12.10.12.100.12.110.12.120.12.130.12.20.12.30.12.40.12.50.12.60.12.70.12.80.12.90.13.00.13.1
1.1.0
starlette
Root:PyPI
before 0.27.0+aikido.11
0.27.0+aikido.110.22.0+aikido.71.0.0+aikido.10.41.3+aikido.50.41.3+aikido.60.49.3+aikido.30.46.2+aikido.61.0.1+aikido.10.45.3+aikido.130.52.1+aikido.20.49.1+aikido.20.50.0+aikido.10.49.2+aikido.30.50.0+aikido.20.45.3+aikido.140.49.3+aikido.40.49.2+aikido.40.41.3+aikido.70.46.2+aikido.70.52.1+aikido.31.0.0+aikido.21.0.1+aikido.20.22.0+aikido.50.49.1+aikido.31.0.0+aikido.30.45.3+aikido.150.50.0+aikido.30.22.0+aikido.60.27.0+aikido.10
starlette
Ubuntu:22.04:LTS
All versions, plus listed versions
0.14.1-10.16.0-10.18.0-1
None known
starlette
Ubuntu:24.04:LTS
All versions, plus listed versions
0.30.0-10.31.1-1
None known
starlette
Ubuntu:25.10
All versions, plus listed versions
0.46.1-20.46.1-3
None known
starlette
Ubuntu:26.10
All versions, plus listed versions
0.50.0-11.1.0-11.3.1-11.7.0-2
None known
starlette
Ubuntu:26.04:LTS
All versions, plus listed versions
0.46.1-30.50.0-1
None known
python-graphifyy
openSUSE:Tumbleweed
before 0.9.48-1.1
0.9.48-1.1

History

History
RecordedChangedSources
affected, facts
first indexedCVE List, EUVD, GitHub Advisories, NVD, OSV

Dates are when Every CVE recorded each change. Upstream dates may differ.

In short

CVE-2026-48818 is a high vulnerability (CVSS 7.5) in Encode Starlette, published June 15, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.37%, the 30th percentile. Fixed in starlette 1.1.0.

References

Show 12 moreShow less
This page doesn't list everything

Left out here: 142 versions. The JSON record has them.

MoveEnter Open