Streamlit: SSRF leaks NTLMv2 creds via UNC path
Windows-based Streamlit deployments below 1.54.0 allow adjacent-network attackers to harvest NTLMv2 credentials without authentication by submitting a crafted UNC path to the ComponentRequestHandler. Captured hashes enable NTLM relay attacks against other internal services, making this a lateral movement risk in enterprise ML environments. Patch to 1.54.0 immediately and block outbound SMB (port 445) from all Streamlit hosts as an interim control.
Affected Systems
| Package | Ecosystem | Vulnerable Range | Patched |
|---|---|---|---|
| Streamlit | pip | < 1.54.0 | 1.54.0 |
Do you use Streamlit? You're affected.
Severity & Risk
Recommended Action
- 1. Patch: Upgrade Streamlit to 1.54.0 or later immediately.
- 2. Network control: Block outbound SMB (TCP/UDP 445) and NetBIOS (137-139) from all hosts running Streamlit.
- 3. SMB signing: Enable mandatory SMB signing on all Windows hosts to neutralize NTLM relay attacks even if credentials are captured.
- 4. Least privilege: Ensure Streamlit runs as a low-privileged local service account, not a domain account or local admin.
- 5. Detection: Monitor for unexpected outbound port 445 connections from Streamlit hosts; alert on connections to unfamiliar internal IPs.
- 6. NTLM hardening: Enforce Extended Protection for Authentication (EPA) and consider disabling NTLMv2 in favor of Kerberos where feasible.
Classification
Compliance Impact
This CVE is relevant to:
Technical Details
NVD Description
Streamlit is a data oriented application development framework for python. Streamlit Open Source versions prior to 1.54.0 running on Windows hosts have an unauthenticated Server-Side Request Forgery (SSRF) vulnerability. The vulnerability arises from improper validation of attacker-supplied filesystem paths. In certain code paths, including within the `ComponentRequestHandler`, filesystem paths are resolved using `os.path.realpath()` or `Path.resolve()` before sufficient validation occurs. On Windows systems, supplying a malicious UNC path (e.g., `\\attacker-controlled-host\share`) can cause the Streamlit server to initiate outbound SMB connections over port 445. When Windows attempts to authenticate to the remote SMB server, NTLMv2 challenge-response credentials of the Windows user running the Streamlit process may be transmitted. This behavior may allow an attacker to perform NTLM relay attacks against other internal services and/or identify internally reachable SMB hosts via timing analysis. The vulnerability has been fixed in Streamlit Open Source version 1.54.0.
Exploitation Scenario
An attacker with access to the same internal network segment as a Windows Streamlit server—e.g., a malicious insider, a compromised workstation, or an attacker who has already pivoted into the environment—sets up a rogue SMB server using Responder. They submit a crafted HTTP request to the Streamlit ComponentRequestHandler containing a UNC path (e.g., \\attacker-ip\share) as a filesystem parameter. Streamlit calls os.path.realpath() on the input before validation, causing the Windows host to initiate an SMB connection to the attacker's server. Windows performs NTLMv2 authentication, transmitting the credential hash of the Streamlit service account. The attacker captures the hash and relays it via Impacket's ntlmrelayx to authenticate against another internal service—Active Directory, SQL Server, or a file share—without knowing the plaintext password, achieving lateral movement across the ML infrastructure.
Weaknesses (CWE)
CVSS Vector
CVSS:3.1/AV:A/AC:H/PR:N/UI:N/S:C/C:L/I:L/A:N References
- github.com/advisories/GHSA-7p48-42j8-8846
- github.com/streamlit/streamlit/commit/23692ca70b2f2ac720c72d1feb4f190c9d6eed76
- github.com/streamlit/streamlit/releases/tag/1.54.0
- github.com/streamlit/streamlit/security/advisories/GHSA-7p48-42j8-8846
- nvd.nist.gov/vuln/detail/CVE-2026-33682
- github.com/streamlit/streamlit/commit/23692ca70b2f2ac720c72d1feb4f190c9d6eed76
- github.com/streamlit/streamlit/commit/23692ca70b2f2ac720c72d1feb4f190c9d6eed76
- github.com/streamlit/streamlit/commit/23692ca70b2f2ac720c72d1feb4f190c9d6eed76
- github.com/streamlit/streamlit/releases/tag/1.54.0
- github.com/streamlit/streamlit/releases/tag/1.54.0
- github.com/streamlit/streamlit/releases/tag/1.54.0
- github.com/streamlit/streamlit/security/advisories/GHSA-7p48-42j8-8846
- github.com/streamlit/streamlit/security/advisories/GHSA-7p48-42j8-8846
- github.com/streamlit/streamlit/security/advisories/GHSA-7p48-42j8-8846
AI Threat Alert