
Fuzzer pour le protocole Sparkplug B IIoT
Un outil complet d'évaluation de la sécurité pour tester les implémentations du protocole Sparkplug B MQTT. Le fuzzer teste systématiquement tous les champs du protocole pour les 9 types de messages, découvre les dispositifs actifs sur le réseau et produit des journaux détaillés pour analyse.
Cet outil envoie des messages MQTT malformés, d'injection et violant le protocole à un courtier cible. Exécutez-le uniquement sur des systèmes que vous possédez ou pour lesquels vous avez une autorisation écrite explicite de test. Les courtiers Sparkplug B se trouvent généralement dans des environnements OT/ICS où des charges utiles inattendues peuvent perturber des processus physiques — considérez chaque cible comme adjacente à la production sauf preuve du contraire.
Si vous découvrez une vulnérabilité dans une implémentation Sparkplug B à l'aide de cet outil, veuillez suivre une divulgation coordonnée avec le fournisseur concerné. Pour signaler un problème de sécurité dans cet outil lui-même, consultez SECURITY.md.
La spécification Sparkplug B définit un espace de noms de sujets et un format de charge utile basés sur MQTT et Google Protocol Buffers pour les environnements IoT industriels (IIoT). Ce fuzzer évalue la sécurité et la robustesse des implémentations Sparkplug B en :
Sur les systèmes modernes Debian/Ubuntu/Kali (systèmes PEP-668), --setup ne peut pas utiliser pip install dans le Python système — utilisez d'abord un environnement virtuel ou pipx. Le chemin recommandé :```bash
python3 -m venv .venv
source .venv/bin/activate
python3 sparkplug-fuzzer.py --setup
Ou exécutez via `pipx run` si vous préférez ne pas gérer vous-même l'environnement virtuel. Sur les systèmes plus anciens sans application de PEP-668, la commande simple `python3 sparkplug-fuzzer.py --setup` fonctionne directement.
`--setup` effectuera :
1. Installer les dépendances pip (`paho-mqtt`, `protobuf`)
2. Cloner une version épinglée du dépôt [Eclipse Tahu](https://github.com/eclipse/tahu) (voir `TAHU_REF` dans le script)
3. Copier les modules d'aide `sparkplug_b.py` et `array_packer.py`
4. Compiler `sparkplug_b.proto` en liaisons Python (utilise `protoc` si disponible, sinon `grpcio-tools`)
5. Nettoyer le clone de Tahu
Après l'installation, votre répertoire devrait contenir :```
sparkplug-fuzzer.py # The fuzzer
sparkplug_b.py # Sparkplug B helper module (from Tahu)
array_packer.py # Array packing helper (from Tahu)
sparkplug_b_pb2.py # Generated protobuf bindings
requirements.txt # Python dependencies
python3 sparkplug-fuzzer.py --setup # first-time setup python3 sparkplug-fuzzer.py -H localhost -p 1883 -v # run fuzzer
Cela va:
1. Connectez-vous au broker sur `localhost:1883`
2. Écoutez pendant 10 secondes pour découvrir les appareils Sparkplug existants
3. Établissez le fuzzer en tant que nœud/appareil Sparkplug
4. Exécutez toutes les 12 catégories de fuzz (~635+ cas de test)
5. Ciblez tous les appareils découverts avec des messages usurpés (spoofed)
6. Écrivez les résultats dans `sparkplug_fuzz.jsonl`
## Utilisation