Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
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.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
sonic-gnmi-noauth — Documenta e riproduce una vulnerabilità di autenticazione fail-open in SONiC gNMI, dove una mappa UserAuth vuota consente scritture gNMI Set e gNOI non autenticate, con un ambiente di laboratorio su loopback. | Kitploit
Strumenti/GitHubGitHub/abraxas/sonic-gnmi-noauth
Sicurezza Sistemi EmbeddedAnalisi delle VulnerabilitàExploitSicurezza di RetePenetration TestingSicurezza Hardware e IoTAutenticazioneConfigurazione ErrataLab e Pratica
GitHubabraxas/sonic-gnmi-noauth

sonic-gnmi-noauth

Documenta e riproduce una vulnerabilità di autenticazione fail-open in SONiC gNMI, dove una mappa UserAuth vuota consente scritture gNMI Set e gNOI non autenticate, con un ambiente di laboratorio su loopback.

715 giorni faNon ancora revisionato

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
Vedi Repository

Abraxas Labs - sonic-gnmi-noauth

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  sonic-gnmi-noauth

sonic-gnmi-noauth

SONiC gNMI f13a08e0440f - SONiC Foundation / sonic-net

NOS SONiC della community. Non Dell Enterprise SONiC. Non SonicWall SonicOS. Il comitato non rilascia CVE. gnmi-native.sh sa che omettere --client_auth disabilitava completamente l'autenticazione, quindi quando manca user_auth forza la modalità cert. Fail-closed. Poi non passa mai --ca_crt quando i certificati sono assenti. setupFlags disattiva il cert perché non c'è una CA. authenticate() considera la mappa vuota come successo. Le scritture native e translib restano compilate (ENABLE_NATIVE_WRITE=y). Due set di flag di produzione, stesso skip: ToR predefinito --noTLS --bind_address 127.0.0.1; SmartSwitch DPU --insecure --allow_no_client_auth, bind vuoto, tutte le interfacce, porta 8080.

UserAuth vuoto dopo la disattivazione del cert equivale a gNMI Set e scritture gNOI non autenticati. La DPU senza certificati è remota su :8080.

IDnessuna CVE al momento
CWECWE-306, CWE-287
CVSSCritico: 9.8 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H (DPU senza cert). Il ToR predefinito ha lo stesso skip su 127.0.0.1:8080 (Alto, locale).
Prodottosonic-gnmi / sonic-buildimage
Affettosonic-gnmi fino a master f13a08e0440f; launcher 9495839742e4
Authnon autenticato
LicenzaGNU Affero GPL v3.0
Labsolo 127.0.0.1

Cosa può fare un attaccante

Su una SmartSwitch DPU senza certificati gNMI: dalla rete, TCP :8080, nessun JWT, nessun PAM, nessun certificato client. Chiama gnmi.gNMI/Set (CONFIG_DB nativo / translib). Chiama gnoi.debug.Debug. Riavvia. Factory reset. File.Put sotto /tmp, /var/tmp, /host.

Su un ToR/leaf predefinito senza certificati: qualsiasi processo che riesce a raggiungere 127.0.0.1:8080 fa lo stesso. Il container gnmi è in host net, quindi quel loopback è quello dell'host.

Ovvero riscrittura della configurazione dello switch, ed esecuzione di comandi sull'host come admin, senza autenticarsi. La whitelist di Debug include docker, config, redis-cli, sonic-installer, reboot. L'admin predefinito è in docker e %sudo. Non la password admin predefinita documentata. KillProcess restituisce comunque Unauthenticated con UserAuth vuoto. Non usarlo come oracolo di successo.

Come l'ho trovato

Ho letto prima SECURITY.md. sonic-net/SONiC è la wiki. Il codice sono gli alberi fratelli sonic-net/*. Poi dieci ricerche su quei pin: CLI injection, REST auth, gNMI Set, hostcfgd PAM, RESTCONF, ZTP, immagine Redis/sshd/sudo, default FEATURE, GCU/SSTI, DHCP/LLDP/SNMP. Nessuno switch reale. La soglia era Critico/Alto.

Gran parte di quella soglia è già chiusa o non predefinita. sonic-restapi è INCLUDE_RESTAPI ?= n. Il launcher di produzione di RESTCONF forza PAM. Redis sull'host è 127.0.0.1 senza requirepass, che è un primo hop, non un finding. Il container gnmi non è opzionale. INCLUDE_SYSTEM_GNMI = y. La FEATURE gnmi è abilitata. Host net, host pid, host userns.

Non ho avviato un'immagine sonic-vs completa. Il lab è un thin gRPC che incapsula estratti verificati con SHA256 di setupFlags e authenticate() dal pin f13a08e0440f. Entrambi i listener hanno restituito SONIC-GNMI-NOAUTH-WITNESS con auth_enabled=false e enable_native_write=true. UserAuth con password e senza credenziali è Unauthenticated. Questo è lo skip reale, non uno stub che riesce sempre.

Vicoli ciechi già registrati: KillProcess Unauthenticated (quella RPC rifiuta già UserAuth vuoto - il lab richiede lo skip di authenticate() sul percorso Set); Probe OK quando UserAuth con password è attivo e non ci sono credenziali (allora l'oracolo è uno stub); un gadget docker di gNOI Debug, payload nsenter, reverse shell. Teatro. Puntare questo a una macchina Dell Enterprise SONiC, o a una SonicWall. Prodotto sbagliato.

Lab

cd lab
./run.sh

Target solo 127.0.0.1:18080 (ToR in chiaro) e 127.0.0.1:18081 (DPU TLS-insecure). Thin gRPC, non un'immagine DPU completa. Estratti dei pin con hash in fase di build rispetto a sonic-gnmi f13a08e0440f.

IOC tor-connect 127.0.0.1:18080 plaintext no-metadata
IOC tor-check witness=SONIC-GNMI-NOAUTH-WITNESS auth_enabled=false enable_native_write=true user_auth_any=false mode=tor
IOC dpu-connect 127.0.0.1:18081 tls-insecure no-client-cert no-metadata
IOC dpu-check witness=SONIC-GNMI-NOAUTH-WITNESS auth_enabled=false enable_native_write=true user_auth_any=false mode=dpu
IOC tor-negative status=UNAUTHENTICATED
IOC dpu-negative status=UNAUTHENTICATED
SUCCESS SONIC-GNMI-NOAUTH who=unauth tor=18080 dpu=18081 SONIC-GNMI-NOAUTH-WITNESS

La correzione

Se UserAuth è vuoto dopo aver rimosso il cert, non servire Set/scritture gNOI, oppure non ascoltare fuori dal loopback. Copiare UserAuth anche sul percorso --noTLS. Fornire certificati server e una CA in modo che --ca_crt sia impostato e la modalità cert non venga disattivata. Non eseguire la SmartSwitch DPU senza cert (--insecure --allow_no_client_auth con CA vuota) su una :8080 raggiungibile. Entrambi i listener devono restituire Unauthenticated per UserAuth vuoto sul percorso di scrittura.

Riferimenti

  • sonic-gnmi f13a08e0440f · telemetry.go · server.go · whitelist.go · command.go
  • sonic-buildimage 9495839742e4 · gnmi-native.sh · rules/config · init_cfg.json.j2
  • SECURITY.md
  • CWE-306 · CWE-287

Licenza

GNU Affero GPL v3.0. Vedi LICENSE. Solo lab su loopback. Nessuna garanzia.

Scarica lo strumento