Skip to content

Security: deeplethe/utopia

Security

SECURITY.md

安全说明

Utopia 目前是 v0.1。下面这些是已知的、尚未解决的限制 —— 不是漏洞报告,是设计上还没走到的地方。把它们写在这里,是因为一个卖点是「每条结论都可追溯」的项目,没有理由对自己的短板含糊。

部署到公网之前

凭据在数据库里是明文的

界面里录入的 LLM API Key、以及问数功能注册的数据库连接串,都以明文存在 Postgres 里。

能读到库的人就能拿到它们。静态加密是 1.0 之前的硬化项 —— 在那之前,请把这套系统和它的数据库部署在可信网络内,并且给数据库单独的访问控制。

数据库默认口令

compose 里数据库默认口令是 utopia。默认配置下端口只绑回环(127.0.0.1:1517),外网连不上,所以这不是紧急问题;但如果你改了 UTOPIA_DB_BIND 把它暴露出去,先换掉 .env 里的 UTOPIA_DB_PASSWORD

已经做了的

  • JWT 签名密钥自动生成:首次启动生成 32 字节 CSPRNG 存入数据库,不再有「所有部署共用同一个默认密钥」这回事。
  • 会话 cookie 在 TLS 后面自动打 Secure:按请求的 X-Forwarded-Proto 判定,走 HTTPS 就打上,浏览器不会再把 token 经明文链路发出去。没有反向代理时不打,本地 HTTP 开发照常。代理不发那个头的话,用 UTOPIA_COOKIE_SECURE=true 强制打开。
  • 数据库端口只绑回环127.0.0.1:1517,app 走 compose 内网连库,那个映射只服务本地开发。
  • 可选的受限运行角色:配置 UTOPIA_APP_DB_PASSWORDUTOPIA_MIGRATION_URL 后,应用以只读写业务表、对台账只增不改的角色连库,迁移另走 owner 身份。
  • 问数 SQL 只读闸:解析白名单、只读事务、强制行数上限。
  • 口令哈希用 argon2

报告漏洞

发现了上面没有列出的问题,请开一个 issue。如果涉及可被利用的细节,先只写复现的最小信息,我们再私下沟通完整内容。

There aren't any published security advisories