Reference: https://www.theregister.com/2023/04/25/apache_superset_cve/
旧版本的 superset 默认使用"\2\1thisismyscretkey\1\2\\e\\y\\y\\h"
作为加密的密钥,用于 session 和数据库表的加密,新版本改为了'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