TCP timestamp optionの脆弱性(CVE-2005-0356)
2005 年に TCP timestamp option の脆弱性が公開されています。
内容としては『PAWS を有効化している TCP コネクションについて、攻撃者はリモートから IP アドレスを偽装したパケットを送信し、timestamp を任意の時間をセットし、通信を妨害 (DoS 攻撃) することができる』というものです。
PAWSについては下記を参考にして下さい。
【図解】TCP のオプションと仕組み 〜SACK, Timestamp(PAWS), Window Scale, MSS〜
TCP のオプションは、以下の形式で表現されます。 TCP のオプションの種類は...
攻撃が成立するシナリオ
- TCP コネクションをパケットキャプチャで盗み見る等をして宛先および送信元の IP アドレスと TCP ポートを確認
- 1 で確認したアドレスとポートを使ったアドレス/ポート偽装をし、任意の timestamp を埋め込んだ上で攻撃対象に送信
- 受信したホストは PAWS シーケンス番号が正しくないと判断し TCP Reset を送ってしまう
ネットワーク機器の BGP 通信をキャプチャできる環境なら簡単に BGP のルート情報交換を阻害し続けることができてしまいます。
ですが BGP に関しては MD5 認証を設定していればこの問題を回避できます。
脆弱性に対する各社の対応
JVNVU#637934: TCP の実装に不正な値で内部タイマを更新する脆弱性
Japan Vulnerability Notes
上記サイトでほとんど更新されてないように見えますが、一応該当製品ありの会社は対応済のようです。
ただし、Timestamp (PAWS) 無効化以外に汎用的かつ根本的な解決はないはずなので、パケットキャプチャはされない前提で、利用するポート番号を推測され難いロジックに変えたようです。
Linux での Timestamp無効化
カーネルパラメータのチューニングになります。
無効化手順
# vi /etc/sysctl.conf ~~~ net.ipv4.tcp_timestamps = 0 ~~~ # sysctl -p
確認
再始動後に以下コマンドを打ち、
# sysctl -a | grep tcp_timestamp
net.ipv4.tcp_timestamps = 0 と表示されればOK!
Windowsでのtimestamp無効化
Windowsキー + R
→"regedit" と入力し、Enterを押下
→以下レジストリを0に変更
HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Tcp1323Opts
→"regedit" と入力し、Enterを押下
→以下レジストリを0に変更
HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Tcp1323Opts
再起動後も同じになっていればOK!
コメント