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
但是,对受影响函数的单个调用可能仍然启用更严格的行为。
您可以通过使用以下内容创建 /etc/python/email.cfg
配置文件来取得相同的结果:
[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 修复、安全修复和性能改进。
主要变更包括:
-
V8
JavaScript 引擎已升级至版本 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
如果要从 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
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
使用以下两个参数调用该程序:-
服务器名称在
server_name
设置中指定。 -
以下一种算法之一:
RSA
、DSA
、EC
、DH
或UNK
(如果无法识别加密算法)。
-
服务器名称在
如果要为每个加密的私钥文件手动输入密码短语,请输入:
ssl_pass_phrase_dialog builtin;
如果没有配置
ssl_pass_phrase_dialog
,这是默认行为。请注意,如果您使用这个方法,则
nginx
服务无法启动,但至少有一个受密码短语保护的私钥。在这种情况下,请使用其它方法。如果您希望
systemd
在使用systemctl
工具启动nginx
服务时对每个加密的私钥提示输入密码短语,请输入:ssl_pass_phrase_dialog exec:/usr/libexec/nginx-ssl-pass-dialog;
请注意,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
新模块流: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
有关 redis
应用程序流支持长度的详情,请查看 Red Hat Enterprise Linux 应用程序流生命周期。