OpenSSH と Grafana の高リスク脆弱性対策におけるアップグレード手順

Grafana 脆弱性の修正アプローチ

最近のセキュリティスキャンにより、Grafana および OpenSSH に関連する複数の高リスク脆弱性が検出されました。Grafana 側では CVE-2023-3128CVE-2022-23498CVE-2023-4822CVE-2024-1442 が確認されています。これらの脆弱性は、認証バイパスやクロスサイトスクリプティング(XSS)、権限昇格など、深刻な影響を及ぼす可能性があります。

公式ドキュメントによると、バージョン 10.4.0 以降では上記すべての問題が修正されています。したがって、現在使用中のバージョンが該当範囲内である場合は、安全な環境で最新版へのアップグレードを実施する必要があります。Docker イメージを使用している場合、タグを確認し、信頼できるレジストリから適切なイメージを取得してください。

OpenSSH の脆弱性状況と対応方針

OpenSSH 側でも多数の脆弱性が報告されており、主に以下の CVE が該当します:
CVE-2023-38408CVE-2020-15778CVE-2020-12062CVE-2021-28041CVE-2021-41617CVE-2023-51767
これらは、ローカルエスケープ、コマンドインジェクション、認証処理の不備などを含んでおり、攻撃者がシステムに不正アクセスするリスクがあります。

公式情報によれば、これらの問題を解決するには バージョン 9.5 以上 への更新が必要です。現行環境を確認すると:

[root@worker01 ~]# ssh -V
OpenSSH_8.2p1, OpenSSL 1.1.1f  31 Mar 2020

このバージョンは既に旧式であり、セキュリティサポート外のため、早急な対応が求められます。

カスタム環境における OpenSSH のソースコードビルド

本環境は Kylin V10 SP3(ARM64 アーキテクチャ)を採用しており、標準リポジトリには OpenSSH 9.5+ のパッケージが提供されていません。このため、ソースコードからのコンパイルによる導入が唯一の選択肢となります。以下に、安全かつ確実な手順を示します。

1. 現行環境のバックアップ

万が一に備え、現在の状態を完全に記録しておきます。

# パッケージリストとファイル構成の保存
rpm -qa | grep openssh > /tmp/openssh-current-list.txt
rpm -ql openssh-server > /tmp/openssh-server-files.txt

# sshd 実行可能ファイルのバックアップ
cp /usr/sbin/sshd /tmp/sshd.bak.original

2. 緊急接続手段の確保(Telnet 設定)

SSH サービスが停止した場合に備え、代替ログイン手段として Telnet を一時的に有効化します。

yum -y install xinetd telnet-server
systemctl enable xinetd --now
systemctl start xinetd
ss -tlnp | grep :23

警告:Telnet は平文通信のため、アップグレード完了後は即座に無効化してください。

3. ソースコードの取得とビルド

cd /usr/local/src
wget https://github.com/openssh/openssh-portable/archive/V_9_9_P2.tar.gz
tar zxvf V_9_9_P2.tar.gz
cd openssh-portable-V_9_9_P2

# 標準的な設定で configure を実行
./configure \
  --prefix=/usr \
  --sysconfdir=/etc/ssh \
  --with-pam \
  --with-md5-passwords \
  --with-privsep-path=/var/lib/sshd

make -j$(nproc)
make install

4. 設定ファイルの互換性チェック

新しいバージョンでは非推奨となったディレクティブが存在するため、構文チェックを行いながら不要な行をコメントアウトします。

/usr/sbin/sshd -t

エラーが出力された場合は、以下のファイルを編集して該当行を削除またはコメント:

  • /etc/ssh/sshd_config:ARM 環境では PAM 関連や GSSAPI 設定が競合する可能性あり
  • /etc/crypto-policies/back-ends/openssh.config:暗号スイートポリシーとの重複に注意
  • /etc/ssh/ssh_config.d/05-redhat.conf:ベンダー固有設定の調整が必要

5. 別ポートでの動作テスト

本番環境への影響を避けるため、2222 番ポートで一時的に sshd を起動し、外部から接続確認を行います。

/usr/sbin/sshd -D -p 2222 -f /etc/ssh/sshd_config &

別マシンから接続テスト:

ssh -p 2222 root@<target-ip>

正常にログインできることを確認してください。

6. systemd サービスの整合性確認

通常、/usr/lib/systemd/system/sshd.service は変更不要ですが、念のため以下の内容でサービス定義が維持されていることを確認します。

[Unit]
Description=OpenSSH server daemon
After=network.target
Wants=sshd-keygen.service

[Service]
ExecStart=/usr/sbin/sshd -D $OPTIONS
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure

[Install]
WantedBy=multi-user.target

7. サービス再起動と最終確認

systemctl restart sshd
ssh -V

出力が OpenSSH_9.9p2 など、新しいバージョンになっていることを確認します。

8. 安全対策の後片付け

最後に、Telnet サービスを無効化して不要な攻撃経路を閉じます。

systemctl disable xinetd --now
yum remove telnet-server xinetd -y

これにより、平文での資格情報送信リスクを排除できます。

タグ: grafana openssh CVE セキュリティアップデート ソースコードビルド

8月24日 15:09 投稿