注意:末尾に2020/04/08での追記あり
2020/04初頭現在、COVID-19が猛威を奮っている昨今は自宅勤務となり、オンラインミーティングやウェビナーに参加される機会が増えている方も多いことでしょう。そしてそんなオンラインミーティングで一気にシェアを伸ばしているのが「Zoom」です。
しかし、注目を集めた結果セキュリティ脆弱性があることが様々なレイヤで発見されており、一部の国の政府系機関では使用を辞めるように、とのお達しが出るほどになりました。
いやいや、そんな脆弱性が多いってどんな?というと
- 例えばMac用クライアントについては「 AAPL Ch. 」さんのZoom Meeting for Macの脆弱性タイムラインを見ていただくと『マジかよ』という内容と対応が連続で上げられています。
- Windowsクライアントの認証クレデンシャル情報が漏洩するよ、とか
- 録画データが推測しやすい形でAWS S3バケットに置いてあるよ(公開されてる)
- ミーティングセッション乗っ取りされるとFBIが危険を示唆
- エンドトゥーエンドの暗号化の筈が、サーバー側で鍵作って、しかも北米での利用なのに中国にあるサーバー経由で通信してた
…てんこ盛りですね。 で、流石にこれは嫌だなぁと思い、ブラウザからも参加する方法ある様子なのでそちらにシフトし、使っていたDebian testingからzoomパッケージを削除しました。 ところが、この時の挙動もおかしいのです。
The following packages will be REMOVED:
zoom*
0 upgraded, 0 newly installed, 1 to remove and 45 not upgraded.
After this operation, 269 MB disk space will be freed.
Do you want to continue? [Y/n] y
(Reading database ... 362466 files and directories currently installed.)
Removing zoom (3.5.374815.0324) ...
run post uninstall script, action is remove ...
current home is /root
(snip)
Purging configuration files for zoom (3.5.374815.0324) ...
run post uninstall script, action is purge ...
current home is /root
current home is /root
なんでこんな表示がパッケージの削除時に出てくるの?という。そこでzoomパッケージのファイルを解いて中身を見てみることにしました。
$ ar -x zoom_amd64.deb ← .deb パッケージを data.tar.xz, control.tar.xz などのファイルにバラす
$ tar xvf control.tar.gz ←パッケージ管理側のファイルをバラす
$ view post* ←パッケージのインストール/アンインストール時に走るメンテナスクリプトの中身を見る。
驚愕の中身が…(以下、著作権法での引用の範囲に従い)
#!/bin/bash
# Program:
# script to be run after package installation
echo "run post install script, action is $1..."
#ln -s -f /opt/zoom/ZoomLauncher /usr/bin/zoom
#$1 folder path
function remove_folder
{
if [ -d $1 ]; then
rm -rf $1
fi
}
echo current home is $HOME
remove_folder "$HOME/.cache/zoom"
(snip)
$HOMEにあった ~/.cache/zoom ファイルを消したい!ということなのでしょうが、sudo を実行しているユーザーの $HOME ではなく、/root が指定されるので、 これ全く意味をなしてない です( その上に /root ユーザーの $HOME ディレクトリ以下のファイルをパッケージがいじるんですよ! ムッチャ怖い…)
#!/bin/bash
# Program:
# script to be run after package removal
echo "run post uninstall script, action is $1 ..."
[ "$1" = "remove" ] || [ "$1" = "purge" ] || exit 0
echo current home is $HOME
if [ -L "/usr/bin/zoom" ]; then
rm /usr/bin/zoom
fi
#$1 folder path
function remove_folder
{
if [ -d $1 ]; then
rm -rf $1
fi
}
#$1 file path
function remove_file
{
if [ -f $1 ]; then
rm -f $1
fi
}
remove_folder "/opt/zoom"
remove_folder "$HOME/.zoom/logs"
remove_folder "$HOME/.cache/zoom"
#remove_file "$HOME/.config/zoomus.conf"
#logged_in_users=$(who -q | head -n 1)
#sorted_users=$(echo "$logged_in_users"|tr " " "\n"|sort|uniq|tr "\n" " ")
#for user in $sorted_users;do
# echo "removing $(grep -w ^$user /etc/passwd | cut -d ":" -f6)""/.zoom..."
# remove_folder "$(grep -w ^$user /etc/passwd | cut -d ":" -f6)""/.zoom"
# echo "removing $(grep -w ^$user /etc/passwd | cut -d ":" -f6)""/.config/zoomus.conf..."
# remove_file "$(grep -w ^$user /etc/passwd | cut -d ":" -f6)""/.config/zoomus.conf"
#done
こちらのスクリプトも $HOME の扱いがさっきと同じ。そして何故かコメントアウトされている謎スクリプト群…。
そして、rpm パッケージについても同様の指摘が上がっていました。
Their linux installer scripts are clueless and icky too: