SACK PanicとTCP DoS
「SACK Panic」と「TCP DoS」は、「Linux kernel」のTCPの実装に由来する脆弱性です。「SACK Panic」及び「TCP DoS」の対応方針を紹介します。
ここで紹介する内容は2019年6月19日時点の情報です。
最新情報は常に上記リンク先を参照してください。
TCP実装の脆弱性
「Linux kernel」のTCP実装において、「Selective Acknowledgement(SACK)」オプションの処理と小さいサイズの「Maximum Segment Size(MSS)」を扱っている処理がありますが、これらの処理に複数の脆弱性があります。攻撃者はこの脆弱性を利用し、リモートからサーバー上で「DoS」を引き起こすことが可能です。
CVE
これらの脆弱性には以下の「CVE」が割り当てられています。- CVE-2019-11477(システムクラッシュ/SACK Panic)
- CVE-2019-11478(リソースの消費)
- CVE-2019-11479(リソースの消費)
いずれの脆弱性もリモートによる「DoS」攻撃ですが、「CVE-2019-11477」は「SACK Panic」とも知られる脆弱性であり、システムクラッシュを引き起こします。
残り2つはリソースの消費による「DoS」です。
CVE-2019-11477
「CVE-2019-11477」は非常に深刻な脆弱性です。「TCP SACK」処理時、攻撃者は整数オーバーフローを引き起こすことで即座にシステムをクラッシュさせることができます。
この脆弱性は現在サポート中のすべての「Ubuntu」で影響を受けます。
CVE-2019-11478
「CVE-2019-11478」も同様に深刻な脆弱性です。「TCP SACK」処理時、CPUのパフォーマンスに非常に大きな影響を与えます。
この脆弱性は「Linux kernel 4.14」及びそれ以前のバージョンで影響を受けるため、以下の「Ubuntu」で影響を受けます。
- Ubuntu 16.04 LTS
- Ubuntu 14.04 ESM
- Ubuntu 12.04 ESM
CVE-2019-11479
「CVE-2019-11479」は、TCPスタックが非常に小さなMSS値で開かれた悪意あるセッションを処理している間、CPUのパフォーマンスに影響を与えます。この脆弱性による影響は、上記の2つに比べれば大きくありません。
この脆弱性は現在サポート中のすべての「Ubuntu」で影響を受けます。
この脆弱性の対応は、将来リリースされる「Linux kernel」のアップデートで対応される予定です。
対応方針
「Ubuntu」での対応方針です。CVE-2019-11477 / CVE-2019-11478
これらの脆弱性に対応した「Linux kernel」がすでにリリースされています。「Ubuntu(フレーバー含む)」ユーザーは、「ソフトウェアの更新」等から「Linux kernel」をアップデートし、PCを再起動してください。
ライブパッチでも対応可
PCを再起動せずに「Linux kernel」を修正するライブパッチでも対応可能です。Linux kernelのバージョン情報
以下の「Linux kernel」で対応されています。OS | Linux kernel(ベース) | Linux kernel(HWE) |
---|---|---|
Ubuntu 19.04 | linux-image-5.0.0-17-generic 5.0.0-17.18 | ― |
Ubuntu 18.10 | linux-image-4.18.0-22-generic 4.18.0-22.23 | ― |
Ubuntu 18.04 LTS | linux-image-4.15.0-52-generic 4.15.0-52.56 | linux-image-4.18.0-22-generic 4.18.0-22.23~18.04.1 |
Ubuntu 16.04 LTS | linux-image-4.4.0-151-generic 4.4.0-151.178 | linux-image-4.15.0-52-generic 4.15.0-52.56~16.04.1 |
Ubuntu 14.04 ESM | linux-image-3.13.0-171-generic 3.13.0-171.222 | linux-image-4.4.0-151-generic 4.4.0-151.178~14.04.1 |
Ubuntu 12.04 ESM | linux-image-3.2.0-141-generic 3.2.0-141.188 | linux-image-3.13.0-171-generic 3.13.0-171.222~12.04.1 |
TCP SACKの無効化でも対応可
一時的に「TCP SACK」を無効化することでも対応可能ですが、「Linux kernel」のアップデートを推奨します。
sudo sysctl -w net.ipv4.tcp_sack=0
この対処法はあくまでも一時的な措置であり、PCを再起動すると「TCP SACK」が有効になります。
CVE-2019-11479
現在「CVE-2019-11479」に対応した「Linux kernel」のアップデートは提供されていません。将来以下の「Ubuntu」向けに本脆弱性に対応した「Linux kernel」のアップデートを提供予定です。
- Ubuntu 19.04
- Ubuntu 18.10
- Ubuntu 18.04 LTS
- Ubuntu 16.04 LTS
また管理者は、TCPセグメントの送信においてシステムが守るべきMSS値を「sysctl」で設定できるようになります。
iptablesによる制限
それまでの間管理者は、「iptables」を利用して新しいTCPセッションで受け入れ可能なMSS値を設定できます。この設定値は使用しているネットワーク環境に応じた調整が必要です。
例えば500バイト以上のMSS地のみ許可するルール設定は、以下のようになります。
sudo iptables -A INPUT -p tcp -m tcpmss --mss 1:500 -j DROP
この時「net.ipv4.tcp_mtu_probing(sysctl)」の値が「0(無効)」になっている必要があります。
「net.ipv4.tcp_mtu_probing」の値は、以下のコマンドで確認できます。
sysctl net.ipv4.tcp_mtu_probing
ちなみに上記の方法でも「CVE-2019-11477」及び「CVE-2019-11478」による影響を軽減することができます。
カジュアルなデスクトップユーザーはどうすればよいの?
「ソフトウェアの更新」を起動しすべてのアップデートを適用します。アップデートが完了したらPCを再起動します。
サポート外のLinux kernelの利用に注意
「mainline kernel」等「Ubuntu」の公式リポジトリーから提供されていない「Linux kernel」 は、「Ubuntu」のサポート対象外です。それらの「Linux kernel」はユーザーの責任において利用するものであり、ユーザー自身の手で状況を把握する必要があります。