Nextcloud+对象储存=裸奔?

2021-09-09 19:56:08 +08:00
 tz1006

描述

Nextcloud 在用 S3 之类的 Object Storage 作为 PrimaryStorage 时(config.php 中设置),疑似有重大安全漏洞。 用来储存密钥的 files_encryption 文件夹上传到了 OSS 里,即 files_encryption 不在服务器本地。密钥和加密的文件都储存在同一个地方,加密形同虚设!

此事 2019 年在 github 就开始被讨论,但是讨论的人并不多,最终也没有得到解决。希望大家明白世界上没有绝对的安全。

验证

  1. 在安装 Nextcloud 的时候,如果设置了 PrimaryStorage,那么服务器上不会有 files_encryption 文件夹,反之则有。我用 docker 安装多次验证。
  2. 我查看了 Nextcloud 的数据库(我的是 Postgres )中的 oc_filecache 表,发现路径 files_encryption/下的文件都在 OCC 上。(storage=2)
  3. 找到了 oc_filecache 表中密钥文件所对应的 OSS 文件 key, 并从 OSS 直接下载了对应文件,找到了密钥。
  4. 不知道如何解密所以没有解密,所以没有最终还原文件。

Nextcloud 官方说法

Server Side Encryption provides protection for data on external storage as the files are encrypted before they are sent to storage and the keys never leave the Nextcloud server.

文字游戏还是描述的挺精准的


欢迎大家在此贴下面讨论有关 Nextcloud 的安全性问题,更安全的私人网盘我想另外开贴讨论。

参考

https://nextcloud.com/blog/encryption-in-nextcloud/
https://github.com/nextcloud/server/issues/17561
https://github.com/nextcloud/server/issues/22077#issuecomment-671080056

4191 次点击
所在节点    云计算
4 条回复
JensenQian
2021-09-09 20:03:02 +08:00
eason1874
2021-09-09 20:38:41 +08:00
看了眼文档。

可以把 S3 设置为 Primary Storage 或者 External Storage,当你设置为 Primary Storage 就代表着你完全信任这个 S3,所以密钥也放过去,如果你设置为 External Storage 则只用于存储加密后的数据,密钥不会离开服务器。

你测试下设置为 External Storage,如果这个模式 S3 里只有文件而没有密钥,就说明 It's Not a Bug, It's a Feature.
msg7086
2021-09-10 07:46:49 +08:00
> 密钥和加密的文件都储存在同一个地方,加密形同虚设!

> 不知道如何解密所以没有解密,所以没有最终还原文件。

形同虚设,但没有完全形同虚设?
2i2Re2PLMaDnghL
2021-09-10 14:51:21 +08:00
@eason1874 原本的讨论没有说这是 bug,只是认为需要重新考虑 keys 的存放位置。

@tz1006 把这个安全性讨论说成漏洞未免有点耸人听闻。
现在不是安全性设施遭到破坏,而是一个以安全为主要卖点的产品允许且易于产生不安全实践。
说起来这个问题上,市面上的 2FA 应用能打死一半没错杀还有漏网之鱼(提供同步、备份功能)。类似的还有把 pgp 密钥拷来拷去,把 ssh 密钥拷来拷去,把 2FA 放在密码管理器里,ssh agent forward

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/800910

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX