Linux用zoomパッケージ:お粗末なメンテナスクリプト

注意:末尾に2020/04/08での追記あり

2020/04初頭現在、COVID-19が猛威を奮っている昨今は自宅勤務となり、オンラインミーティングやウェビナーに参加される機会が増えている方も多いことでしょう。そしてそんなオンラインミーティングで一気にシェアを伸ばしているのが「Zoom」です。

しかし、注目を集めた結果セキュリティ脆弱性があることが様々なレイヤで発見されており、一部の国の政府系機関では使用を辞めるように、とのお達しが出るほどになりました。

いやいや、そんな脆弱性が多いってどんな?というと

…てんこ盛りですね。

で、流石にこれは嫌だなぁと思い、ブラウザからも参加する方法ある様子なのでそちらにシフトし、使っていた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
0c230e629c057f4b82065a01c4c1b9a6 なんでこんな表示がパッケージの削除時に出てくるの?という。そこで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 }

removefolder "/opt/zoom" removefolder "$HOME/.zoom/logs" remove_folder "$HOME/.cache/zoom"

remove_file "$HOME/.config/zoomus.conf"

loggedinusers=$(who -q | head -n 1)

sortedusers=$(echo "$loggedin_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 パッケージについても同様の指摘が上がっていました。

前へ

【翻訳】CVSS v3.1 Specification Document (逐次更新中)

次へ

Kubernetes(kube-apiserver) の脆弱性情報(CVE-2019-11254)