perldelta - Perl v5.38.2 的新特性
本文档描述了 5.38.0 版本和 5.38.2 版本之间的差异。请注意:本文档忽略了 Perl 5.38.1,这是一个仅存在几天就出现问题的版本。
如果您要从 5.37.0 等早期版本升级,请先阅读 perl5380delta,其中描述了 5.37.0 和 5.38.0 之间的差异。
此版本修复了以下安全问题。
该漏洞由 Nathan Mills [email protected]
直接报告给 Perl 安全团队。
在 perl 5.30.0 到 5.38.0 之间,由 perl 编译的精心制作的正则表达式会导致堆分配缓冲区中发生一个字节的攻击者控制的缓冲区溢出。
该漏洞由 GitHub 用户 ycdxsb 报告给英特尔产品安全事件响应团队 (PSIRT) https://github.com/ycdxsb/WindowsPrivilegeEscalation。PSIRT 随后将其报告给 Perl 安全团队。
Perl for Windows 依赖于系统路径环境变量来查找 shell (cmd.exe
)。在运行使用 Windows Perl 解释器的可执行文件时,Perl 会尝试在操作系统中查找并执行 cmd.exe
。但是,由于路径搜索顺序问题,Perl 最初会在当前工作目录中查找 cmd.exe。
具有有限权限的攻击者可以通过将 cmd.exe
放置在权限较弱的位置(例如 C:\ProgramData
)来利用此行为。通过这样做,当管理员尝试从这些受损位置使用此可执行文件时,可以执行任意代码。
Perl 5.38.2 代表了自 Perl 5.38.0 以来大约 5 个月的开发,包含来自 4 位作者的 34 个文件的约 6,100 行更改。
不包括自动生成的 文件、文档和发布工具,对 9 个 .pm、.t、.c 和 .h 文件进行了大约 1,300 行更改。
Perl 凭借其充满活力的用户和开发人员社区,在进入其第四个十年时继续蓬勃发展。以下人员已知为 Perl 5.38.2 的改进做出了贡献
Karl Williamson、Paul Evans、Steve Hay、Tony Cook。
上面的列表几乎肯定是不完整的,因为它是由版本控制历史记录自动生成的。特别是,它不包括报告 Perl 错误跟踪器问题的贡献者(非常感谢)的姓名。
此版本中包含的许多更改源自 Perl 核心包含的 CPAN 模块。我们感谢整个 CPAN 社区帮助 Perl 蓬勃发展。
有关 Perl 所有历史贡献者的更完整列表,请参阅 Perl 源代码分发中的 AUTHORS 文件。
如果您发现您认为是错误,您可以查看 Perl 错误数据库,地址为 https://github.com/Perl/perl5/issues。您也可以在 Perl 主页 https://www.perl5.cn/ 上找到相关信息。
如果您认为您遇到了一个未报告的错误,请在 https://github.com/Perl/perl5/issues 上创建一个问题。请确保将您的错误缩减为一个微小但足够的测试用例。
如果您要报告的错误涉及安全问题,不适合发送到公共问题跟踪器,请参阅 "perlsec 中的 SECURITY VULNERABILITY CONTACT INFORMATION",了解如何报告该问题。
如果您想感谢 Perl 5 维护者为 Perl 5 所做的工作,您可以运行 perlthanks
程序。
perlthanks
这将向 Perl 5 维护者列表发送一封电子邮件,表达您的感谢。
Changes 文件,用于解释如何查看有关更改的详尽信息。
INSTALL 文件,用于说明如何构建 Perl。
README 文件,用于一般信息。
Artistic 和 Copying 文件,用于版权信息。