加密密钥轮换疑难解答: CVE-2024-34102

本文旨在帮助商家在已经在CVE-2024-34102上执行了此文章中概述的步骤后,排除加密密钥轮换问题。

如果您已执行了上述文章中的步骤,并且在轮换加密密钥时遇到问题,我们提供了独立的修补程序来帮助解决潜在问题。

为了帮助说明以上已传达和总结的步骤,以便针对CVE-2024-34102提供保护,以及下面提供的其他疑难解答,您还可以使用此流程图:

CVE-2024-34102保护流程图.jpg {modal="regular"}

如何应用隔离的修补程序以运行新命令

解压缩文件,并参阅我们的支持知识库中的如何应用Adobe提供的编辑器修补程序以获取说明。

在不使用环境变量的情况下添加新的加密密钥

默认应用程序行为是将加密密钥存储在app/etc/env.php文件中。

文档🔗中概述的步骤描述了如何使用Admin接口在该文件中更改此密钥。

通过本节中提供的步骤和隔离修补程序,您可以轻松更改该文件中的值,并且可以解决通过Admin界面可能遇到的问题。

但是,管理加密密钥的最简单、更安全的方法是使用环境变量。 如果您已在使用环境变量,或者有兴趣使用环境变量来管理此密钥,可参阅介绍这些步骤的单独章节。

受影响的产品和版本

Adobe Commerce on Cloud、Adobe Commerce内部部署和Magento Open Source:

  • 2.4.7-p1及更早版本
  • 2.4.6-p6及更低版本
  • 2.4.5-p8及更低版本
  • 2.4.4-p9及更低版本

用于加密密钥轮换详细信息疑难解答的隔离修补程序

根据您的Adobe Commerce/Magento Open Source版本,使用以下附加的修补程序:

对于版本2.4.7、2.4.7-p1:

对于版本2.4.6、2.4.6-p1、2.4.6-p2、2.4.6-p3、2.4.6-p4、2.4.6-p5、2.4.6-p6:

对于版本2.4.5、2.4.5-p1、2.4.5-p2、2.4.5-p3、2.4.5-p4、2.4.5-p5、2.4.5-p6、2.4.5-p7、2.4.5-p8:

对于版本2.4.4、2.4.4-p1、2.4.4-p2、2.4.4-p3、2.4.4-p4、2.4.4-p5、2.4.4-p6、2.4.4-p7、2.4.4-p8、2.4.4-p9:

安装隔离修补程序后,请使用新的CLI命令更改活动加密密钥。

NOTE
此新CLI命令将在执行时触发缓存清理。
  1. 此新命令应在包含要更新的密钥的app/etc/env.php文件的环境中执行。

  2. 确认新命令存在:

    code language-none
    bin/magento list | grep encryption:key:change
    

    您应该会看到以下输出:

    code language-none
    encryption:key:change Change the encryption key inside the env.php file.
    
  3. 更改加密密钥:

    code language-none
    bin/magento encryption:key:change
    
  4. 如果您已在生产系统上执行此命令,则无需执行任何进一步操作。
    如果您在开发系统上运行此命令,则​ 必须 ​将此更改导入您的生产系统,就像您通常部署敏感配置设置一样。

使用环境变量而非隔离的修补程序更新加密密钥

作为上述部分的替代方法,这些步骤将允许您添加新的加密密钥,同时保留现有加密数据,即使您当前使用的是默认app/etc/env.php也是如此。
本节适用于Cloud和Cloud Starter上的Adobe Commerce,但也适用于本地Adobe Commerce,尽管变量的确切步骤和位置将取决于您的基础架构。

收集当前值

  • 如果您已经使用环境变量管理密钥,则该密钥可能位于多个可能位置中,但很可能位于文档所述的CRYPT_KEY变量中。
  • 如果您未使用变量,则加密密钥将在crypt/key数据密钥内的app/etc/env.php中。

在任一情况下,该值都可能是一个多行值,并包含多个随机数据行。

为2.4.7x版本生成新值

加密密钥是以base64编码并以base64为前缀的32字节随机数据。
要生成新密钥,请执行以下操作:

  1. 使用您选择的工具,生成使用base64编码的32个随机字节的数据。 例如,使用OpenSSL CLI可以运行openssl rand -base64 32,但可以使用任何可信的密码随机生成工具。

  2. 为该值添加前缀base64。 例如,如果openssl命令输出​ ABC123,则值将变为:base64ABC123

  3. 将生成的值附加到上面收集的现有值。 例如,如果现有值为​ base64HelloWorld,则新值将变为:

    code language-none
    base64HelloWorld
    base64ABC123
    

为2.4.6x及更早版本生成新值

2.4.6x及更早版本的加密密钥是采用hex编码格式的16字节随机数据。
要生成新密钥,请执行以下操作:

  1. 使用您选择的工具生成16个随机字节的数据。 例如,使用OpenSSL CLI可以运行openssl rand -hex 16,但可以使用任何可信的密码随机生成工具。

  2. 将生成的值附加到上面收集的现有值。 例如,如果现有值为​ abc123,而上一步的随机值为​ 456def,则新值将变为:

    code language-none
    abc123
    456def
    

添加新环境变量

使用Cloud Console或 magento-cloud CLIenv:MAGENTO_DC_CRYPT__KEY 环境变量设置为此新值。

NOTE
请注意,如果您选择将该变量标记为​ sensitive,则可能需要保存此值的外部备份,因为它将在所有界面中隐藏,并且仅对应用程序可见。

保存变量后,将自动触发重新部署,从而应用值。

安全更新

可用于Adobe Commerce的相关安全更新:

recommendation-more-help
8bd06ef0-b3d5-4137-b74e-d7b00485808a