iTerm 3.5.11のセキュリティ修正について
1月2日にiTerm2の重要なセキュリティリリースが出されました。
このアップデートでは、ある条件が整うとSSH接続でリモートマシンに接続しているときシェル上での入出力が他のユーザーにも読み取れる形式で保存されてしまう問題が修正されました。
この問題は共有サーバーを使用している環境ではセキュリティリスクとなる可能性があります。
Changelog
すぐにバージョンを3.5.11
以上にアップグレードするように求められています。
問題の詳細
以下は、Changelogから問題についての詳しい説明の抄訳です
影響を受ける可能性のある人
バージョン
- 3.5.6
- 3.5.7
- 3.5.8
- 3.5.9
- 3.5.10
- 3.5.6 以降のベータ版
のiTerm2を使用しているユーザーは影響を受ける可能性があるとのことです。
問題
シェル上での入出力が/tmp
ディレクトリー下に/tmp/framer.txt
という名前で保存され、システム上の他のユーザーからも閲覧可能な状態となってしまう。
問題発生する状況
- 次のうちどちらが当てはまる:
-
it2ssh
コマンドを使用している - プロファイルの設定で起動コマンドが
SSH
に設定されておりかつ、
SSH設定ダイアログ内(設定内のssh引数フィールド横の設定ボタン)でSSH Integration
機能が有効になっている
- リモートにインストールされたpathの通っているpythonが3.7以降
これら2つの条件を同時に満たしていると影響を受けるようです。
つまり、実際この脆弱性の影響を受けた確率は結構低いと思います
私はこの条件を満たしていないので、この問題の影響を受けませんでした。
解決方法
- バージョンを
3.5.11
以降にアップグレードして - リモート上の
/tmp/framer.txt
を削除する
なぜこのような問題が起こったのか
この問題が起こった原因について、iTerm2の公式リポジトリで確認できます。
実際に問題となったiTerm2のリポジトリ上のソースコードは以下のとおりです
この問題は、print()
を利用したデバッグが誤って配布版でも実行されてしまったのが原因だと思います。
このような開発時のデバッグコードが本番環境に入ってしまうことによって、セキュリティリスクが発生してしまいました。
今回の教訓
iTerm2はOSSで、多くのボランティアによってメンテナンスされています。
今回のようなミスが今後発生しないように仕組みが改善されることを願いたいです。
また、今回の事例を教訓として、開発プロセスやレビュー体制の見直しなどの管理体制が大切だということがよくわかりました。
まとめ
影響を受ける可能性があるユーザーは限られているものの、このような問題が多くの人が使うOSSで見つかったことに驚きました。常にアップデートが大切だと改めて思いました。
また、日頃から開発環境、本番環境を適切に管理することが大事だとわかった。
Discussion