CVE-2026-107685 json
WebSocket sessions do not verify TLS certificates, exposing API keys and OAuth tokens to on-path attackers
published 2026-10-23 16 d ago modified 2026-11-02 6 d ago also EEF-CVE-2026-107685 , GHSA-6vww-5m28-f26v , EUVD-2026-108709
- cvss
- 9.1
- version 4.0, CNA
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 0.3%
- EPSS 0.3% chance of exploitation in 30 days, percentile 19%
- public exploits
- 0
- none known
Summary
Improper Certificate Validation vulnerability in the WebSocket streaming client in agentjido req_llm allows an on-path attacker to read and modify OpenAI WebSocket sessions, including the authorization bearer token, via a TLS certificate the client does not trust. ReqLLM.Streaming.WebSocketSession.Client.start/3 in lib/req_llm/streaming/web_socket_session/client.ex starts WebSockex without TLS options, and WebSockex defaults to insecure: true, which connects with verify: :verify_none. The option allowlist also drops any caller-supplied cacerts or ssl_options, so an application cannot turn verification on.
The OpenAI Responses, Realtime, and Codex WebSocket paths reach this client and send the API key or OAuth access token in the authorization header. HTTP streaming through Finch and the HTTP/2 duplex session through Mint verify certificates and are not affected.
This issue affects req_llm: from 1.9.0 before 1.29.0.
Patch / fix
- hex req_llm 1.29.0
- agentjido req_llm 1.29.0
CISA SSVC
- Exploitation
- Proof of concept is public
- Automatable
- no
- Technical impact
- total
- Assessed
- 6 d ago
Exploit prediction
0.27% chance of exploitation in the next 30 days, higher than 19% of all scored CVEs (FIRST EPSS, 2026-11-08).
Exploits and checks
- github.com https://github.com/agentjido/req_llm/security/advisories/GHSA-6vww-5m28-f26v referenced PoC, tagged "exploit" by a source, unverified
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| CNA | 4.0 | 9.1 | CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N |
| CNA | 4.0 | 9.1 | CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X |
Affected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| hex | req_llm | >=1.9.0, <1.29.0 |
1.29.0 |
Affected products
- agentjido req_llm
Classification
- Weakness
-
- CWE-295 Improper Certificate Validation
References
-
github.com
/agentjido/req_llm/commit/a389d718640ceb2d541a8f540ab954cbf5ef8313
related, web
-
github.com
/agentjido/req_llm/commit/c7264fc0217fbacfb5562234ff790b8e4462de76
patch
-
github.com
/agentjido/req_llm/security/advisories/GHSA-6vww-5m28-f26v
vendor-advisory, related, exploit, advisory
-
cna.erlef.org
/cves/CVE-2026-107685.html
related, web
-
osv.dev
/vulnerability/EEF-CVE-2026-107685
related
-
hex.pm
/packages/req_llm
package
Sources
- CVE List CVE-2026-107685
- NVD CVE-2026-107685
- OSV EEF-CVE-2026-107685
Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.