疑難排解加密金鑰輪替: CVE-2024-34102

本文旨在協助商戶疑難排解加密金鑰輪換問題,因為他們已遵循CVE-2024-34102上的此文章中概述的步驟。

如果您已按照上述文章中的步驟操作,並在輪換加密金鑰時遇到問題,我們提供獨立的修補程式,可協助您解決潛在問題。

為了協助說明先前已溝通及總結的步驟,以防止CVE-2024-34102發生問題,以及下列其他疑難排解,您也可以利用這個流程圖:

CVE-2024-34102保護流程圖.jpg {modal="regular"}

如何套用隔離的修補程式以執行新命令

解壓縮檔案,並參閱我們的支援知識庫中的如何套用Adobe提供的撰寫器修補程式,以取得指示。

新增加密金鑰而不使用環境變數

預設的應用程式行為是將加密金鑰儲存在app/etc/env.php檔案中。

檔案🔗中概述的步驟說明如何使用Admin介面在該檔案中變更此金鑰。

本節提供的步驟和隔離修補程式可讓您輕鬆變更該檔案中的值,並可讓您解決透過Admin介面可能遇到的問題。

不過,管理加密金鑰最簡單且最安全的方法是使用環境變數。 如果您已在使用環境變數,或有興趣使用變數來管理此金鑰,可透過獨立章節說明這些步驟。

受影響的產品和版本

雲端上的Adobe Commerce、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:

若為版本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版本的新值

加密金鑰是32個位元組的隨機資料,以base64編碼,並加上前置詞base64
若要產生新金鑰:

  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
請注意,如果您選擇將變數標示為​ 敏感,您可能想要儲存此值的外部備份,因為此值將在所有介面中隱藏,且僅供應用程式看到。

儲存變數後,系統會自動觸發重新部署,進而套用值。

安全性更新

Adobe Commerce可用的相關安全性更新:

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