cc @wyzBelinda
问题
- 用户的第三方 LLM
api_key 被明文写入数据库,无任何加密或脱敏:
modules/RareSystem/backend/services/settings_service.py:79-95(create)
modules/RareSystem/backend/services/settings_service.py:118-119(update)
custom provider 允许调用方自定义 base_url(api/settings.py:28),LLM 客户端会向该地址发起出站请求,构成 SSRF 面。
影响
数据库文件一旦泄露或被越权读取,用户的 OpenAI/Anthropic 等密钥全部泄露(可产生真实费用与账号风险)。可控 base_url 可被用于探测内网(SSRF)。
解决方案
- 密钥加密存储(如 Fernet + 环境变量中的主密钥 / KMS),仅在调用时解密;确认任何接口都不回传明文 key。
- 对
base_url 做出站白名单校验,拒绝内网/回环地址。
- 结合认证与访问控制,限制谁能读写 LLM 设置。
优先级
中高。商业化 / 多用户阶段前解决。
cc @wyzBelinda
问题
api_key被明文写入数据库,无任何加密或脱敏:modules/RareSystem/backend/services/settings_service.py:79-95(create)modules/RareSystem/backend/services/settings_service.py:118-119(update)customprovider 允许调用方自定义base_url(api/settings.py:28),LLM 客户端会向该地址发起出站请求,构成 SSRF 面。影响
数据库文件一旦泄露或被越权读取,用户的 OpenAI/Anthropic 等密钥全部泄露(可产生真实费用与账号风险)。可控
base_url可被用于探测内网(SSRF)。解决方案
base_url做出站白名单校验,拒绝内网/回环地址。优先级
中高。商业化 / 多用户阶段前解决。