そんな装備で大丈夫か?
ということでこんにちは!情報系学生のスナックです。
実はですね去年の夏ごろにサプライチェーン攻撃に巻き込まれました!
ですが、間一髪のところでディフェンダー君が検疫してくれていました。
私はwindows上で開発をしていたので助かりましたが、これwsl上で開発していたら検疫してくれていたのかな?とふと最近思いました。
ということで今回は大丈夫だ問題ない!と言えるようにWSL周辺のセキュリティがwindows上と比べてどうなっているのか確認していきましょう!
今回触れているwslはwsl2のことを指します!
ということで実際に試してみよう!!
windowsでは?
適当にディフェンダーが検出してくれそうなphpペイロードを準備します。
現在時刻6/6 21:48....
今回は典型的なwebshell(backdoor)のペイロード一行を書き込んだファイルを作成します。
vscodeで書いていたのですが保存した瞬間、あれアクセスできなくなってしまいました。
ディフェンダー君の通知を確認しに行くと、、、
非常に仕事が早いですね~!まあwindowsを使う理由のほとんどがディフェンダーに詰まっているといっても過言ではないですね。
WSL上では?
はい!同じ手順で配置してみました。
今回はディストリビューションはdebianを使用しています。
これがすごいんですね!
全くうんともすんともいわない! ディフェンダー沈黙!!
WSL上での仕様について
まずWSLで動いているのはLINUXです。Windowsではないので私たちユーザーを守ってくれるディフェンダー君も守備範囲外です...
一般ユーザー向けのOSであるwindowsと比べて、便利のこともたくさんある一方で自己責任で様々なセットアップ等を行っていく必要があります。
特に最近はAIが出たこともあり、ひと昔前よりもLINUXに触れる人も多くなってきたと思います。特にWSL上で開発環境を用意して取り組んでいる方は要注意ですね!
npm等で用意したパッケージが汚染されていたら、自分で用意しない限りマルウェア等は自動で排除してくれません、、、
もし悪意あるプログラムがWSLに入ってしまうと,,,
特に設定をしていないとwslからは9Pというプロトコルを通して、簡単にマウントして、windows上のファイルにアクセスできてしまいます。
さすがにWSLからのアクセス権限はユーザー権限ですが、十分情報は窃取されちゃいます。
以下のサイトを見るとどうなっているかわかりやすいですね!
大丈夫だ問題ない、と言えるために
じゃあWSLを使うのは危険なの?と思うかもしれませんが、仕組みを理解して正しく運用すればある程度は防げます。そこで個人開発者が今日からできる自己防衛策をいくつか紹介します!
1 Windowsファイルシステムへのマウントを制限する
WSLはデフォルトでWindowsのドライブを /mnt/c などにマウントします。使わないなら切ってしまいましょう。
どうしてもマウントが必要な場合は、読み取り専用にするオプション(options = "ro")も検討できます。必要最小限のアクセスに絞るのが基本です。
2 パッケージの配布元を疑う習慣をつける
npm・pip・apt などのパッケージを入れる前に一呼吸置きましょう。
パッケージ名のタイポスクワッティングに注意(lodash と Iodash など)
公式リポジトリか、メンテナが実在する人物かを確認
npm audit や pip-audit などのツールで既知の脆弱性をチェック
3 監査ログを仕込む(auditd)
Linux の auditd を使えば、実行されたコマンドやファイルアクセスを記録できます。万が一何か起きたときのフォレンジックにも役立ちます。
4 開発用途はDockerに閉じ込める
DBやミドルウェアなど、ネットワークやファイルシステムにアクセスするサービスはWSLに直接入れず、Docker Desktop でコンテナとして起動するのがおすすめです。コンテナが汚染されても、ホストへの影響を最小限に抑えられます。
5 個人情報はWSLに置かない
WSL環境内に個人情報が入ったファイルを置かないことも重要です。環境変数など重要なものはできるだけ権限の管理をするなどしましょう。
6 デュアルブートという選択肢
本格的にLinux開発をするなら、個人情報はWindowsに、開発はピュアなLinux側でという切り分けも有効だと思います。ただしLinux側にも適切なディスク暗号化を設定しておくことを忘れずに。
(まあwindowsじゃないとゲームできないの多いからなぁ、、、結局windowsをなんやかんや使うんですよね~。archLinuxとかかっこいいんですけどね、、、)
【補足】企業向けには一応プラグインがあります
一応紹介
終わりに
今回はWSLの危険性についてお話ししました!
私も大丈夫だ問題ないといえる技術や知識のレベルにはまだ到達していない(というか到達する日は来るのか、、、)ので今後も勉強していきます!
ここの内容まちがってるよ~などミスがあればぜひ指摘をお願いします!
