crowdsecurity/hub

False positive: Nextcloud auto uploading and synchronizing from mobile clients (nextcloud behind nginx proxy)

brknkfr opened this issue · 0 comments

Describe the bug
Mobile nextcloud clients, authenticated with an app token (password token and enabled storeCryptedPassword on nextcloud server), get banned for checking existing files via HEAD.

To Reproduce
Install nextcloud behind nginx proxy. Connect nextcloud client via app token. Enable auto uploading of files (images for example) on nextcloud client on mobile device (Android, iPhone). The term auto uploading actually means synchronizing, checking for existing files and so on. The client gets banned after several tries with lots of following notices (404 on GET, 403 or 404 on HEAD and HEAD without status code):

HEAD with 403:

╭─────────────────┬─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│       Key       │                                                        Value                                                        │
├─────────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ datasource_path │ /var/log/nginx/access.log                                                                                           │
├─────────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ datasource_type │ file                                                                                                                │
├─────────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ http_args_len   │ 0                                                                                                                   │
├─────────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ http_path       │ /remote.php/dav/files/**REDACTED**                                                                                  │
├─────────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ http_status     │ 403                                                                                                                 │
├─────────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ http_user_agent │ Mozilla/5.0 (Android) Nextcloud-android/3.29.2                                                                      │
├─────────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ http_verb       │ HEAD                                                                                                                │
├─────────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ log_type        │ http_access-log                                                                                                     │
├─────────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ service         │ http                                                                                                                │
├─────────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ source_ip       │ **.***.***.**                                                                                                       │
├─────────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ timestamp       │ 2024-08-27T13:19:43+02:00                                                                                           │
╰─────────────────┴─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯

GET with 404 (File already disappeared on server.):

╭─────────────────┬─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│       Key       │                                                        Value                                                        │
├─────────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ datasource_path │ /var/log/nginx/access.log                                                                                           │
├─────────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ datasource_type │ file                                                                                                                │
├─────────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ http_args_len   │ 0                                                                                                                   │
├─────────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ http_path       │ /remote.php/dav/files/**REDACTED**                                                                                  │
├─────────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ http_status     │ 404                                                                                                                 │
├─────────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ http_user_agent │ Mozilla/5.0 (Android) Nextcloud-android/3.29.2                                                                      │
├─────────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ http_verb       │ GET                                                                                                                 │
├─────────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ log_type        │ http_access-log                                                                                                     │
├─────────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ service         │ http                                                                                                                │
├─────────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ source_ip       │ **.***.***.**                                                                                                       │
├─────────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ timestamp       │ 2024-08-27T14:21:43+02:00                                                                                           │
╰─────────────────┴─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯

HEAD without status code (IPv6?):

╭─────────────────┬─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│       Key       │                                                            Value                                                            │
├─────────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ datasource_path │ /var/log/nginx/error.log                                                                                                    │
├─────────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ datasource_type │ file                                                                                                                        │
├─────────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ http_args_len   │ 0                                                                                                                           │
├─────────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ http_path       │ /remote.php/dav/files/**REDACTED**                                                                                  │
├─────────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ http_verb       │ HEAD                                                                                                                        │
├─────────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ log_type        │ http_error-log                                                                                                              │
├─────────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ service         │ http                                                                                                                        │
├─────────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ source_ip       │ 2a02:***:****:*:****:****:***:****                                                                                          │
├─────────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ target_fqdn     │ cloud.*****************                                                                                                     │
├─────────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ timestamp       │ 2024-08-28T04:54:38Z                                                                                                        │
╰─────────────────┴─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯

Expected behavior
Synchronizing and uploading files should work without getting banned.