关键信息 漏洞ID: RUSTSEC-2024-0421 报告日期: 2024年12月9日 发布日期: 2024年12月9日 受影响的包: idna (crates.io) 漏洞类型: 权限提升 类别: 特权升级 关键词: #idna #punycode #same-origin #domain-name 别名: CVE-2024-12224 修复版本: >=1.0.0 描述 0.5.0及更早版本接受不产生任何非ASCII输出的Punycode标签,这意味着ASCII标签或空根标签可以被掩码,使得它们在没有IDNA处理或使用不同实现处理时看起来不相等,但在使用 0.5.0或更早版本处理时相等。 具体来说, 和 在经过 0.5.0或更早版本处理后变得相等。同样, 和 在经过 0.5.0或更早版本处理后也变得相等。 在使用 的应用程序中(但不在 本身中),当主机名比较是特权检查的一部分,并且这种行为与解析此类标签的客户端相结合时,可能会导致权限提升。这些客户端将错误地解析域名而不是将其视为错误,从而阻止DNS解析/URL获取,并允许攻击者引入一个DNS条目(和TLS证书)用于一个 掩码名称,在经过 0.5.0或更早版本处理后变成目标名称。 解决方案 升级到 1.0.3或更高版本,如果直接依赖于 ,或者升级到 2.5.4或更高版本,如果通过 依赖于 。(此问题已在 1.0.0中修复,但建议使用1.0.3或更高版本以避免其他问题。) 升级时,请阅读关于 的替代Unicode后备端的信息。 如果使用Rust 1.81之前的版本结合SQLx 0.8.2或更早版本,请阅读有关将它们与 2.5.4和 1.0.3结合使用的问题。 其他信息 此问题源于 0.5.0及更早版本严格实施UTS 46规范,而规范在此点上存在此漏洞。规范漏洞已在UTS 46修订版33中修复。 致谢 感谢kageshiron认识到此行为的安全影响。