Skip to main content

CVE-2026-123119sensiolabs symfony time-of-check to time-of-use race

Low priorityLow2.3EPSS 0.23%, higher than 14% of scored CVEs

CVE-2026-123119 is a time-of-check to time-of-use race in sensiolabs symfony, rated low (2.3 on CVSS 4.0).

Why this priority: Low severity, with no exploitation signal.

Published · Updated · NVD status: Awaiting Analysis

What it is

Something is checked, then changed by an attacker before it is used. The server can be made to fetch an address of the attacker's choosing, including internal services and cloud metadata endpoints.

How it is reached

An attacker can exploit it over the network, with an ordinary user account, and nobody has to click anything. Success also depends on conditions the attacker does not fully control.

What an attacker gains

The scored direct impact on the component itself is low. In practice, this kind of flaw lets an attacker win a timing window to bypass a check or corrupt shared state. The damage can spread past the vulnerable component into others.

Is it being exploited?

There is no public report of exploitation yet. EPSS estimates a 0.23% chance of exploitation activity in the next 30 days, higher than 14% of scored CVEs.

What to do

  1. No fixed version is listed yet. Find every place sensiolabs symfony runs, watch the references for a fix, and plan a replacement if it is no longer supported.
  2. While there is no fix, review who holds accounts that can reach it.

Description from NVD

The Symfony HttpClient component NoPrivateNetworkHttpClient does not pin the checked IP address of cached hosts, allowing for DNS rebinding to bypass private network restrictions, resulting in enumeration of internal hosts and ports in Symfony versions prior to 5.4.56, 6.x prior to 6.4.50, 7.x prior to 7.4.23, and 8.x prior to 8.1.11.

NoPrivateNetworkHttpClient resolves the host of each request and checks the IP before connecting. It caches the result per host, and passes the IP to the decorated client through the resolve option so that the client connects to the exact IP that was checked. The issue is that resolve was only passed on the first lookup of a host: on subsequent requests, the decorated client resolved the host again on its own.

An attacker who controls a host's DNS can exploit this with DNS rebinding by answering the first lookup with a public IP, and subsequent lookups with a private IP, so when an application sends several requests to that host through the same client, the later requests connect to the private IP. This happens, for example, when an application fetches several URLs of a repository provided by a user. The check of the primary_ip in the on_progress callback still aborts the request before anything is sent, but the connection is made, and the error differs depending on whether the port is open or closed. This allows enumerating internal hosts and ports, as in CVE-2024-50342.

What this means for your architecture.

A CVE names a product. Whether it matters depends on where that product sits in your systems: what reaches it, which trust boundary it guards and what it can reach once compromised. Veriom maps your components, their relationships and your trust boundaries from your code, cloud and delivery evidence, so you can see where a component like this sits. The radar itself does not look at your systems.

Components it touches

  • Request handlers and jobs that share state. The flaw sits between concurrent requests or processes.
  • Services that fetch URLs or call other hosts for a caller. The flaw sits between the application and the internal network behind it.

Trust boundaries in play

  • Authenticated network access. An account is needed, so exposure follows who can sign in: customers, partners or staff.
  • Isolation between components. The impact crosses out of the vulnerable component into others it should be isolated from.
  • Between concurrent requests or processes. An attacker who crosses it can win a timing window to bypass a check or corrupt shared state.
  • Between the application and the internal network behind it. An attacker who crosses it can make the server send requests into internal networks or cloud metadata.

Questions to answer about your own systems

  • Where does sensiolabs symfony run in your systems, and at which version?
  • Which of those instances can be reached from the internet or partner networks?
  • What can it reach once compromised: which data stores, secrets and services?

Sources

  • CVE records and CVSS scores from the NVD CVE API. This product uses the NVD API but is not endorsed or certified by the NVD.
  • Exploitation status from CISA’s Known Exploited Vulnerabilities catalog.
  • Exploit likelihood from FIRST’s Exploit Prediction Scoring System (EPSS), refreshed daily.
  • Explanations are written by Veriom from fixed templates over each record’s data, not by a person reviewing each CVE. Descriptions are quoted from the records as published.