Open5

Windsurf (Codeium) がDoSのようなパケットを定期的に送信しているためNATゲートウェイが不安定になる問題

Matsukura YukiMatsukura Yuki

現象

Wiresharkで計測したパケット

TCP Retransmission (TCP再送) を同じホストに対して大量に送っています。

上から下まで0.7秒間です。

192.168.1.101 自ホストです。

35.223.238.178は、178.238.223.35.bc.googleusercontent.com. です。
このような通信が定期的に発生します。

影響

これに関連して、ルータのNATテーブルが急速に増加して場合によってはルータが不安定になり、他のホストの正常な通信がパケットロスします。

Matsukura YukiMatsukura Yuki

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上で同様の問題に関してエスカレされていないのが謎ですねぇ。。。

Matsukura YukiMatsukura Yuki

(ネットワーク関連のトラブルシュートをする検証環境がすぐに用意できないので、この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
Matsukura YukiMatsukura Yuki

ルーター側での観測結果

短期

2分間スケール

当該の通信が発生したところがスパイクしてる。

中期

24時間スケール

5000までスパイクしているのが当該パケット。
おそらく、5000でルーターの処理の限界が来ている。

感想

  • 外部から通信を見たらマルウェアっぽい挙動なのでISPからも怒られそうな気はするので要注意です。
  • 単位時間あたりの、同一ホストからのSYNを制御QoS制御するとかしないとサービスを止めないようにして使うのは難しそう。
  • VSCodeの起動時間が長くなればなるほど酷くなるような感じもする。普段からこまめに起動しなおしていると発生しないのかも。(正確な計測はしていない)
  • 検証は、全く別のキャリア、ISPの2拠点で計測した。ルーターも別メーカー。結果は同様だったのでインターネット接続環境要因の可能性は低いと考えられる。
Matsukura YukiMatsukura Yuki

YAMAHA RTX系のルーターであれば、1ホストあたりのNATセッション数を制限できるのでこれで1500とかに設定しておけば、syn floodのようなパケットによるネットワーク機器への過負荷防止になる。

https://network.yamaha.com/setting/router_firewall/internet/internet_connect/host

また、RTX系のルーターで以下のコマンドを入力すればNATテーブルが出力されます。

show nat descriptor address all detail