Windsurf (Codeium) がDoSのようなパケットを定期的に送信しているためNATゲートウェイが不安定になる問題
現象
Wiresharkで計測したパケット
TCP Retransmission (TCP再送) を同じホストに対して大量に送っています。
上から下まで0.7秒間です。
192.168.1.101
自ホストです。
35.223.238.178
は、178.238.223.35.bc.googleusercontent.com.
です。
このような通信が定期的に発生します。
影響
これに関連して、ルータのNATテーブルが急速に増加して場合によってはルータが不安定になり、他のホストの正常な通信がパケットロスします。
35.223.238.178
に通信しているプロセスを見つけます。
❯ sudo lsof -i @35.223.238.178
Password:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
language_ 59003 xx.xxxxxx 27u IPv4 0x6f34091d26077eba 0t0 TCP 192.168.1.101:57062->178.238.223.35.bc.googleusercontent.com:https (ESTABLISHED)
language_ 59003 xx.xxxxxx 28u IPv4 0x123fee22d7e187f3 0t0 TCP 192.168.1.101:57065->178.238.223.35.bc.googleusercontent.com:https (ESTABLISHED)
language_ 59003 xx.xxxxxx 33u IPv4 0x9d535e523a59dda6 0t0 TCP 192.168.1.101:51663->178.238.223.35.bc.googleusercontent.com:https (ESTABLISHED)
language_ 91499 xx.xxxxxx 26u IPv4 0x453f66e60de5eb64 0t0 TCP 192.168.1.101:57006->178.238.223.35.bc.googleusercontent.com:https (ESTABLISHED)
language_ 91499 xx.xxxxxx 27u IPv4 0xa91010da36dbccfa 0t0 TCP 192.168.1.101:57007->178.238.223.35.bc.googleusercontent.com:https (ESTABLISHED)
language_ 91499 xx.xxxxxx 29u IPv4 0x8aaa46ad596ac09e 0t0 TCP 192.168.1.101:59225->178.238.223.35.bc.googleusercontent.com:https (ESTABLISHED)
language_ 91500 xx.xxxxxx 26u IPv4 0xbf290c5003a9686d 0t0 TCP 192.168.1.101:57008->178.238.223.35.bc.googleusercontent.com:https (ESTABLISHED)
language_ 91500 xx.xxxxxx 28u IPv4 0x85968cc1339b5888 0t0 TCP 192.168.1.101:57009->178.238.223.35.bc.googleusercontent.com:https (ESTABLISHED)
language_ 91500 xx.xxxxxx 29u IPv4 0x468c92565ed419bf 0t0 TCP 192.168.1.101:63570->178.238.223.35.bc.googleusercontent.com:https (ESTABLISHED)
language_
から始まっているなにかです。
プロセス一覧から探してみます。
❯ ps axu|grep language_|grep -v grep | head -n 1
xxxx.xxxxxxx 8181 0.7 0.3 412789504 85808 ?? S 10:46AM 0:01.35 /Users/xx.xxxxxx/.vscode/extensions/codeium.codeium-1.46.1/dist/xxxxxxxxxxx/language_server_macos_arm --api_server_url https://server.codeium.com --manager_dir /var/folders/5m/xxxxxxxx/T/xxxxxxx-f9fd-49b9-95a0-xxxxxxxxxxx/codeium/manager --enable_chat_web_server --enable_lsp --ide_name vscode --inference_api_server_url https://inference.codeium.com --csrf_token xxxxxx-1d6c-xxxxx-82b0-xxxxxxxx --database_dir
codeiumはWindsurfの昔の名前です。
念のため、もう一つ検証してみます。
- Windsurfのプラグインをアンインストールして、VSCodeを再起動したら、当該プロセスがなくなったことを確認。
- Windsurfを再度インストールして、VSCodeを再起動したら、当該プロセスが発生していることを確認。
Web上で同様の問題に関してエスカレされていないのが謎ですねぇ。。。
(ネットワーク関連のトラブルシュートをする検証環境がすぐに用意できないので、このIPアドレスはどのホスト名なのかを追うのがちょっと面倒)
とりあえず、WindsurfのExtensionの中にgoogleというコードが有るかどうかを検索してみる。そしたら、一応language_server_macos_armの中に入っている。バイナリだからどうやって使われているのかがわからない。
❯ grep -r -n google /Users/xx.xxxxxxx/.vscode/extensions/codeium.codeium-1.46.1/dist/xxxxxxxx/
Binary file /Users/xx.xxxxxx/.vscode/extensions/codeium.codeium-1.46.1/dist/xxxxxxxx/language_server_macos_arm matches
ルーター側での観測結果
短期
2分間スケール
当該の通信が発生したところがスパイクしてる。
中期
24時間スケール
5000までスパイクしているのが当該パケット。
おそらく、5000でルーターの処理の限界が来ている。
感想
- 外部から通信を見たらマルウェアっぽい挙動なのでISPからも怒られそうな気はするので要注意です。
- 単位時間あたりの、同一ホストからのSYNを制御QoS制御するとかしないとサービスを止めないようにして使うのは難しそう。
- VSCodeの起動時間が長くなればなるほど酷くなるような感じもする。普段からこまめに起動しなおしていると発生しないのかも。(正確な計測はしていない)
- 検証は、全く別のキャリア、ISPの2拠点で計測した。ルーターも別メーカー。結果は同様だったのでインターネット接続環境要因の可能性は低いと考えられる。
YAMAHA RTX系のルーターであれば、1ホストあたりのNATセッション数を制限できるのでこれで1500とかに設定しておけば、syn floodのようなパケットによるネットワーク機器への過負荷防止になる。
また、RTX系のルーターで以下のコマンドを入力すればNATテーブルが出力されます。
show nat descriptor address all detail