È nc -l non utilizzabile?

1

Supponiamo di voler configurare un server come test e voglio che sia esposto a Internet, fornendo qualsiasi accesso IP. Potrebbe essere per qualsiasi ragione o senza motivo.

Non voglio che sia a rischio di overflow del buffer e esecuzione di codice arbitrario sulla mia macchina.

nc -l va bene. il server non ha bisogno di fare nulla Potrebbe essere fatto all'interno di cygwin.

Quanto è sicuro?

E se non è sicuro, c'è qualcosa di più sicuro?

    
posta barlop 29.04.2014 - 22:39
fonte

1 risposta

7

Netcat non sembra avere molti bug come buffer overflow. Apparentemente ha un bug di questo tipo, ma molto minore: se lo hai invocato come client con un numero di porta oltre il 999999 (il che non ha senso, poiché i numeri di porta validi sono nello 0..65535 intervallo), quindi è possibile ottenere un overflow del buffer che porta a un arresto anomalo; la segnalazione di bug è .

Tuttavia, c'è apparentemente più di un comando di nc intorno. Sul mio server, che esegue una Ubuntu piuttosto standard (13.10 attualmente), il comando nc è fornito dal pacchetto netcat-openbsd . A quanto pare:

  • Le persone di OpenBSD hanno deciso di inserire un comando nc nel loro sistema di base e hanno riscritto l'utilità completa per vari motivi, quello ufficiale era "supporto IPv6" (è un motivo valido, ma sospetto un caso di sindrome NIH pure).

  • I Debian hanno quindi estratto il codice OpenBSD per comprimerlo come un pacchetto Debian (che ha trovato anche la sua strada verso Ubuntu, dal momento che Ubuntu si nutre di pacchetti Debian), e quindi ha proceduto a revisionare il codice per ragioni che sono un po ' spiegato in questo file . In particolare, affermano che "il codice è stato accuratamente ripulito e sono state aggiunte funzionalità importanti". Hanno anche rimosso le chiamate a strlcpy() , una funzione non standard a cui le persone di OpenBSD sono piuttosto affezionate, ma che non fa parte della libb GNU utilizzata dai sistemi Debian.

Quindi, se una versione specifica ha un buffer overflow è un gioco "hit-and-miss". Questa è un'utilità piuttosto semplice; se qualche software può essere ragionevolmente privo di errori, allora deve essere netcat. Sospetto che se si trova un buffer overflow nell'implementazione OpenBSD di netcat, allora alcuni sviluppatori di OpenBSD commetterebbero un seppuku onorevole.

Tuttavia , potrebbero esserci altri problemi di sicurezza rispetto ai buffer overflow. Il problema potenziale principale che vedo qui è che il tuo nc -l verrà eseguito in una sorta di console di testo o terminale e produrrà i byte così come vengono ricevuti . Pertanto, alcuni cattivi potrebbero inviare sequenze di controllo che saranno interpretate dal terminale. Questo problema è esplorato a lungo in questa domanda .

Se esegui nc -l con l'output reindirizzato a un file, allora quel problema viene evitato, a patto che tu stia attento a leggere il file con qualche strumento che filtra le sequenze di escape, ad es. un editor di testo.

    
risposta data 29.04.2014 - 23:43
fonte

Leggi altre domande sui tag