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

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

Zoomが様々な意味で安心して使えるようになるプロダクトになるのは、まだまだ先の話のように見えますので、今後も注視していきましょう。

04/08追記 zoomのLinuxパッケージが更新されていたのでスクリプトを確認したところ、問題になっていたところは削除されていました。良い傾向ですね :-)


    $ diff -urN zoom_20200325/postinst zoom_20200408/postinst
    --- zoom_20200325/postinst      2020-03-25 13:56:43.000000000 +0900
    +++ zoom_20200408/postinst      2020-04-07 19:49:49.000000000 +0900
    @@ -4,19 +4,6 @@

     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"
    -
     update-mime-database /usr/share/mime || true
     #update-desktop-database || true
     if [ -x "/usr/bin/update-desktop-database" ]; then


    $ diff -urN zoom_20200325/postrm zoom_20200408/postrm
    --- zoom_20200325/postrm        2020-03-25 13:56:43.000000000 +0900
    +++ zoom_20200408/postrm        2020-04-07 19:49:49.000000000 +0900
    @@ -6,38 +6,6 @@

     [ "$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
    \ ファイル末尾に改行がありません
    +fi
    \ ファイル末尾に改行がありません

前へ

「Debianセキュリティ勧告」発行までの対応作業の内側