-
-
Notifications
You must be signed in to change notification settings - Fork 4.7k
Description
Summary
added by @AndyScherzinger 18th March
For the final state, closing-statement, please see #51335 (comment) at the bottom of this issue.
As a summary 7th March 11:36PM CET this issue here has been raised having spotted outside calls by the lookup-server (https://github.com/nextcloud/lookup-server/ centrally run by Nextcloud GmbH) showing federated cloudIDs on the URLs of the inbound http (not https) call after updating the server to the latest maintenance release (February 2025 releases for 29, 30 and 31).
The root cause analysis showed that
- Triggering point: A business logic error introduced by the maintenance releases of February 2025 led to calls to the lookup-server for any user created before Feb 2021 or users created afterwards that at any point in time in the past had a profile field actively set to "published" (which means publish to public address-book)
- Actual issue this ticket is about: A business logic error on the lookup-server led to first doing a identity proof call (see first paragraph of this issue) via http instead of first checking if there has been any record in the database also not doing this via https instead
This matter has been resolved (again, see #51335 (comment) for details) by taking down the lookup-server endpoint to not accept or expose data, ensure the maintenance releases for March were released soon after the root cause got identified blocking the calls to the lookup-server and due to the identification of a deletion-error (not deleting the cloudID) also deleting all data the business logic error failed to delete (empty records just having a cloudID but no other fields fileld)
⚠️ This issue respects the following points: ⚠️
- This is a bug, not a question or a configuration/webserver/proxy issue.
- This issue is not already reported on Github OR Nextcloud Community Forum (I've searched it).
- Nextcloud Server is up to date. See Maintenance and Release Schedule for supported versions.
- I agree to follow Nextcloud's Code of Conduct.
Bug description
After the release of Nextcloud 31.0.0, a user reported suspicious activity on their Nextcloud instance after installing the update: https://bsd.network/@niels/114106538216130985
These request contain the usernames of the instance's users and target:
65.21.231.50 - - [07/Mar/2025:20:20:00 +0000] "GET /ocs/v2.php/identityproof/key/<USERID> HTTP/1.1" 301 169 "-" "GuzzleHttp/7"
All requests originate from 65.21.231.50. This indicates that PII was transmitted to a third party--in this case Nextcloud--without sufficient user consent. Depending on the selected userId, this data included full names and email addresses.
Being pointed to the issue, I was able to identify jobs named OCA\LookupServerConnector\BackgroundJobs\RetryJob as the root cause of these requests.
On all affected nextcloud instances I operate this behavior started exactly after the upgrade to 31.0.0. From the codebase it remains unclear what triggered the behavior. However, several functions around lookupServerUpload handling were refactored or altered in the meantime.
Auditing the configuration did not clarify which user settings may relate to exposure, as affected accounts also included dedicated accounts for, e.g., presentation machines at a conference not used by humans.
By instrumenting related source files, it was established that the configuration setting 'files_sharing', 'lookupServerUploadEnabled' ultimately enabling the datasharing triggering external requests is found under the Path:
Admin Settings -> Sharing -> Federated Cloud Sharing -> Allow people to publish their data to a global and public address book
Given that the implication of this setting is that the data of several users who had certainly not given explicit consent to the data transfer was shared with a third party (Nextcloud), the labeling of this configuration setting is, at best, dangerously misleading and at worst hiding its actual implications.
Steps to reproduce
- Upgrade from Nextcloud v30.0.6 to v31.0.0
- Wait for the regular cronjob to run
- Within seconds of the first
OCA\LookupServerConnector\BackgroundJobs\RetryJobjob for a user, a request from65.21.231.50will be made to/ocs/v2.php/identityproof/key/<USERID>, demonstrating that data was shared with a third party.
Expected behavior
- The global
"lookupServerUploadEnabled"setting should remainNOafter an upgrade, and NO user data should be shared with third parties without users' or operators' consent. - The setting for
"lookupServerUploadEnabled"should be descriptively labeled, require confirmation, and make the implications of being enabled clear
Nextcloud Server version
31
Operating system
Debian/Ubuntu
PHP engine version
None
Web server
None
Database engine version
None
Is this bug present after an update or on a fresh install?
None
Are you using the Nextcloud Server Encryption module?
None
What user-backends are you using?
- Default user-backend (database)
- LDAP/ Active Directory
- SSO - SAML
- Other
Configuration report
List of activated Apps
Nextcloud Signing status
Nextcloud Logs
Additional info
Please understand that the turn of events is extremely unfortunate. I will have to evaluate over the next 72h whether this event falls under Art. 33 III DSGVO.
I expect Nextcloud GmbH to perform due diligence in this matter as well. This includes:
- Ensuring that all potentially unintentionally leaked data is deleted
- Ensuring that this data is not re-shared to third parties or made publicly available
- Sharing documentation on the above two steps and a post-mortem with the Nextcloud community and the responsible DPA
Note on HackerOne Submission: On Mattermost and in Nextcloud's security reporting information on GitHub, a submission of security sensitive events is requested via HackerOne. I decided to not follow this recommendation for the following reasons:
- I do not consent to the terms and conditions of HackerOne, but believe that this issue is critically important for the community
- The leak/"vulnerability" (or rather: 'unintentional feature') can be mitigated by operators, if they set the aforementioned config setting to off; Delaying publication would, hence, expose users further.
- Technically, in this case, the not necessarily authorized collector of data is Nextcloud GmbH
Metadata
Metadata
Assignees
Labels
Type
Projects
Status