Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
Strumenti/GitHubGitHub/hunt-benito/zephyr-lwm2m-firmware-update-oob-read-cve-2026-10672-truncated-package-uri
Sicurezza Sistemi EmbeddedSicurezza IoTAnalisi delle VulnerabilitàExploitFuzzingPaper e RicercaApprendimento e FormazioneBinary Exploitation

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
GitHub
hunt-benito/zephyr-lwm2m-firmware-update-oob-read-cve-2026-10672-truncated-package-uri

zephyr-lwm2m-firmware-update-oob-read-cve-2026-10672-truncated-package-uri

Exploit proof-of-concept per CVE-2026-10672, una lettura fuori dai limiti nel client pull di aggiornamento firmware LwM2M di Zephyr RTOS. Include una riproduzione C standalone e un server CoAP/LwM2M dannoso per i test.

Vedi Repository
1 mese faNon ancora revisionato

CVE-2026-10672 — PoC per lettura fuori dai limiti (OOB Read) nell'aggiornamento firmware LwM2M di Zephyr

Proof of concept per CVE-2026-10672, una lettura fuori dai limiti (out-of-bounds read) nel client di pull per l'aggiornamento firmware LwM2M di Zephyr RTOS (subsys/net/lib/lwm2m/lwm2m_pull_context.c).

Vulnerabilità

  • CVE: CVE-2026-10672
  • CVSS: 8.2 Alto (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:L)
  • CWE: CWE-125 (Lettura fuori dai limiti)
  • Componente: lwm2m_pull_context_start_transfer() in lwm2m_pull_context.c
  • Causa principale: memcpy(context.uri, uri, LWM2M_PACKAGE_URI_LEN) copia esattamente 128 byte in char uri[128] senza terminatore NUL quando l'URI del pacchetto fornito dal server (/5/0/1) è ≥ 128 byte. Le successive strlen(context.uri), http_parser_parse_url() e l'opzione CoAP PROXY_URI leggono oltre il buffer nella memoria adiacente della struct (is_firmware_uri, i puntatori a funzione result_cb / write_cb e il contesto di connessione DTLS). I byte letti oltre i limiti vengono esfiltrati nella richiesta CoAP in uscita.
  • Buffer: context.uri[128] (CONFIG_LWM2M_SWMGMT_PACKAGE_URI_LEN, default 128; LWM2M_PACKAGE_URI_LEN è definita con #define a tale valore)
  • Versioni vulnerabili: da Zephyr v3.0.0 a v4.4.0 (il refactor del pull-context che ha introdotto la copia è stato distribuito per la prima volta in v3.0.0)
  • Corretto in: Zephyr v4.4.1 e v4.3.1
  • Commit di correzione: 99a164df5cea5af76e32b57c6d51854f018969a2 — aggiunge strlen(uri) >= sizeof(context.uri) → -ENOMEM e passa a strcpy().

Contenuti

FileScopo
poc.c

Compilazione ed esecuzione della riproduzione C

root@kitploit:~
gcc -O0 -g -o poc poc.c
./poc

Previsto: un URI del pacchetto di 200 byte produce un'opzione CoAP PROXY_URI di 141 byte — l'URI di 128 byte più 13 byte persi (leaked) da context.is_firmware_uri, dal padding della struct e dai puntatori a funzione result_cb/write_cb. Il percorso di codice corretto rifiuta l'URI con -ENOMEM e non copia nulla.

Conferma con ASan

root@kitploit:~
gcc -O0 -g -fsanitize=address -o poc-asan poc.c
./poc-asan

La sonda alloca esattamente 128 byte, li riempie con byte non NUL (rispecchiando un context.uri completo senza terminatore) e chiama strlen():

root@kitploit:~
ERROR: AddressSanitizer: heap-buffer-overflow
READ of size 129 at 0x...
0x... is located 0 bytes after 128-byte region [...,0x...)

Eseguire il server LwM2M malintenzionato

root@kitploit:~
# Build and inspect the CoAP packets without sending:
python3 lwm2m_evil_server.py --dry-run --uri-len 200

# Send to a vulnerable client (NoSec CoAP, UDP/5683):
python3 lwm2m_evil_server.py --target 10.0.0.42 --port 5683 --uri-len 200 --listen 2

Lo script invia una PUT CoAP /5/0/1 (scrittura LwM2M della risorsa Package URI) seguita da una POST CoAP /5/0/2 (esecuzione LwM2M di Update, che avvia il pull del firmware e innesca il bug). In produzione la sessione LwM2M avviene su DTLS (UDP/5684); l'attaccante in questione è un server di gestione malintenzionato o compromesso, oppure un avversario sul percorso (on-path) quando l'autenticazione del server DTLS non è applicata.

Articolo completo

https://www.hunt-benito.com/blog/zephyr-lwm2m-firmware-update-oob-read-cve-2026-10672-truncated-package-uri/

Dichiarazione di esclusione di responsabilità

Solo per ricerca di sicurezza autorizzata e scopi educativi. Non utilizzare questi strumenti contro dispositivi che non possiedi o per i quali non hai esplicito permesso di test.

Scarica lo strumento
Riproduzione C autonoma dei percorsi di codice vulnerabile/corretto. Ridichiara fedelmente struct firmware_pull_context (il buffer uri[128] più i campi adiacenti che subiscono la lettura oltre i limiti) e il consumer CoAP PROXY_URI che perde dati.
lwm2m_evil_server.pyServer CoAP/LwM2M minimale che fornisce l'URI del pacchetto sovradimensionato a /5/0/1 di un client vulnerabile su UDP (modalità NoSec) — la parte di consegna di rete dell'attacco. Nessuna dipendenza esterna.