Dancer2 2.2.0 发布;安全更新请务必阅读

💡 原文英文,约500词,阅读约需2分钟。
📝

内容提要

Dancer2 发布 2.2.0 维护版,修复静态文件路径穿越(高危)、钩子异常处理、响应头注入等漏洞,移除 Data::Dumper 序列化器,并修复 send_file 错误码、path/dirname 参数丢失、JSON UTF-8 处理及 dancer2 gen 等问题。

🔎

延伸解读

安全修复的紧迫性

本次更新包含两个安全公告:GHSA-6xw8-v24c-m783(高危)影响2.1.0及以下版本,涉及静态文件路径穿越;GHSA-v527-r4px-7vx7(中危)影响2.0.0至2.1.0,涉及钩子异常处理。若您运行受影响版本,应立即升级至2.2.0,以避免潜在攻击。

破坏性变更:Data::Dumper 序列化器移除

2.2.0 移除了核心中的 Data::Dumper 序列化器及相关关键字 from_dumper 和 to_dumper。如果您的应用依赖这些功能,需从 CPAN 安装 Dancer2::Serializer::Dumper 模块,否则应用将无法正常运行。升级前请检查代码。

关键错误修复提升稳定性

本次修复了多个影响开发的问题:send_file 现在返回正确错误码;path() 和 dirname() 不再丢失第一个参数;JSON 序列化器正确处理 UTF-8 和 blessed 对象;uri_for_route 支持参数 0;钩子仅编译一次。这些改进减少了常见陷阱。

dancer2 gen 工具修复

生成器工具 dancer2 gen 得到多项修复:-g 和 -r 选项不再在写入应用后崩溃;应用目录现在根据带连字符的发行版名称命名;添加到 MANIFEST.SKIP 的模式现在是相对路径且匹配正确。这些修复让应用生成更可靠。

Q&A

Dancer2 2.2.0 修复了哪些安全漏洞?

修复了静态文件路径穿越(高危,影响 <=2.1.0)、钩子异常处理(中危,影响 2.0.0-2.1.0)和响应头注入(CR/LF 被剥离)。此外,AutoPage 不再在大小写不敏感文件系统上将布局作为页面提供,会话 ID 现在始终使用 Crypt::URandom 生成,validate_id 更严格地拒绝无效会话 ID。

Dancer2 2.2.0 有哪些破坏性变更?

移除了核心的 Data::Dumper 序列化器,以及 from_dumper 和 to_dumper 关键字。如果你的应用使用了它们,需要从 CPAN 下载 Dancer2::Serializer::Dumper。

Dancer2 2.2.0 修复了哪些与 send_file 相关的 bug?

send_file 现在会发送正确的错误码。

Dancer2 2.2.0 中 path() 和 dirname() 关键字有什么变化?

path() 和 dirname() DSL 关键字不再丢弃它们的第一个参数。

Dancer2 2.2.0 对 JSON 序列化器做了哪些改进?

Serializer::JSON 现在能正确处理只读值的 UTF-8,并且不再无限递归进入 blessed 对象。

Dancer2 2.2.0 中 dancer2 gen 命令修复了哪些问题?

修复了多个问题:-g 和 -r 在写入应用后不再终止;应用目录以带连字符的发行版名称命名;添加到 MANIFEST.SKIP 的模式是相对路径且能正确匹配。

🏷️

标签

➡️

继续阅读