參考:https://www.theregister.com/2023/04/25/apache_superset_cve/
superset 舊版本預設使用"\2\1thisismyscretkey\1\2\\e\\y\\y\\h"
作為加密的 key,用於 sesison 和資料庫表的加密,新版本則改為了'USE_YOUR_OWN_SECURE_RANDOM_KEY'
在修改 superset/config.py 中此項的值後發現應用不正常,報錯資料庫無法解密,找到了文中提到的 commit 發現果然有玄機,引入了 SecretsMigrator 來做資料表的遷移
所以要正確完成舊版本的修復,需要做的:
- 修改 config.py 中的 SECRET_KEY
- 增加一項 PREVIOUS_SECRET_KEY="\2\1thisismyscretkey\1\2\e\y\y\h"
- 覆蓋
utils/encrypt
: wget https://github.com/apache/superset/blob/412189fcb73268ddd4829d2fdb8381c5e47595ce/superset/utils/encrypt.py - 修改
superset/cli.py
按照這個commit對著修改就行 - 執行 superset re-encrypt-secrets