Skip to content

[安全] LLM API Key 明文存储,且 base_url 可控(密钥泄露 / SSRF) #18

Description

@yuezengwu

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)。

解决方案

  1. 密钥加密存储(如 Fernet + 环境变量中的主密钥 / KMS),仅在调用时解密;确认任何接口都不回传明文 key。
  2. 对 base_url 做出站白名单校验,拒绝内网/回环地址。
  3. 结合认证与访问控制,限制谁能读写 LLM 设置。

优先级

中高。商业化 / 多用户阶段前解决。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions