TCP Timestamp Optionの脆弱性 〜Linux/Windowsでの設定無効化、確認方法〜

TCP timestamp optionの脆弱性(CVE-2005-0356)

2005年にTCP timestamp optionの脆弱性が公開されています。

内容としては『PAWSを有効化しているTCPコネクションについて、攻撃者はリモートからIPアドレスを偽装したパケットを送信し、timestampを任意の時間をセットし通信を妨害(DoS攻撃)することができる』というものです。

PAWSについては下記を参考にして下さい。

【図解】TCP のオプション 〜SACK, Timestamp(PAWS), Window Scale, MSS〜
【図解】TCP のオプション 〜SACK, Timestamp(PAWS), Window Scale, MSS〜
TCPのオプションは、以下の形式で表現されます。 TCPのオプショ...

攻撃が成立するシナリオ

  1. TCPコネクションをパケットキャプチャで盗み見る等をして宛先および送信元のIPアドレスとTCPポートを確認
  2. 1で確認したアドレスとポートを使ったアドレス/ポート偽装をし、任意のtimestampを埋め込んだ上で攻撃対象に送信
  3. 受信したホストはPAWSシーケンス番号が正しくないと判断しTCP Resetを送ってしまう

ネットワーク機器のBGP通信をキャプチャできる環境なら簡単にBGPのルート情報交換を阻害し続けることができてしまいます。

ですがBGPに関してはMD5認証を設定していればこの問題を回避できます。

脆弱性に対する各社の対応

http://jvn.jp/vu/JVNVU637934/

上記サイトでほとんど更新されてないように見えますが、一応該当製品ありの会社は対応済のようです。

ただし、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

再起動後も同じになっていればOK!

シェアする

  • このエントリーをはてなブックマークに追加

フォローする