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

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

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

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

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

関連記事

TCP のオプションは、以下の形式で表現されます。 TCP のオプションの種類は、主に以下の 7 つがあります。 0.End Of Option List 1.No Operation 2.MSS (Maximum Se[…]

攻撃が成立するシナリオ

  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!

IT/インフラエンジニアの地位とスキル向上のために

関連記事

IT 技術の進化はとどまることを知りません。矢継ぎ早に新たな技術が出てきたり、数年前の技術が時代遅れになったりと、IT エンジニアは勉強し続ける運命のようです。 それをどう思うかはあなた次第。 ビジネスの基本は『付加価値を与える[…]

IMG
関連記事

nesuke の考える NW エンジニアの2つの道 ネットワークエンジニアには 2 つの道があります。 1 つはネットワーク構築一筋で、L4 までをひたすらきっちりと構築していく道。 もう 1 つはネットワークを軸として深堀し[…]

IMG