MQTT senza TLS: impedisce la pubblicazione di messaggi da dispositivi non autenticati

0

Ho un caso d'uso in cui non sono in grado di utilizzare MQTTS / TLS a causa del vincolo sui dispositivi.

Il nostro piano è di eseguire l'autenticazione durante MQTT CONNECT , passando un token JWT come password. Se capisco correttamente MQTT mantenere una connessione TCP aperta per tutti i messaggi successivi.

Dato un broker MQTT standard (come HiveMQ, VerneMQ, ...), è possibile che un utente malintenzionato abbia un messaggio PUBLISH mqtt senza prima chiamare CONNECT ?

Ovviamente possono potenzialmente annusare il token JWT e chiamare CONNECT , ma questo token sarà valido solo per un breve periodo di tempo ... E possiamo anche mettere in atto dei controlli su CONNECT per provare per prevenire gli attacchi (filtro IP, ...).

Ho saputo che in ogni caso questa non sarà una soluzione a prova di sicurezza, ma sarà usata solo su un piccolo set di dispositivi, si spera per un breve periodo di tempo.

La mia preoccupazione è se un utente malintenzionato può semplicemente inviare traffico "per conto di un'altra connessione TCP"? Chiamando PUBLISH senza prima chiamare CONNECT . Forse questo non ha senso ...

    
posta Davide Icardi 05.09.2018 - 12:40
fonte

1 risposta

1

Per quanto ne so, la prima operazione che deve essere eseguita dopo l'handshake TCP è CONNECT. Quindi in teoria nessuno può inviare un messaggio PUBLISH sul primo pdu MQTT. Ma sarei preoccupato se l'implementazione dei tuoi dispositivi consente di ricevere messaggi senza un messaggio CONNECT. Quindi sarebbe una buona idea verificare se l'implementazione sui tuoi dispositivi rispetta l'ordine, prima un CONNECT, utilizzando una libreria che verifica i tuoi dubbi.

    
risposta data 05.09.2018 - 12:52
fonte

Leggi altre domande sui tag