Quali sono i potenziali rischi di vincolare un'applicazione ad un indirizzo IP o nome host che non controlli?

0

Durante l'impostazione di qualsiasi tipo di applicazione server (come un server Web, server IRC, ecc.), in genere è possibile associare l'applicazione a determinati indirizzi IP o nomi host. Questo dice all'applicazione di 'ascoltare' su quegli indirizzi.

Se dovessi legare a un indirizzo IP che non controllo, quali sarebbero i potenziali rischi per la sicurezza? Naturalmente nessuna richiesta potrebbe mai arrivare alla mia domanda, ma potrebbero esserci altri rischi o casi limite?

Per quanto riguarda l'associazione a un nome host, in alcuni casi ciò probabilmente comporterà una query DNS del nome host inviato, il che comporterebbe la restituzione di informazioni potenzialmente dannose sul record DNS, così come la divulgazione di informazioni / violazioni della privacy, ecc. Ci sono altri rischi qui?

Un esempio di questa situazione è quando si avvia un server di sviluppo PHP locale. Se intendo digitare php -S 127.0.0.1:8080 ma ho sbagliato a scrivere l'IP, il PHP si lega a un IP arbitrario che non controllo. Questo particolare rischio può essere mitigato usando localhost: 8080 (che se errato non sarebbe valido) o impostando un alias di Bash.

Attraverso una corretta revisione del codice e buone pratiche di sicurezza, questo probabilmente non accadrà mai. Sono solo interessato alla teoria.

    
posta jamieweb 19.07.2018 - 00:21
fonte

1 risposta

1

If I were to bind to an IP address that I do not control, what would be the potential security risks?

Per chiarire il commento, questa situazione può facilmente accadere in un tipo di ambiente di hosting condiviso.

Il principale rischio per la sicurezza è che qualcun altro può facilmente impedire al servizio di ascoltare su questo IP: port. Inoltre, possono eseguire un falso servizio sull'IP: port assumendolo. Quindi possono eventualmente agire maliziosamente contro i tuoi clienti, a seconda della natura del tuo servizio e delle comunicazioni. Questo può includere molte cose come:

  • Invio di contenuti dannosi ai tuoi utenti (se si tratta di un normale server Web che gli utenti visitano con il browser);
  • Rubare credenziali o token di autenticazione se il tuo servizio richiede il login (da parte di utenti o dispositivi);
  • Attaccare i client di connessione (ad esempio se il tuo cliente è un sensore IoT che invia dati e aspetta lo stato "200 ok", un utente malintenzionato può tentare di sovraccaricare la RAM del sensore restituendo una linea di stato molto lunga);
  • Se il servizio è in ascolto su più di una porta, un utente malintenzionato può eseguire un attacco MITM e eseguire lo spoofing / l'iniezione / la modifica del traffico (questo potrebbe essere prevenuto con alcune misure come SSL, ma se si è in hosting condiviso , sono meno efficaci)

Si noti che non è possibile associare una porta di ascolto a un IP remoto, deve essere uno degli indirizzi IP locali (tecnicamente è possibile, ma non funzionerà, perché l'ISP non inoltrerà i pacchetti rilevanti al proprio IP). Quindi se il tuo esempio con PHP se lo digiti come "php -S 128.0.0.1" questo avrà effetto solo se il tuo indirizzo IP locale (o uno di) è 128.0.0.1.

PS. L'intero 127/8 (cioè 127. . . *) È localhost, quindi se ascolti su 127.231.45.90 non è più accessibile da remoto rispetto a 127.0.0.1.

    
risposta data 19.07.2018 - 01:17
fonte

Leggi altre domande sui tag