4.12. 動的プログラミング言語、Web サーバー、およびデータベースサーバー
メールアドレスの解析を制御するための Python の新しい環境変数
CVE-2023-27043 の問題を軽減するために、メールアドレスをより厳密に解析するための後方互換性のない変更が Python 3 に導入されました。
RHSA-2024:2024 の更新では、新しい環境変数 PYTHON_EMAIL_DISABLE_STRICT_ADDR_PARSING
が導入されています。この変数を true
に設定すると、比較的厳密ではない以前の解析動作が、システム全体のデフォルトになります。
export PYTHON_EMAIL_DISABLE_STRICT_ADDR_PARSING=true
ただし、該当する関数を個別に呼び出すと、より厳密な動作が有効になる可能性があります。
次の内容で /etc/python/email.cfg
設定ファイルを作成しても、同じ結果を得ることができます。
[email_addr_parsing] PYTHON_EMAIL_DISABLE_STRICT_ADDR_PARSING = true
詳細は、ナレッジベース記事 Mitigation of CVE-2023-27043 introducing stricter parsing of email addresses in Python を参照してください。
Jira:RHELDOCS-17369[1]
新しい nodejs:20
モジュールストリームが完全にサポートされるようになりました。
以前はテクノロジープレビューとして利用できた新しい nodejs:20
モジュールストリームは、RHEA-2023:7252 アドバイザリーのリリースで完全にサポートされています。nodejs:20
モジュールストリームでは、LTS (Long Term Support) バージョンの Node.js 20.9
が提供されるようになりました。
RHEL 9.3 に含まれる Node.js 20
は、RHEL 9.1 以降で利用可能な Node.js 18
に比べて、多数の新機能、バグ修正、セキュリティー修正、およびパフォーマンスの改善を提供します。
主な変更点は、以下のとおりです。
-
V8
JavaScript エンジンがバージョン 11.3 にアップグレードされました。 -
npm
パッケージマネージャーがバージョン 9.8.0 にアップグレードされました。 -
Node.js
に、新しい実験的な権限モデルが導入されています。 -
Node.js
に、新しい実験的な Single Executable Application (SEA) 機能が導入されています。 -
Node.js
は、Experimental ECMAScript モジュール (ESM) ローダーの改良を提供します。 -
Node.js 18
で実験的なnode:test
モジュールとして導入されたネイティブテストランナーは、現在は安定していると考えられています。 -
Node.js
は、さまざまなパフォーマンスの向上をもたらします。
nodejs:20
モジュールストリームをインストールするには、以下を使用します。
# dnf module install nodejs:20
nodejs:18
ストリームからアップグレードする場合は、後のストリームへの切り替え を参照してください。
nodejs
Application Streams のサポート期間の詳細は、Red Hat Enterprise Linux Application Streams のライフサイクル を参照してください。
Python tarfile
抽出関数への新しい filter
引数
CVE-2007-4559 の問題を軽減するために、Python は tarfile
抽出関数に filter
引数を追加します。この引数により、安全性を高めるために tar
機能をオフにすることができます (CVE-2007-4559 ディレクトリートラバーサル攻撃のブロックを含む)。フィルターが指定されていない場合、RHEL ではデフォルトで、最も安全ですが制限が最も高い 'data'
フィルターが使用されます。さらに、アプリケーションが影響を受けると、Python は警告を発行します。
警告を非表示にする手順などの詳細は、ナレッジベースの記事 Mitigation of directory traversal attack in the Python tarfile library (CVE-2007-4559) を参照してください。
Jira:RHELDOCS-16405[1]
HTTP::Tiny
Perl モジュールは、デフォルトで TLS 証明書を検証するようになる
HTTPS の使用時に TLS 証明書を検証するために、HTTP::Tiny
Perl モジュールの verify_SSL
オプションのデフォルト値が 0
から 1
に変更されました。この変更により、HTTP::Tiny
の CVE-2023-31486 と CPAN Perl モジュールの CVE-2023-31484 が修正されます。
TLS 検証のサポートを利用できるようにするために、この更新では次の依存関係を perl-HTTP-Tiny
パッケージに追加します。
-
perl-IO-Socket-SSL
-
perl-Mozilla-CA
-
perl-Net-SSLeay
Bugzilla:2228412[1]
httpd
がバージョン 2.4.57 にリベース
Apache HTTP サーバーはバージョン 2.4.57 に更新され、RHEL 9.1 以降で利用可能なバージョン 2.4.53 にバグ修正、機能拡張、セキュリティー修正が加えられています。
主な機能拡張は、次のとおりです。
-
httpd
で提供されるrotatelogs
ユーティリティーには、最初のログファイルを除くすべてのローテーションされたログファイルを切り詰めるための新しい-T
オプションが導入されています。 -
mod_ldap
モジュールのLDAPConnectionPoolTTL
ディレクティブは、負の値を指定すると、接続された時期に関係なく接続を再利用できるようになりました。以前は、負の値はエラーとして処理されていました。 -
mod_proxy_hcheck
モジュールのワーカーが、ワーカーのタイムアウト設定に従って正しくタイムアウトするようになりました。 -
mod_proxy_hcheck
モジュールのhcmethod
パラメーターは、HTTP/1.1 リクエストに新しいGET11
、HEAD11
、およびOPTIONS11
メソッドを提供するようになりました。
httpd
の新しい mod_authnz_fcgi
モジュール
Apache HTTP Server には mod_authnz_fcgi
モジュールが含まれるようになりました。これにより、FastCGI オーソライザーアプリケーションがユーザーを認証し、リソースへのアクセスを承認できるようになります。
mod_authnz_fcgi
モジュールはデフォルトではロードされません。このモジュールをロードするには、/etc/httpd/conf.modules.d/00-optional.conf
ファイル内の次の行のコメントを解除します。
LoadModule authnz_fcgi_module modules/mod_authnz_fcgi.so
Bugzilla:2173295[1]
nginx:1.22
の新しい ssl_pass_phrase_dialog
ディレクティブ
nginx:1.22
モジュールストリームのこの更新により、新しい ssl_pass_phrase_dialog
ディレクティブを使用して、暗号化された秘密キーごとに nginx
の起動時に呼び出される外部プログラムを設定できるようになります。
新しいディレクティブを使用するには、次のいずれかの行を /etc/nginx/nginx.conf
ファイルに追加します。
暗号化された秘密キーファイルごとに外部プログラムを呼び出すには、次のように入力します。
ssl_pass_phrase_dialog exec:<path_to_program>;
nginx
は、次の 2 つの引数を使用してこのプログラムを呼び出します。-
server_name
設定で指定されたサーバー名。 -
次のアルゴリズムのいずれか:
RSA
、DSA
、EC
、DH
、またはUNK
(暗号アルゴリズムが認識できない場合)。
-
暗号化された秘密キーファイルごとにパスフレーズを手動で入力する場合は、次のように入力します。
ssl_pass_phrase_dialog builtin;
これは、
ssl_pass_phrase_dialog
が設定されていない場合のデフォルトの動作です。この方法を使用しても、少なくとも 1 つの秘密キーがパスフレーズで保護されている場合、
nginx
サービスは起動に失敗することに注意してください。この場合は、他のいずれかの方法を使用してください。systemctl
ユーティリティーを使用してnginx
サービスを開始するときに、systemd
で暗号化された秘密キーごとにパスフレーズの入力を求めるプロンプトを表示するには、次のように入力します。ssl_pass_phrase_dialog exec:/usr/libexec/nginx-ssl-pass-dialog;
nginx
の ssl_pass_phrase_dialog
ディレクティブは、Apache HTTP Server の SSLPassPhraseDialog
ディレクティブに似ていることに注意してください。
新しい rhel9/squid
コンテナーイメージ
Red Hat Container Registry で rhel9/squid
コンテナーイメージが利用できるようになりました。Squid
は、Web クライアント向けの高パフォーマンスのプロキシーキャッシュサーバーで、FTP、gopher、および HTTP のデータオブジェクトをサポートします。従来のキャッシュソフトウェアとは異なり、Squid
はすべてのリクエストを単一の非ブロックの I/O 駆動プロセスで処理します。Squid
は、メタデータ、特に RAM にキャッシュされたホットオブジェクトを保持し、DNS ルックアップをキャッシュし、ノンブロッキング DNS ルックアップをサポートして、失敗したリクエストのネガティブキャッシュを実装します。
新しいコンテナーイメージをプルするには、次を実行します。
# podman pull registry.redhat.io/rhel9/squid
新しいモジュールストリーム: redis:7
高度なキーバリューストアの Redis 7
が、新しいモジュールストリーム redis:7
として利用できるようになりました。
Redis 6
と比較した場合の主な変更点は、以下のとおりです。
- Redis Functions API のサーバーサイドスクリプト
- きめ細かなアクセス制御リスト (ACL) のサポート
- クラスターの共有パブリッシュ/サブスクライブ (pub/sub) サポート
- さまざまな新しいコマンドとコマンド引数
Redis 7
では、後方互換性のない変更がいくつか導入されています。次に例を示します。
-
Redis 7
は、追加専用ファイル (AOF) をフォルダー内の複数のファイルとして保存するようになりました。 -
Redis 7
は、以前のバージョンと互換性のない Redis Database (RDB) ファイルの新しいバージョン形式を使用しています。
機能と互換性のない変更の完全なリストは、アップストリームのリリースノート を参照してください。
redis:7
モジュールストリームをインストールするには、以下を使用します。
# dnf module install redis:7
redis
Application Streams のサポート期間の詳細は、Red Hat Enterprise Linux Application Streams のライフサイクル を参照してください。