タグ: openssl

  • AlmaLinux・Rocky Linux・RHEL 8.10のopensslは同じ?6台で比べたらリリース番号に差が出た

    結論から書きます。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は登録してから)

    参考