← All advisories
CVE-2026-107685criticalSecret exposure2026-10-22

CVE-2026-107685: ReqLLM's OpenAI WebSocket sessions skip TLS checks and can leak API keys

ReqLLM, an Elixir library for calling LLM APIs, didn't verify TLS certificates on its WebSocket connections from 1.9.0 through 1.28.0. An attacker on the network path can read the OpenAI API key or OAuth token in the authorization header and read or change prompts, responses and tool calls. Fixed in 1.29.0.

01.

What it is

ReqLLM.Streaming.WebSocketSession.Client.start/3 started WebSockex without TLS options. WebSockex 0.5.1 defaults to insecure: true, which means verify: :verify_none, and ReqLLM's option allowlist dropped any cacerts or ssl_options a caller passed, so apps couldn't turn verification on.

The affected paths are OpenAI Responses WebSocket sessions, OpenAI Realtime sessions and OpenAI Codex WebSocket sessions, which send the API key or OAuth access token in the authorization header.

An attacker needs an on-path position, such as hostile Wi-Fi, a compromised network, or DNS or BGP interference. They can then steal the token and alter model output and tool calls before your app sees them. HTTP streaming through Finch and HTTP/2 through Mint verify certificates and aren't affected.

02.

How to check

  1. Affected: req_llm (Hex) 1.9.0 through 1.28.0.
  2. You are exposed if your app uses ReqLLM's OpenAI Responses, Realtime or Codex WebSocket features.
03.

How to fix

  1. Upgrade req_llm to 1.29.0 or later, which verifies the peer and hostname using the system certificate store and fails closed if it isn't available.
  2. If you can't upgrade, stop using the WebSocket paths and use HTTP streaming. Consider rotating OpenAI keys or tokens that were used over untrusted networks.
mix deps | grep req_llm
04.

Sources

More advisories for this tool
The weekly email

One email a week. Only what changed.

Every new security hole in AI coding tools, MCP servers, app builders and the stacks they generate (Next.js, Supabase, Node, PHP), each with how to check your app and the fix. No roundups of things you already read.

Free, one email a week. Read the latest issue first if you like. One-click unsubscribe in every email. We never sell or share addresses.