😺

セキュリティの面からwsl公式はデフォルト設定を変えたほうがいいという話。

2024/04/20に公開

先日、wslで今すぐ直し確認すべきセキュリティ項目で、
デフォルトの設定で、wslからwindowsのプログラムと環境変数PATHを参照できるのはあまりよろしくないから、
変更したほうがいいという話を書きました。

この後、windowsからwslを呼び出すときのユーザーの権限で、wslからWindowsのプログラムを呼び出せることが分かりました。

つまり、wslをAdministratorユーザーや、windowsの管理者権限を持つユーザーで起動させるとwslからwindowsのプログラムを呼び出すときに、
最初にwslを呼び出したwindowsユーザーの権限が使われます。

つまり、wslを管理者権限で起動させると、wslのユーザーがwindowsの管理者権限を持っているユーザーと同じ権限を持つことになります。

この、動作については危険だと私は思いますが、それはwindows、wslの仕様であると言い張るなら通るレベルのものです。
しかし、この動きについてほとんどユーザーが知っているならいいのですが、おそらくたいていのユーザーは知りません。

なので、安全のためwslからwindowsのプログラムの実行と、環境変数の参照ができる機能をデフォルトでは無効にして、
開発者の自己責任により、必要と求められれば、有効にするという作りがまるいかと思います。

このために新たにwslに追加するソースコードは特になく、下記の設定をデフォルトとして追加するだけです。

/etc/wsl.conf
# Set whether WSL supports interop processes like launching Windows apps and adding path variables. Setting these to false will block the launch of Windows processes and block adding $PATH environment variables.
[interop]
enabled = false
appendWindowsPath = false

これについて、wslのissueに書きましたが、特に反応が無かったのでここにその話について書きました。

https://github.com/microsoft/WSL/issues/11454#issuecomment-2066460264

まとめ

wslのissue放置気味ですなぁ...
誰かが本当は脆弱性と理解していないバグを書いたりしてないかちょっと気になった。

Discussion