davenardella snap7 fino a 1.4.3 ReadVar Request src/core/s7_server.cpp PerformFunctionRead buffer overflow

CVSS Punteggio meta temporaneoPrezzo attuale dell'exploit (≈)Punteggio di interesse CTI
6.0$0-$5k0.00

Riassuntoinformazioni

Un punto critico di livello critico è stato rilevato in davenardella snap7 fino a 1.4.3. Risulta coinvolta una funzione sconosciuta del file src/core/s7_server.cpp del componente ReadVar Request Handler. Per causa della manipolazione di un input sconosciuto se causa una vulnerabilità di classe buffer overflow. Questa vulnerabilità è registrata come CVE-2026-15105. Selezionare la rete locale come vettore di attacco. Inoltre, è presente un exploit disponibile.

Dettagliinformazioni

Un punto di debole di livello critico è stato rilevato in davenardella snap7 fino a 1.4.3. Da questa vulnerabilità è interessato la funzione TS7Worker::PerformFunctionRead del file src/core/s7_server.cpp del componente ReadVar Request Handler. Attraverso la manipolazione di un input sconosciuto conseguenza di una vulerabilità di classe buffer overflow. Questo agisce su riservatezza, integrità e disponibilità.

La vulnerabilità è stata pubblicata in data da Chuan Wei (CarnegieMe) con identificazione 16 con un issue (GitHub) (non definito). L'advisory è scaricabile da github.com. La pubblicazione non è avvenuta in collaborazione con la ditta produttrice. CVE-2026-15105 è identificato come punto debole. È facile da usare. L'attacco può avvenire nelle rete locale. Nessuna autentificazione è richiesta per l'uso. I dettagli tecnici e un pubblico metodo di utilizzo sono conosciuti.

Un metodo di utilizzo è stato sviluppato da Chuan Wei (CarnegieMe) in Python. L'exploit è scaricabile da github.com. È stato dichiarato come prova di concetto. Un plugin è disponibile per lo scanner Nessus, numero ID 326078 (Linux Distros Unpatched Vulnerability : CVE-2026-15105), che può aiutare a determinare l'esistenza della criticità nel sistema analizzato.

Informazioni riguardo una possibile contromisura non sono al momento disponibili. Si suggerisce di sostituire il prodotto con uno equivalente.

La vulnerabilità è documentata anche nel database Tenable (326078) e EUVD (EUVD-2026-42468). If you want to get best quality of vulnerability data, you may have to visit VulDB.

Prodottoinformazioni

Fornitore

Nome

Versione

Sito web

CPE 2.3informazioni

CPE 2.2informazioni

CVSSv4informazioni

VulDB Vettore: 🔒
VulDB Affidabilità: 🔍

CNA CVSS-B Score: 🔒
CNA CVSS-BT Score: 🔒
CNA Vettore: 🔒

CVSSv3informazioni

VulDB Punteggio meta-base: 6.3
VulDB Punteggio meta temporaneo: 6.0

VulDB Punteggio di base: 6.3
VulDB Punteggio temporaneo: 5.7
VulDB Vettore: 🔒
VulDB Affidabilità: 🔍

CNA Punteggio di base: 6.3
CNA Vettore: 🔒

CVSSv2informazioni

AVACAuCIA
💳💳💳💳💳💳
💳💳💳💳💳💳
💳💳💳💳💳💳
VettoreComplessitàAutenticazioneRiservatezzaIntegritàDisponibilità
SbloccareSbloccareSbloccareSbloccareSbloccareSbloccare
SbloccareSbloccareSbloccareSbloccareSbloccareSbloccare
SbloccareSbloccareSbloccareSbloccareSbloccareSbloccare

VulDB Punteggio di base: 🔒
VulDB Punteggio temporaneo: 🔒
VulDB Affidabilità: 🔍

Sfruttamentoinformazioni

Classe: Buffer overflow
CWE: CWE-787 / CWE-119
CAPEC: 🔒
ATT&CK: 🔒

Fisico: No
Locale: No
Remoto: Parzialmente

Disponibilità: 🔒
Accesso: Pubblico
Stato: Prova di concetto
Autore: Chuan Wei (CarnegieMe)
Linguaggio di programmazione: 🔒
Scaricare: 🔒

EPSS Score: 🔒
EPSS Percentile: 🔒

Previsione dei prezzi: 🔍
Preventivo attuale: 🔒

0-DaySbloccareSbloccareSbloccareSbloccare
OggiSbloccareSbloccareSbloccareSbloccare

Nessus ID: 326078
Nessus Nome: Linux Distros Unpatched Vulnerability : CVE-2026-15105

Intelligence sulle minacceinformazioni

Interesse: 🔍
Attori attivi: 🔍
Gruppi APT attivi: 🔍

Contromisureinformazioni

Raccomandazione: nessuna contromisura conosciuta
Stato: 🔍

Tempo 0 giorni: 🔒

Sequenza temporaleinformazioni

08/07/2026 Advisory pubblicato
08/07/2026 +0 giorni Voce VulDB creata
02/08/2026 +24 giorni Ultimo aggiornamento VulDB

Fontiinformazioni

Prodotto: github.com

Avis: 16
Ricercatore: Chuan Wei (CarnegieMe)
Stato: Non definito

CVE: CVE-2026-15105 (🔒)
GCVE (CVE): GCVE-0-2026-15105
GCVE (VulDB): GCVE-100-376946
EUVD: 🔒
scip Labs: https://www.scip.ch/en/?labs.20161013

Voceinformazioni

Data di creazione: 08/07/2026 19:12
Aggiornato: 02/08/2026 00:23
Cambiamenti: 08/07/2026 19:12 (58), 09/07/2026 05:30 (11), 10/07/2026 15:12 (2), 01/08/2026 17:00 (2), 01/08/2026 20:16 (1), 02/08/2026 00:23 (31)
Completa: 🔍
Inviato: VULL
Committer: VULL
Cache ID: 216::103

Inviainformazioni

Accettato

  • Invia #851026: Davide Nardella Snap7 master(commit:30f37da3114024a71ba93f7fd855c680b97a406f) Stack-based Buffer Overflow (di VULL)

If you want to get best quality of vulnerability data, you may have to visit VulDB.

Discussione

 mayur021
(+0)
21 giorni fa
On the mechanism behind this entry, verified against 1.4.3 at commit 30f37da.

The entry classifies this as deserialization (CWE-502), and the summary reads "the manipulation with an unknown input leads to a deserialization vulnerability". Nothing on this path deserializes anything. The defect is a failed bounds check caused by an unsigned comparison.

In TS7Worker::ReadArea (src/core/s7_server.cpp) the guard is:

if (PDURemainder-Size<=0)
return RA_SizeOverPDU(ResItemData, EV);
else
PDURemainder-=Size;

Size is declared longword, which is uint32_t (snap_platform.h:119), while PDURemainder is int. In PDURemainder-Size the usual arithmetic conversions promote PDURemainder to unsigned, so the expression can never be <= 0 except on exact equality, and the per-PDU bound never fires.

Instrumenting PerformFunctionRead at FPDULength 480 with 20 items of 201 bytes shows PDURemainder running 279, 78, -123, -324 and on to -3339 while every item is still accepted, and Offset climbing to 3916. The overflow is the response assembly walking past the end of the stack-allocated TS7Answer23 Answer buffer.

So the accurate classification is an out-of-bounds write arising from an integer conversion defect, CWE-787 with CWE-191 as the root, rather than CWE-502. Worth noting that the accepted submit behind this entry is itself titled "Stack-based Buffer Overflow", so the record is already inconsistent with its own source.

Upstream issue 16 attributes the cause to an accounting mismatch between ReadArea and PerformFunctionRead, where the first charges PDURemainder only the raw data length while the second advances Offset by data plus a 4 byte per-item header plus padding. That mismatch is real but accounts for roughly 100 bytes across 20 items, which is not enough to leave the buffer on its own. The signedness defect is what removes the bound entirely.

Interested in the pricing of exploits?

See the underground prices here!