第6章 主なバグ修正

本章では、ユーザーに大きな影響を与える Red Hat Enterprise Linux 7.9 で修正されたバグを説明します。

6.1. 認証および相互運用性

Directory Server への SASL バインドの使用時にデッドロックの発生を回避するようになりました

以前のバージョンでは、Directory Server への SASL バインド時に、接続プロセス中に変更されたコールバックの使用が試行される場合がありました。そのため、デッドロックが発生し、Directory Server が突然終了することがありました。今回の更新では、Directory Server で接続ロックが使用されるようになったため、IO レイヤーおよびコールバックが使用中に変更されることがなくなりました。その結果、SASL バインドの使用時にデッドロックが発生しなくなりました。

(BZ#1801327)

389-ds-base パッケージに、Directory Server ユーザーが所有するディレクトリーに必要なパーミッションを設定されるようになりました

Directory Server ユーザーが所有するファイルシステムのディレクトリーに適切なパーミッションがない場合は、Directory Server ユーティリティーにより、パーミッションが適切に調整されます。ただし、これらのパーミッションが RPM インストール時に設定されたものと異なる場合、rpm -V 389-ds-base コマンドを使用した RPM の検証は失敗に終わっていました。今回の更新で、RPM のパーミッションが修正されました。その結果、389-ds-base パッケージの検証で、パーミッションの誤りが報告されなくなりました。

(BZ#1700987)

IPv6 を含む ACI での ip バインディングルール使用時の、Directory Server でのメモリーリークを修正

Directory Server の Access Control Instruction (ACI) コンテキストは接続にアタッチされ、IPv4 プロトコルと IPv6 プロトコルの両方の構造を持ちます。以前は、クライアントが接続を閉じると、Directory Server では IPv4 構造とコンテキストのみが削除されていました。そのため、管理者が ip バインディングルールを使用して ACI を設定すると、Directory Server で IPv6 構造のメモリーリークが発生していました。今回の更新で、Directory Server では接続終了時に IPv4 と IPv6 の両方の構造が解放されるようになりました。その結果、上述のシナリオで Directory Server のメモリーリークが発生しなくなりました。

(BZ#1796558)

Ip バインディングルールを含む ACI 使用時の、Directory Server でのメモリーリークを修正

Directory Server の ACI (Access Control Instruction) に ip バインディングルールが含まれる場合は、Directory Server では ACI の評価中に ip キーワードの値が参照として保存されます。以前のリリースでは、評価が完了しても、Directory Server で ip の値が解放されませんでした。そのため、Directory Server では、ip バインディングルールを含む ACI を評価するたびに、約 100 バイトのメモリーがリークしていました。今回の更新で、Directory Server では接続ごとに構造の ip 値が記録され、接続が閉じられると構造が解放されるようになりました。その結果、上述のシナリオで Directory Server のメモリーリークが発生しなくなりました。

(BZ#1769418)

Directory Server による rootdn-allow-ip および rootdn-deny-ip パラメーターのワイルドカードの拒否を修正

以前のリリースでは、管理者が cn=RootDN Access Control Plugin,cn=plugins,cn=config エントリーの rootdn-allow-ip または rootdn-deny-ip パラメーターでワイルドカードを設定しようとすると、Directory Server でその値が拒否されていました。今回の更新で、上記のパラメーターに許可/拒否される IP アドレスを指定する際にワイルドカードを使用できるようになりました。

(BZ#1807537)

Directory Server で、システム時間の取得に失敗した場合や時間差が大きすぎる場合に更新操作を拒否

以前のバージョンでは、time() システム関数の呼び出しに失敗した場合、もしくは関数が予期せぬ値を返した場合に、Directory Server の変更シーケンス番号 (CSN) が破損する可能性がありました。結果として、管理者は環境内のすべてのレプリカを再初期化する必要がありました。今回の更新で、time() 関数が失敗した場合は Directory Server で更新操作が拒否されるようになったため、上述のシナリオにおいて、破損した CSN が Directory Server で生成されることはなくなりました。

時間差が 1 日を超える場合、Directory Server では INFO - csngen_new_csn - Detected large jump in CSN time メッセージが /var/log/dirsrv/slapd-<instance_name>/error ファイルに記録されます。ただし、Directory Server では引き続き CSN が作成され、更新操作は拒否されません。

(BZ#1837105)

スキーマ更新中の Directory Server のハングを回避

以前のリリースでは、検索操作と変更操作の負荷が混在するときに Directory Server スキーマを更新すると、すべての検索操作と変更操作がブロックされ、Directory Server がハングした状況になりました。今回の更新で、スキーマ更新時のミューテックスロックが調整されました。その結果、スキーマの更新中に Directory Server がハングしなくなりました。

(BZ#1824930)

間接的な CoS 定義を使用時の、Directory Server でのメモリーリークを修正

以前のバージョンでは、間接的な CoS (Class of Service) 定義を処理すると、Directory Server では、間接 CoS 定義を使用する検索操作ごとにメモリーリークが発生していました。今回の更新で、Directory Server は、処理後にデータベースエントリーに関連する CoS 内部構造をすべて解放するようになりました。その結果、間接的な CoS 定義の使用時にサーバーでのメモリーリークがなくなりました。

(BZ#1827284)

SSSD を使用する AD クライアントにパスワード有効期限の通知が送信されます

以前のバージョンでは、SSSD を使用する Active Directory クライアント (IdM 以外) には、パスワード有効期限の通知が送信されませんでした。これは Kerberos 認証情報を取得するために、SSSD インターフェースに最近変更が加えられたためです。

Kerberos インターフェースが更新され、有効期限の通知が正しく送信されるようになりました。

(BZ#1733289)

KDC で LDAP バックエンドからパスワード有効期間のポリシーを正常に適用されるようになりました

以前のバージョンは、Kerberos LDAP バックエンドにより、パスワードポリシーが正しく適用されていなかったため、IPA 以外の Kerberos Distribution Center (KDC) ではパスワードの最大有効期間を保証できませんでした。今回の更新で、Kerberos LDAP バックエンドが修正され、パスワードの有効期間が期待どおりに機能するようになりました。

(BZ#1782492)

nuxwdog が有効な場合に、pkidaemon ツールが PKI インスタンスの正しいステータスを報告するようになりました。

pkidaemon status コマンドは、nuxwdog ウォッチドッグが有効な場合に、PKI サーバーインスタンスのステータスが正しく報告されませんでした。今回の更新で、nuxwdog が有効かどうかに拘らず、pkidaemon は PKI サーバーの正しいステータスを検出して報告します。

(BZ#1487418)

6.2. コンパイラーおよびツール

Perl の Time::Piece モジュールの strptime() メソッドでユリウス日付を正確に解析するようになりました

Perl の Time::Piece モジュールでは、strptime() メソッドを使用して年 (%j) の日が正確に解析されませんでした。その結果、ユリウス日付が不正確に解析されていました。このバグが修正され、Time::Piece モジュールが提供する strptime() メソッドでユリウス日付が適切に処理されるようになりました。

(BZ#1751381)

perl-devel のドキュメントファイルに対するグループの書き込みパーミッションを削除

以前は、perl-devel パッケージの特定のドキュメントファイルに、グループの書き込みパーミッションが設定されていました。そのため、root グループのユーザーはこれらのファイルに書き込みを行うことができ、セキュリティー上のリスクとなっていました。今回の更新では、影響を受けるファイルでグループの書き込みビットが削除されました。その結果、perl-devel のドキュメントファイルには、グループの書き込みパーミッションが設定されなくなりました。

(BZ#1806523)

6.3. カーネル

megaraid_sas ドライバーでハイバネートからの再開が可能になりました

以前のリリースでは、megaraid_sas ドライバーがハイバネートから再開する際に、Message Signaled Interrupts (MSIx) の割り当てが正常に機能しませんでした。そのため、ハイバネートからの再開が失敗し、システムの再起動が必要でした。このバグは修正され、ハイバネートからの再開が期待どおりに実行されるようになりました。

(BZ#1807077)

nf-logger フレームワークでのロギングの無効化を修正

以前は、管理者が sysctl または echo コマンドを使用して、割り当てられた netfilter ロガーをオフにした際に、NUL 文字が NONE 文字列の末尾に追加されませんでした。そのため、strcmp() 関数が失敗し、No such file or directory というエラーが表示されました。今回の更新でこの問題が修正されました。その結果、sysctl net.netfilter.nf_log.2=NONE などのコマンドが期待どおりに機能し、ロギングをオフにします。

(BZ#1770232)

ファイルシステムの作成時に、ストレージデバイスが無効なジオメトリーを報告した場合でも、XFS が正しくマウントされるように

RHEL 7.8 では、無効なストライプジオメトリーを mkfs.xfs ツールに報告したブロックデバイスに XFS ファイルシステムが作成された場合には、このファイルシステムは SB stripe unit sanity check failed のエラーでマウントに失敗していました。

今回の更新で、XFS は無効なストライプジオメトリーをベースに作成された場合でもファイルシステムがマウントされるようになりました。

詳細は、https://access.redhat.com/solutions/5075561 のソリューションの記事を参照してください。

(BZ#1836292)

6.4. ネットワーク

同じゾーンファイルを BIND の複数のビューまたはゾーンに含めることが可能になりました

BIND 9.11 では、デーモンの書き込み可能なゾーンファイルが複数回使用されることを防ぐために、追加のチェックが導入された結果、ゾーンジャーナルのシリアライズにエラーが発生していました。そのため、BIND 9.9 が許可する設定は、このデーモンで許可されなくなりました。今回の更新で、設定ファイルチェックにおける致命的エラーメッセージが警告に置き換えられたため、同じゾーンファイルを複数のビューまたはゾーンに含めることができるようになりました。

in-view 句を使用することが、より適切なソリューションとして推奨されます。

(BZ#1744081)

ゾーンのドリフトを無効にする設定パラメーターを firewalld に追加されました

以前のリリースでは、firewalld サービスに、「ゾーンのドリフト」として知られる、文書化されていない動作が含まれていました。RHEL 7.8 では、セキュリティーに悪影響を及ぼす可能性があるという理由から、この動作が削除されました。その結果、この動作を使用して汎用ゾーンまたはフォールバックゾーンを設定するホストでは、以前許可されていた接続を firewalld が拒否するようになりました。今回の更新で、ゾーンのドリフト動作が設定可能な機能として再度追加されました。これにより、ゾーンのドリフトを使用するか、動作を無効化してよりセキュアなファイアウォール設定を使用するかを、ユーザーが決定できるようになりました。

RHEL 7.9 では、/etc/firewalld/firewalld.conf ファイルの新しい AllowZoneDrifting パラメーターはデフォルトで yes に設定されています。このパラメーターが有効な場合、以下のメッセージが firewalld ログに記録されるので注意してください。

WARNING: AllowZoneDrifting is enabled. This is considered an insecure configuration option. It will be removed in a future release. Please consider disabling it now.

(BZ#1796055)

RHEL で firewalld ログファイルをローテーションします

以前は、RHEL では firewalld ログファイルがローテーションされませんでした。そのため、ログファイル /var/log/firewalld が無限に増大していました。今回の更新で、ログローテーション設定ファイル /etc/logrotate.d/firewalldfirewalld サービスに追加され、この結果、/var/log/firewalld ログがローテーションされるようになり、/etc/logrotate.d/firewalld ファイルのローテーション設定をユーザーがカスタマイズできるようになりました。

(BZ#1754117)

6.5. セキュリティー

再帰的な依存関係による OpenSCAP のクラッシュを回避

systemd ユニットには依存ユニットを含めることができるため、OpenSCAP スキャンで循環依存関係が発生し、その結果、スキャンが予期せずに終了することがありました。今回の更新で、以前分析されたユニットは OpenSCAP で分析されなくなりました。そのため、循環依存関係の場合も、スキャンが有効な結果で完了するようになりました。

(BZ#1478285)

OpenSCAP スキャナー結果に多数の SELinux コンテキストエラーメッセージが含まれなくなりました

以前は、OpenSCAP スキャナーは、SELinux コンテキストを取得できない場合、本当のエラーではない状況であっても、ERROR レベルでそれを記録していました。そのため、スキャナー結果には多数の SELinux コンテキストエラーメッセージが含まれ、oscap コマンドラインユーティリティーと SCAP Workbench グラフィカルユーティリティー両方の出力を読み取ることが困難でした。openscap パッケージが修正され、スキャナー結果に多数の SELinux コンテキストエラーメッセージが含まれることがなくなりました。

(BZ#1640522)

audit_rules_privileged_commands が特権コマンドに対して正常に機能するようになりました

scap-security-guide パッケージの audit_rules_privileged_commands ルールの修正は、コマンド名の解析における特別なケースに対応していませんでした。また、特定のルールの順序付けにより、正常な修正が妨げられていました。そのため、ルールの特定の組み合わせが修正されたことが報告されていましたが、連続するスキャンでは、ルールが再度失敗として報告されていました。今回の更新で、ルール内の正規表現とルールの順序付けが改善されました。その結果、修正後に、特権コマンドはすべて適切に監査されます。

(BZ#1691877)

SCAP セキュリティーガイドでルールの説明が更新されました

対応しているすべての RHEL バージョンで、デフォルトのカーネルパラメーターを確実に判断することはできないため、カーネルパラメーターの設定を確認する際は、常に明示的な設定が必要となります。設定ガイドのテキストには、デフォルトのバージョンが準拠している場合は明示的な設定が不要であるという誤った記述がありました。今回の更新で、scap-security-guide パッケージのルールの記述に、コンプライアンス評価と対応する修正が正しく記載されるようになりました。

(BZ#1494606)

configure_firewalld_rate_limiting によって接続を正しくレート制限

サービス拒否 (DoS) 攻撃からシステムを保護する configure_firewalld_rate_limiting ルールは、以前は全トラフィックを受け入れるようにシステムを設定していました。今回の更新で、このルールが修正され、システムで接続が正しく速度制限されるようになりました。

(BZ#1609014)

dconf_gnome_login_banner_text が誤って失敗することがなくなりました

以前のバージョンでは、scap-security-guide パッケージの dconf_gnome_login_banner_text ルールの修正は、設定のスキャンが失敗した後に失敗していました。そのため、予想した結果と一致しないログインバナー設定が修正によって適切に更新されませんでした。今回の更新で、Bash および Ansible の修正の信頼性が向上し、OVAL 標準を使用して実装された設定チェックと連携するようになりました。その結果、修正が適切に機能するようになり、修正後にルールが失敗することがなくなりました。

(BZ#1776780)

応答しない PMDA の PCP による再起動が SELinux によって阻止されなくなりました

以前のリリースでは、pcp_pmie_t プロセスが Performance Metric Domain Agent (PMDA) と通信できるようにするルールが SELinux ポリシーにありませんでした。そのため、応答しない PMDA を再起動する pmsignal プロセスが SELinux によって拒否されました。今回の更新で、不足していたルールがポリシーに追加され、Performance Co-Pilot (PCP) が応答しない PMDA を再起動できるようになりました。

(BZ#1770123)

auditd によるシステムの停止や電源オフが SELinux によって阻止されなくなりました

以前のバージョンでは、SELinux ポリシーに、Audit デーモンが power_unit_file_t systemd ユニットを起動できるようにするルールがありませんでした。したがって、Logging ディスクパーティションに領域が残っていない場合などに auditd がシステムの停止や電源オフを行うことができるように設定されていても、これを行うことができませんでした。

今回の更新で、不足していたルールが SELinux ポリシーに追加されました。これにより、auditd がシステムの停止や電源オフを行うことができるようになりました。

(BZ#1780332)

chronyd サービスが SELinux でシェルを実行できるように

以前のリリースでは、 chronyd_t で実行中の chronyd プロセスでは、SELinux ポリシーで chronyd によるシェルの実行を拒否していたため、chrony-helper のシェルスクリプトを実行できませんでした。今回の更新では、SELinux ポリシーで、chronyd プロセスが shell_exec_t のラベルが付いたシェルの実行を許可するようになりました。そのため、chronyd サービスは、Multi-Level Security (MLS) ポリシーで正常に起動します。

(BZ#1775573)

Tang のキャッシュの確実な更新

Tang アプリケーションで鍵が生成されると (初回インストール時に) Tang ではそのキャッシュが更新されます。以前のバージョンでは、このプロセスは信頼できず、Tang 鍵を反映するようにアプリケーションキャッシュが正しく更新されていませんでした。このため、clevis で Tang ピンを使用する際に問題が生じ、クライアントに Key derivation key not available というエラーメッセージが表示されていました。今回の更新で、鍵の生成およびキャッシュ更新ロジックが Tang に移動され、依存関係を監視するファイルが削除されました。その結果、キャッシュの更新後もアプリケーションキャッシュは正しい状態のままになります。

(BZ#1703445)

6.6. サーバーおよびサービス

PPD キャッシュ中に cupsd によって消費されるメモリー量が減少しました

以前は、広範な PPD (Postscript Printer Description) を含む印刷キューが数多く作成されると、CUPS デーモンによって大量のメモリーが消費されていました。今回の更新で、CUPSD ではキャッシュファイルが存在するかどうかが確認され、/etc/cups/ppd の PPD ファイルよりも新しいか、または同じタイムスタンプの場合は、そのキャッシュファイルがロードされるようになりました。それ以外の場合は、PPD ファイルに基づいて、新たなキャッシュファイルが作成されます。その結果、上述のシナリオでメモリー消費量が 91% 低減されます。

(BZ#1672212)

存在しないプロファイルが選択された場合に SIGHUP での tuned のハングを回避するようになりました

tuned サービスは、SIGHUP シグナルを受信すると、プロファイルを再度ロードしようとします。この更新以前は、tuned は以下の状況を正しく処理できませんでした。

  • tuned プロファイルが存在しないプロファイルに設定されている。
  • 自動プロファイル選択モードがアクティブであり、推奨されるプロファイルが存在しない。

その結果、tuned サービスは応答しなくなり、再起動する必要がありました。このバグは修正され、上述のシナリオで tuned サービスがハングしなくなりました。

今回の更新で tuned の動作が変更されたことに注意してください。以前のリリースでは、ユーザーが tuned-adm off コマンドを実行して tuned サービスを再起動すると、tuned は推奨されるプロファイルのロードを試行しました。今回のリリースでは、推奨されるプロファイルが存在する場合でも、tuned はプロファイルをロードしません。

(BZ#1702724)

reapply_sysctl オプションが 1 に設定されている場合に、tunedsysctl.d ディレクトリーから設定を適用しなくなりました

以前のバージョンでは、reapply_sysctl 設定オプションが 1 に設定されている場合、tuned プロファイルの sysctl 設定が適用された後に、tuned プロファイルにより、/usr/lib/sysctl.d/lib/sysctl.d、および /usr/local/lib/sysctl.d ディレクトリーの sysctl 設定が適用されていました。そのため、これらのディレクトリーの設定により、tuned プロファイルの sysctl 設定がオーバーライドされていました。今回の更新で、reapply_sysctl オプションが 1 に設定されている場合、tuned は上記のディレクトリーの sysctl 設定を適用しなくなりました。

sysctl 設定を再び適用するには、設定を上記のディレクトリーから /etc/sysctl.d/etc/sysctl.conf、または /run/sysctl.d ディレクトリー、もしくはカスタムの tuned プロファイルに移動する必要があります。

(BZ#1776149)

6.7. ストレージ

VDO の LVM ボリュームが正しくシャットダウンするようになる

以前のリリースでは、VDO のブロック層のスタックは、VDO systemd ユニットの設定により制限されていました。その結果、VDO に保存されている LVM ボリュームを停止しようとすると、システムのシャットダウンシーケンスが 90 秒待機していました。90 秒経過すると、システムは、LVM および VDO ボリュームを誤って停止していました。

今回の更新で、VDO systemd ユニットが改善されたので、VDO の LVM にあるシステムが正常にシャットダウンされるようになりました。

また、VDO の起動設定に柔軟性が追加されました。ほとんどの VDO 設定では、/etc/fstab ファイルに特別なマウントオプションを追加する必要がなくなりました。

(BZ#1706154)

6.8. システムおよびサブスクリプション管理

microdnf によるカスタム Satellite リポジトリーの GPG キーの取得の失敗を修正しました

以前のバージョンは、microdnf で内部的に使用されていた librhsm ライブラリーは、Satellite がホストするカスタムリポジトリーで使用される相対的な gpgkey パスを誤って処理していました。したがって、ユーザーがコンテナーで microdnf コマンドを実行し、ホストの Satellite サブスクリプションを使用してカスタムリポジトリーから GNU Privacy Guard (GPG) で署名したパッケージをインストールすると、microdnf は以下のエラーで失敗しました。

GPG enabled: failed to lookup digest in keyring.

今回の更新により、librhsm で相対パス gpgkey の処理が修正されました。これにより、ユーザーはコンテナー内の Satellite からカスタムリポジトリーを正常に使用できるようになりました。

(BZ#1708628)

YUM が、失効しているサブキーを使用して GPG 鍵で署名された RPM パッケージをインストール可能

以前のリリースでは、YUM ユーティリティーは、取り消されたサブキーを使用して GNU Privacy Guard (GPG) キーで署名された RPM パッケージをインストールできませんでした。そのため、YUM は失敗し、以下のエラーメッセージが表示されました。

signature X doesn't bind subkey to key, type is subkey revocation

今回の更新で、バインディング署名をチェックする前に失効を確認するコードに変更が加えられました。これにより、YUM が、失効したサブキーを使用して GPG キーで署名された RPM パッケージをインストールできるようになりました。

(BZ#1778784)

6.9. クラウド環境の RHEL

cloud-init を使用した XFS および swap で正しく仮想マシンを作成できる

以前のリリースでは、XFS root ファイルシステムと有効な swap パーティションで仮想マシンを作成する場合に、cloud-init ユーティリティーの使用に失敗していました。さらに、以下のエラーメッセージがログに記録されました。

kernel: swapon: swapfile has holes

今回の更新で、基礎となるコードが修正され、問題が発生しなくなりました。

(BZ#1772505)


このページには機械翻訳が使用されている場合があります (詳細はこちら)。