Tengo un caso de uso en el que no puedo usar MQTTS / TLS debido a restricciones en los dispositivos.
Nuestro plan es realizar la autenticación durante MQTT CONNECT
, pasando un token JWT como contraseña. Si entiendo correctamente, MQTT mantendrá abierta la conexión TCP para todos los mensajes subsiguientes.
Dado un agente estándar de MQTT (como HiveMQ, VerneMQ, ...), es posible que un atacante PUBLISH
mqtt mensaje sin llamar primero a CONNECT
?
Por supuesto, pueden potencialmente olfatear el token JWT y llamar al CONNECT
, pero este token será válido solo por un corto período de tiempo ... Y también podemos implementar algunas auditorías en CONNECT
para probar para evitar ataques (filtrado de IP, ...).
Sabía que, en cualquier caso, esto no será una solución de prueba segura, pero se usará solo en un pequeño conjunto de dispositivos, con suerte durante un breve período de tiempo.
Mi preocupación es si un atacante simplemente puede enviar tráfico "en nombre de otra conexión TCP". Llamar a PUBLISH
sin llamar primero a CONNECT
. Tal vez esto no tenga sentido ...