4.12. 动态编程语言、网页和数据库服务器
Python 中的一个控制电子邮件地址解析的新环境变量
为缓解 CVE-2023-27043,一个向后兼容的更改,以确保在 Python 3 中引入了更严格的电子邮件地址的解析。
				RHSA-2024:2024 中的更新引入了一个新的 PYTHON_EMAIL_DISABLE_STRICT_ADDR_PARSING 环境变量。当您将此变量设置为 true 时,以前的、不太严格的解析行为是整个系统的默认设置:
			
export 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
[email_addr_parsing]
PYTHON_EMAIL_DISABLE_STRICT_ADDR_PARSING = true
如需更多信息,请参阅知识库文章 缓解 Python 中引入更严格的电子邮件地址解析的 CVE-2023-27043。
Jira:RHELDOCS-17369[1]
完全支持新的 nodejs:20 模块流
					以前作为技术预览提供的新模块流 nodejs:20 被 RHEA-2023:7252 公告的发布完全支持。nodejs:20 模块流现在提供 Node.js 20.9,它是一个长期支持(LTS)版本。
				
				从 RHEL 9.1 开始,与 Node.js 18 相比,RHEL 9.3 中包含的 Node.js 20 提供了新功能、bug 修复、安全修复和性能改进。
			
主要变更包括:
- 
						
V8JavaScript 引擎已升级至版本 11.3。 - 
						
npm软件包管理器已升级至版本 9.8.0。 - 
						
Node.js引入了一个新的实验性权限模型。 - 
						
Node.js引入了一个新的实验性单可执行文件应用程序(SEA)功能。 - 
						
Node.js提供了对实验性 ECMAScript 模块(ESM)加载程序的改进。 - 
						在 
Node.js 18中作为实验性node:test模块引进的原生测试运行程序现在被视为是稳定的。 - 
						
Node.js提供了各种性能改进。 
				要安装 nodejs:20 模块流,请使用:
			
dnf module install nodejs:20
# dnf module install nodejs:20
				如果要从 nodejs:18 流升级,请参阅 切换到更新的流。
			
				有关 nodejs 应用程序流支持长度的详情,请查看 Red Hat Enterprise Linux 应用程序流生命周期。
			
Python tarfile 提取函数的新的 filter参数
					要缓解 CVE-2007-4559,Python 向 tarfile 提取函数中添加了一个 filter 参数。参数允许关闭 tar 功能,以提高安全性(包括阻止 CVE-2007-4559 目录遍历攻击)。如果没有指定过滤器,则默认在 RHEL 中使用 'data' 过滤器,该过滤器是最安全但最受限的。另外,当应用程序会受到影响时,Python 会发出一个警告。
				
如需更多信息,包括隐藏警告的说明,请参阅知识库文章 Python tarfile 库中目录遍历攻击的缓解(CVE-2007-4559) 。
Jira:RHELDOCS-16405[1]
HTTP::Tiny Perl 模块现在默认验证 TLS 证书
					HTTP::Tiny Perl 模块中 verify_SSL 选项的默认值已从 0 改为 1,以在使用 HTTPS 时验证 TLS 证书。这个更改修复了用于 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 rebase 到版本 2.4.57
Apache HTTP 服务器已更新至版本 2.4.57,与 2.4.53 版本相比,它提供了自 RHEL 9.1 以来的 bug 修复、功能增强和安全修复。
主要改进包括:
- 
						
httpd提供的rotatelogs工具引入了一个新的-T选项,来截断除所有轮转日志文件,除了初始日志文件。 - 
						
mod_ldap模块的LDAPConnectionPoolTTL指令现在接受负值,以便能够重新使用任何时候的连接。在以前的版本中,负值作为错误处理。 - 
						
mod_proxy_hcheck模块的 worker 现在可以根据 worker 超时设置正确超时。 - 
						
mod_proxy_hcheck模块的hcmethod参数现在为 HTTP/1.1 请求提供新的GET11、HEAD11和OPTIONS11方法。 
httpd中新 mod_authnz_fcgi 模块
					Apache HTTP 服务器现在包含 mod_authnz_fcgi 模块,它使 FastCGI 授权应用程序可以验证用户并授权对资源的访问。
				
				mod_authnz_fcgi 模块不会默认加载。要载入此模块,请取消 /etc/httpd/conf.modules.d/00-optional.conf 文件中以下行的注释:
			
LoadModule authnz_fcgi_module modules/mod_authnz_fcgi.so
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>;
ssl_pass_phrase_dialog exec:<path_to_program>;Copy to Clipboard Copied! Toggle word wrap Toggle overflow nginx使用以下两个参数调用该程序:- 
								服务器名称在 
server_name设置中指定。 - 
								以下一种算法之一:
RSA、DSA、EC、DH或UNK(如果无法识别加密算法)。 
- 
								服务器名称在 
 如果要为每个加密的私钥文件手动输入密码短语,请输入:
ssl_pass_phrase_dialog builtin;
ssl_pass_phrase_dialog builtin;Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果没有配置
ssl_pass_phrase_dialog,这是默认行为。请注意,如果您使用这个方法,则
nginx服务无法启动,但至少有一个受密码短语保护的私钥。在这种情况下,请使用其它方法。如果您希望
systemd在使用systemctl工具启动nginx服务时对每个加密的私钥提示输入密码短语,请输入:ssl_pass_phrase_dialog exec:/usr/libexec/nginx-ssl-pass-dialog;
ssl_pass_phrase_dialog exec:/usr/libexec/nginx-ssl-pass-dialog;Copy to Clipboard Copied! Toggle word wrap Toggle overflow 
				请注意,nginx 中的 ssl_pass_phrase_dialog 指令与 Apache HTTP 服务器中的 SSLPassPhraseDialog 指令类似。
			
一个新的 rhel9/squid 容器镜像
					rhel9/squid 容器镜像现在在 Red Hat Container Registry 中提供。Squid 是 Web 客户端的高性能代理缓存服务器,支持 FTP、gopher 和 HTTP 数据对象。与传统的缓存软件不同,Squid 在单一的、非阻塞的、I/O 驱动的进程中处理所有请求。Squid 在 RAM 中保留缓存的元数据,特别是热对象,缓存 DNS 查找,支持非阻塞 DNS 查找,并实现失败请求的负缓存。
				
要拉取新容器镜像,请运行:
podman pull registry.redhat.io/rhel9/squid
# 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 数据库(RDB)文件使用一个新的版本格式 
有关功能和不兼容更改的完整列表,请参阅 上游发行注记。
				要安装 redis:7 模块流,请使用:
			
dnf module install redis:7
# dnf module install redis:7
				有关 redis 应用程序流支持长度的详情,请查看 Red Hat Enterprise Linux 应用程序流生命周期。