結論から書きます。AlmaLinux 8.10・Rocky Linux 8.10・RHEL 8.10の3台で openssl version を実行すると、どれも「OpenSSL 1.1.1k FIPS 25 Mar 2021」と表示され、見分けがつきません。ところが rpm -q openssl でリリース番号まで見ると、Rocky Linux 8.10だけが 1.1.1k-16.el8_10、AlmaLinuxとRHELは 1.1.1k-12.el8_9 でした。-12と-16の間には、CVE-2024-5535やCVE-2025-9230など複数のセキュリティ修正が入っています。
差の原因はディストリの違いではなく、インストール時に更新済みリポジトリを使ったかどうかでした。この記事では、検証の手順と実際の出力、原因の根拠、各ディストリでの確認方法をまとめます。
検証環境
自宅のKVM(libvirt)上に、kickstartで6台のVMを用意しました。検証日は2026年11月1日です。
| ホスト名 | OS | カーネル |
|---|---|---|
| alma810 | AlmaLinux 8.10 (Cerulean Leopard) | 4.18.0-553.el8_10 |
| rocky810 | Rocky Linux 8.10 (Green Obsidian) | 4.18.0-553.134.1.el8_10 |
| rhel810 | Red Hat Enterprise Linux 8.10 (Ootpa) | 4.18.0-553.el8_10 |
| alma98 | AlmaLinux 9.8 (Olive Jaguar) | 5.14.0-687.5.3.el9_8 |
| rocky98 | Rocky Linux 9.8 (Blue Onyx) | 5.14.0-687.10.1.el9_8.0.1 |
| rhel98 | Red Hat Enterprise Linux 9.8 (Plow) | 5.14.0-687.5.3.el9_8 |
同じコマンドを6台に流してログを残すために、labrun(全台にSSHで実行してホストごとにログ保存)と labdiff(ログ同士の差分表示)という小さな自作スクリプトを使っています。中身はssh・diffのラッパーなので、手作業でも同じ検証ができます。
手順1:バージョンを比べる
まず、パッケージ名と openssl version を全台で取得しました。
$ rpm -q openssl; openssl version
8.10の3台の結果です。
=== host: alma810 (192.168.122.111)
openssl-1.1.1k-12.el8_9.x86_64
OpenSSL 1.1.1k FIPS 25 Mar 2021
=== host: rocky810 (192.168.122.174)
openssl-1.1.1k-16.el8_10.x86_64
OpenSSL 1.1.1k FIPS 25 Mar 2021
=== host: rhel810 (192.168.122.129)
openssl-1.1.1k-12.el8_9.x86_64
OpenSSL 1.1.1k FIPS 25 Mar 2021
9.8の3台は、すべて同じでした。
openssl-3.5.5-2.el9_8.x86_64
OpenSSL 3.5.5 27 Jan 2026 (Library: OpenSSL 3.5.5 27 Jan 2026)
結果一覧
| ホスト | rpm -q openssl | openssl version |
|---|---|---|
| alma810 | 1.1.1k-12.el8_9 | 1.1.1k FIPS 25 Mar 2021 |
| rocky810 | 1.1.1k-16.el8_10 | 1.1.1k FIPS 25 Mar 2021 |
| rhel810 | 1.1.1k-12.el8_9 | 1.1.1k FIPS 25 Mar 2021 |
| alma98 | 3.5.5-2.el9_8 | 3.5.5 27 Jan 2026 |
| rocky98 | 3.5.5-2.el9_8 | 3.5.5 27 Jan 2026 |
| rhel98 | 3.5.5-2.el9_8 | 3.5.5 27 Jan 2026 |
openssl version の表示は8.10の3台で完全に同じです。違いはrpmのリリース番号(-12と-16)にしか現れません。
手順2:なぜ差が出たのかを調べる
ビルド日時とインストール日時を確認しました。
$ rpm -q --qf "%{NAME}-%{VERSION}-%{RELEASE} build=%{BUILDTIME:date} install=%{INSTALLTIME:date}\n" openssl openssl-libs
[alma810]
openssl-1.1.1k-12.el8_9 build=2023年12月18日 18時02分10秒 install=2026年10月31日 02時30分31秒
[rocky810]
openssl-1.1.1k-16.el8_10 build=2026年06月17日 00時38分37秒 install=2026年10月31日 03時54分18秒
[rhel810]
openssl-1.1.1k-12.el8_9 build=2023年11月30日 22時10分21秒 install=2026年10月31日 05時28分01秒
3台とも10月31日にOSをインストールしたときに入ったものです。dnfでの更新履歴も確認しましたが、どのホストも0件でした。
$ sudo grep -c Upgraded /var/log/dnf.rpm.log
0
つまり、インストール後に誰も更新していないのに、rocky810だけ2026年6月ビルドのパッケージが入っています。カーネルもrocky810だけ 4.18.0-553.134.1 と新しく、ほかの2台は8.10のリリース時点の 4.18.0-553 のままです。
ここから、alma810とrhel810は8.10のインストールメディア(ISO)に収録されたパッケージでインストールされ、rocky810はインストール時点で最新のリポジトリからパッケージを取得した、と判断できます。8.10のISOに入っているopensslは8.9時代にビルドされた-12のままなので、「8.10を入れたのにel8_9」という状態になります。
-12から-16の間に何が直ったか
rocky810で rpm -q --changelog openssl を見ると、-12以降に次の修正が入っています。
* 月 6月 01 2026 Dmitry Belyavskiy <dbelyavs@redhat.com> - 1:1.1.1k-16
- Fix CVE-2026-45447: Heap Use-After-Free in OpenSSL PKCS7_verify()
- Fix CVE-2024-4741: Use After Free with SSL_free_buffers
* 木 2月 12 2026 Antonio Vieiro <avieirov@redhat.com> - 1:1.1.1k-15
- Fix CVE-2025-69419: Arbitrary code execution due to out-of-bounds write in PKCS#12 processing
* 月 12月 22 2025 Nikita Sanjay Patwa <npatwa@redhat.com> - 1:1.1.1k-14.1
- Backport fix for openssl: Out-of-bounds read & write in RFC 3211 KEK Unwrap
Fix CVE-2025-9230
* 火 9月 17 2024 Maurizio Barbaro <mbarbaro@redhat.com> - 1:1.1.1k-14
- Backport fix SSL_select_next proto from OpenSSL 3.2
Fix CVE-2024-5535
| リリース | CVE | 内容(changelogより) |
|---|---|---|
| -14 | CVE-2024-5535 | SSL_select_next_protoの不具合 |
| -14.1 | CVE-2025-9230 | RFC 3211 KEK Unwrapの境界外読み書き |
| -15 | CVE-2025-69419 | PKCS#12処理の境界外書き込み |
| -16 | CVE-2024-4741 | SSL_free_buffersのUse After Free |
| -16 | CVE-2026-45447 | PKCS7_verify()のヒープUse After Free |
alma810とrhel810は、これらの修正がすべて入っていない状態です。どれも「1.1.1k」のまま、リリース番号だけで修正が積み上がっていくのがRHEL系のバックポート方式です。
この差が意味すること
openssl versionだけでは脆弱性対応の有無は分かりません。上流のバージョン文字列は変わらないからです。- 確認するときは
rpm -q opensslでリリース番号まで見るか、rpm -q --changelogで目的のCVEが含まれているかを確認します。 - 「最新のマイナーリリースを入れたから安全」とは限りません。ISOからオフラインで入れたサーバーは、インストール直後に更新が必要です。
各ディストリでの確認と更新の方法
更新があるかどうかは、次のコマンドで確認できます。
$ sudo dnf check-update openssl openssl-libs
$ sudo dnf updateinfo list --security openssl
$ rpm -q --changelog openssl | grep CVE-2024-5535
今回、AlmaLinuxとRocky Linuxの8.10では、check-updateでさらに新しいパッケージ(1.1.1k-18)が表示されました。つまりrocky810の-16も、検証時点で最新ではありません。
更新するときは次のとおりです。
$ sudo dnf update openssl openssl-libs
RHELは、サブスクリプションを登録しないとRed Hatのリポジトリからパッケージを取得できません。今回のrhel810は未登録(subscription-manager status の結果は「全体的な状態: 無効」)です。RHELで更新するには、先に登録が必要です。
$ sudo subscription-manager register
$ sudo dnf update openssl openssl-libs
なお、この記事の検証では更新はまだ当てていません。更新前後の差分は、続編の記事でまとめる予定です。
9.8側は3台とも同じ
9.8の3台は、どれも openssl-3.5.5-2.el9_8 で一致しました。changelogの先頭はCVE-2026-31790の修正です。ただし、rocky98のcheck-updateでは 3.5.8-2.el9_8 が表示されており、9系でもインストール後の更新は必要です。
まとめ
- AlmaLinux・Rocky Linux・RHELの8.10で、opensslのリリースが-12と-16に分かれた
- 原因はディストリの差ではなく、インストール時にISOのパッケージを使ったか、最新リポジトリを使ったか
- -12と-16の間には、CVE-2024-5535、CVE-2025-9230、CVE-2025-69419、CVE-2024-4741、CVE-2026-45447の修正がある
openssl versionではなく、rpm -qのリリース番号とchangelogで確認する- OSを入れたら、まず
dnf update(RHELは登録してから)