概要
Redmineの文書管理プラグイン、dmsfに脆弱性が発表されたので、その対応を行います。
脆弱性概要
https://jvndb.jvn.jp/ja/contents/2024/JVNDB-2024-000055.html
当該プラグインを有効にしている場合、Redmineにログインしているユーザーによって、Redmineの実行権限で可能な範囲で、サーバー上の任意のファイルを取得されたり削除されたりする可能性があります。
脆弱性対象
バージョン3.1.4より前のバージョン
筆者環境
- Ubuntu 22.04
- Apache2.4
- MySQL 8.0.3
- Redmine 5.1
- dmsf 3.1.3
注意事項
脆弱性に対応したバージョンは、2024年5月現在、Redmine 4.2には対応していません。
筆者のようにRedmine 4.2を単独ユーザーで運用していない限りは、以下のオプションを強く推奨します。
- Redmine及びOS全体のバージョンアップを図る。
- 本プラグインを無効化する。
さっくりとはならない手順
- DBのバックアップ
- Webサービス停止
- 既存プラグインディレクトリの退避
- git cloneによるプラグイン入手
- DBマイグレーション
- Webサービス起動
- プラグインアップグレード確認
DBのバックアップを行います。
cd /hoge && pwd
任意のバックアップディレクトリを指定します。
mysqldump -h localhost -u redmine -p --no-tablespaces --single-transaction redmine > redmine_backup.$(date +%Y%m%d).sql
- -u ユーザ オプション db名です。自分の環境に合わせます。
- パスワードはDBのユーザパスワードです。
Apacheの停止を行います。
※ 利用者への注意喚起も行ってください。
systemctl status apache2.service
active (running)を確認します。
sudo systemctl stop apache2.service
systemctl status apache2.service
inactive (dead)を確認します。
既存プラグインを退避します。
cd /redmine/root/directory/plugins && pwd
ディレクトリは自分の環境に合わせます。
sudo mv redmine_dmsf /path/to/backup/directory/redmine_dmsf.$(date +%Y%m%d)
任意のバックアップディレクトリを指定します。
ls -ld /path/to/backup/directory/redmine_dmsf.$(date +%Y%m%d)
ディレクトリがあることを確認します。
プラグインをgit cloneします。
sudo -u www-data git clone -b v3.1.4 https://github.com/danmunn/redmine_dmsf
脆弱性に対応したv3.1.4を指定します。
ls -ld redmine_dmsf
ディレクトリがあることを確認します。
プラグインのアップグレードを行います。
cd /redmine/root/directory && pwd
自分の環境に合わせます。
sudo -u www-data bundle install
sudo -u www-data bundle exec rake redmine:plugins:migrate RAILS_ENV=production
Webサービスを再開します。
systemctl status apache2.service
inactive (dead)を確認します。
sudo systemctl start apache2.service
systemctl status apache2.service
active (running)を確認します。
バージョンアップを確認します。
- Redmineに管理者権限でログインします。
- 管理>プラグインに進みます。
- DMSFプラグインが3.1.4になっていることを確認します。
- 既存の動作(チケットの発行/編集など)に問題が無いことを確認します。
おまけ:切り戻し手順
このプラグイン、アップグレードの失敗や手順ミスで軽くRedmine全体が機能不全に陥ります。そのため、切り戻し手順を記しておきます。
通常の切り戻し
ディレクトリ移動
cd /redmine/root/directory && pwd
自分の環境に合わせます。
プラグインアンインストール
sudo -u www-data rake redmine:plugins:migrate NAME=redmine_dmsf VERSION=0 RAILS_ENV=production
ディレクトリ削除
sudo rm plugins/redmine_dmsf -Rf
Webサービス再起動
sudo systemctl restart apache2.service
それでもダメだった切り戻し(DBリストア)
cd /hoge
# mysqldumpを行ったディレクトリ
mysql -h localhost -u redmine -p redmine < redmine_backup.$(date +%Y%m%d).sql
# パスワードはredmineインストール時に設定したDBユーザのものです
sudo systemctl restart apache2.service