こんにちは、ぐっちゃんです。
Linux でパッケージをインストールする際、デフォルトでは 最新バージョン が自動で指定されます。しかし、リポジトリ内のパッケージをバージョン付きで指定すると、古いバージョンのインストールも可能となります。
では、なぜ古いバージョンをインストールが可能なのか、バージョン管理をする意味とは何かについて調べてみました。
まとめ
- 脆弱性のあるバージョンかの判断ができる
- 脆弱性の影響外のバージョンへの変更ができる
- パラメータの変更(追加や削除) や 使用されるファイルの変更 がある
脆弱性への対処
一番の理由がこちらです。
パッケージに脆弱性が見つかった際、共通脆弱性識別子CVE(Common Vulnerabilities and Exposures)が割り振られます。 利用中のパッケージが、CVE の影響範囲内のバージョンか否かの判断で役に立ちます。
例えば httpd に内在していた CVE-2024-38476 (もしくはApache.org)を見てみますと、以下の Affects に「2.4.0 through 2.4.59」とあり、この範囲外のバージョンなら影響はないと読めます。
ソフトウェアによっては、古いバージョンはサポートされていない可能性(サポート対象期間外)があるので注意!
では、実際の環境で確認してみます。(環境は MIRACLE LINUX 9.0)
★ RHEL系 ★
■現在インストールされている httpd のバージョン確認
[root@localhost ~]# rpm -q httpd
httpd-2.4.57-11.el9_4.1.x86_64
■インストール可能な httpd のバージョン一覧を出力する(一部出力略)
[root@localhost ~]# yum list –showduplicate httpd
インストール済みパッケージ
httpd.x86_64 2.4.57-11.el9_4.1 @9-latest-AppStream
利用可能なパッケージ
httpd.x86_64 2.4.51-7.el9 9-latest-AppStream ・・・・ここから
httpd.x86_64 2.4.53-7.el9 9-latest-AppStream
::::::::::::::::::::::
httpd.x86_64 2.4.57-11.el9_4 9-latest-AppStream
httpd.x86_64 2.4.57-11.el9_4.1 9-latest-AppStream・・ここまでインストール可能
私の利用している MIRACLE LINUX 9.0では、httpd-2.4.57までしかなく、このCVEには対応できていないことがわかります。
なお、コミュニティ版のサイトを見てみると、最新版が httpd-2.4.62 となっており、既に対応されたものががリリースされています。(2024/10/13 現在)
この場合、リポジトリに最新バージョンのパッケージが入ることを待ちましょう。
新機能の追加
こちらはなかなか気づきにくいです。
バージョンを上げたことによって、設定ファイル内等のパラメータの変更(追加や削除) や 使用されるファイルの変更がある可能性があります。
- 廃止になったパラメータを記入したらサービスが起動できなくなった!
- メジャーバージョンを上げたら、一時ファイルの格納場所が変更されてサービスが正常に動かない!
といったことがあります。
いかがでしたでしょうか?
「バージョン管理は全部最新版にすればいい!」とよく考えがちですが、バージョンによっては脆弱性があったり、回避可能なエラーやリスクについて考えたりすることができます。
以上、バージョン管理をする意味 でした。
コメント