Grafana 脆弱性の修正アプローチ
最近のセキュリティスキャンにより、Grafana および OpenSSH に関連する複数の高リスク脆弱性が検出されました。Grafana 側では CVE-2023-3128、CVE-2022-23498、CVE-2023-4822、CVE-2024-1442 が確認されています。これらの脆弱性は、認証バイパスやクロスサイトスクリプティング(XSS)、権限昇格など、深刻な影響を及ぼす可能性があります。
公式ドキュメントによると、バージョン 10.4.0 以降では上記すべての問題が修正されています。したがって、現在使用中のバージョンが該当範囲内である場合は、安全な環境で最新版へのアップグレードを実施する必要があります。Docker イメージを使用している場合、タグを確認し、信頼できるレジストリから適切なイメージを取得してください。
OpenSSH の脆弱性状況と対応方針
OpenSSH 側でも多数の脆弱性が報告されており、主に以下の CVE が該当します:
CVE-2023-38408、CVE-2020-15778、CVE-2020-12062、CVE-2021-28041、CVE-2021-41617、CVE-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
これにより、平文での資格情報送信リスクを排除できます。