davenardella snap7 fino a 1.4.3 ReadVar Request src/core/s7_server.cpp PerformFunctionRead buffer overflow
| CVSS Punteggio meta temporaneo | Prezzo attuale dell'exploit (≈) | Punteggio di interesse CTI |
|---|---|---|
| 6.0 | $0-$5k | 0.00 |
Riassunto
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.
Dettagli
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.
Prodotto
Fornitore
Nome
Versione
Sito web
- Prodotto: https://github.com/davenardella/snap7/
CPE 2.3
CPE 2.2
CVSSv4
VulDB Vettore: 🔒VulDB Affidabilità: 🔍
CNA CVSS-B Score: 🔒
CNA CVSS-BT Score: 🔒
CNA Vettore: 🔒
CVSSv3
VulDB Punteggio meta-base: 6.3VulDB 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: 🔒
CVSSv2
| AV | AC | Au | C | I | A |
|---|---|---|---|---|---|
| 💳 | 💳 | 💳 | 💳 | 💳 | 💳 |
| 💳 | 💳 | 💳 | 💳 | 💳 | 💳 |
| 💳 | 💳 | 💳 | 💳 | 💳 | 💳 |
| Vettore | Complessità | Autenticazione | Riservatezza | Integrità | Disponibilità |
|---|---|---|---|---|---|
| Sbloccare | Sbloccare | Sbloccare | Sbloccare | Sbloccare | Sbloccare |
| Sbloccare | Sbloccare | Sbloccare | Sbloccare | Sbloccare | Sbloccare |
| Sbloccare | Sbloccare | Sbloccare | Sbloccare | Sbloccare | Sbloccare |
VulDB Punteggio di base: 🔒
VulDB Punteggio temporaneo: 🔒
VulDB Affidabilità: 🔍
Sfruttamento
Classe: Buffer overflowCWE: 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-Day | Sbloccare | Sbloccare | Sbloccare | Sbloccare |
|---|---|---|---|---|
| Oggi | Sbloccare | Sbloccare | Sbloccare | Sbloccare |
Nessus ID: 326078
Nessus Nome: Linux Distros Unpatched Vulnerability : CVE-2026-15105
Intelligence sulle minacce
Interesse: 🔍Attori attivi: 🔍
Gruppi APT attivi: 🔍
Contromisure
Raccomandazione: nessuna contromisura conosciutaStato: 🔍
Tempo 0 giorni: 🔒
Sequenza temporale
08/07/2026 Advisory pubblicato08/07/2026 Voce VulDB creata
02/08/2026 Ultimo aggiornamento VulDB
Fonti
Prodotto: github.comAvis: 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
Voce
Data di creazione: 08/07/2026 19:12Aggiornato: 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
Invia
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.
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.