[GH-ISSUE #2937] Very large notes cause problems #1418

Closed
opened 2026-03-03 02:09:01 +03:00 by kerem · 3 comments
Owner

Originally created by @przemub on GitHub (Nov 28, 2022).
Original GitHub issue: https://github.com/dani-garcia/vaultwarden/issues/2937

Subject of the issue

Thank you so much for this re-implementation, I love it!

When I was bored, I created a secure note, of approximately 15 MB size, consisting of repeating 4-character string. I used the Firefox extension.

I observed the following problems:

  • Searching for anything hanged the clients for ~10 seconds, no matter the client
  • It becomes impossible to use the official iOS client (you get a Syncing failed. message with no further info)
  • The vault can be exported to JSON, but not imported to the official Bitwarden server (exceeded maximum note length).

Actually, the last problem was how I discovered what caused this :)

Probably, some limit is needed, or maybe not searching inside the whole note?

Deployment environment

Your environment (Generated via diagnostics page)

  • Vaultwarden version: v1.26.0
  • Web-vault version: v2022.10.0
  • Running within Docker: true (Base: Debian)
  • Environment settings overridden: false
  • Uses a reverse proxy: true
  • IP Header check: true (X-Real-IP)
  • Internet access: true
  • Internet access via a proxy: false
  • DNS Check: true
  • Time Check: true
  • Domain Configuration Check: false
  • HTTPS Check: false
  • Database type: SQLite
  • Database version: 3.35.4
  • Clients used: iOS, Firefox, macOS
  • Reverse proxy and version: nginx 1.18
  • Other relevant information:

Config (Generated via diagnostics page)

Show Running Config

Environment settings which are overridden:

{
  "_duo_akey": null,
  "_enable_duo": false,
  "_enable_email_2fa": false,
  "_enable_smtp": true,
  "_enable_yubico": true,
  "_icon_service_csp": "",
  "_icon_service_url": "",
  "_ip_header_enabled": true,
  "admin_ratelimit_max_burst": 3,
  "admin_ratelimit_seconds": 300,
  "admin_token": "***",
  "allowed_iframe_ancestors": "",
  "attachments_folder": "data/attachments",
  "authenticator_disable_time_drift": false,
  "data_folder": "data",
  "database_conn_init": "",
  "database_max_conns": 10,
  "database_timeout": 30,
  "database_url": "****/**.*******",
  "db_connection_retries": 15,
  "disable_2fa_remember": false,
  "disable_admin_token": false,
  "disable_icon_download": false,
  "domain": "****://*********",
  "domain_origin": "****://*********",
  "domain_path": "",
  "domain_set": false,
  "duo_host": null,
  "duo_ikey": null,
  "duo_skey": null,
  "email_attempts_limit": 3,
  "email_expiration_time": 600,
  "email_token_size": 6,
  "emergency_access_allowed": true,
  "emergency_notification_reminder_schedule": "0 5 * * * *",
  "emergency_request_timeout_schedule": "0 5 * * * *",
  "enable_db_wal": true,
  "extended_logging": true,
  "helo_name": null,
  "hibp_api_key": null,
  "icon_blacklist_non_global_ips": true,
  "icon_blacklist_regex": null,
  "icon_cache_folder": "data/icon_cache",
  "icon_cache_negttl": 259200,
  "icon_cache_ttl": 2592000,
  "icon_download_timeout": 10,
  "icon_redirect_code": 302,
  "icon_service": "internal",
  "incomplete_2fa_schedule": "30 * * * * *",
  "incomplete_2fa_time_limit": 3,
  "invitation_expiration_hours": 120,
  "invitation_org_name": "Vaultwarden",
  "invitations_allowed": true,
  "ip_header": "X-Real-IP",
  "job_poll_interval_ms": 30000,
  "log_file": null,
  "log_level": "Info",
  "log_timestamp_format": "%Y-%m-%d %H:%M:%S.%3f",
  "login_ratelimit_max_burst": 10,
  "login_ratelimit_seconds": 60,
  "org_attachment_limit": null,
  "org_creation_users": "",
  "password_hints_allowed": true,
  "password_iterations": 100000,
  "reload_templates": false,
  "require_device_email": false,
  "rsa_key_filename": "data/rsa_key",
  "send_purge_schedule": "0 5 * * * *",
  "sends_allowed": true,
  "sends_folder": "data/sends",
  "show_password_hint": false,
  "signups_allowed": true,
  "signups_domains_whitelist": "",
  "signups_verify": false,
  "signups_verify_resend_limit": 6,
  "signups_verify_resend_time": 3600,
  "smtp_accept_invalid_certs": false,
  "smtp_accept_invalid_hostnames": false,
  "smtp_auth_mechanism": null,
  "smtp_debug": false,
  "smtp_explicit_tls": null,
  "smtp_from": "",
  "smtp_from_name": "Vaultwarden",
  "smtp_host": null,
  "smtp_password": null,
  "smtp_port": 587,
  "smtp_security": "starttls",
  "smtp_ssl": null,
  "smtp_timeout": 15,
  "smtp_username": null,
  "templates_folder": "data/templates",
  "tmp_folder": "data/tmp",
  "trash_auto_delete_days": null,
  "trash_purge_schedule": "0 5 0 * * *",
  "use_syslog": false,
  "user_attachment_limit": null,
  "web_vault_enabled": true,
  "web_vault_folder": "web-vault/",
  "websocket_address": "0.0.0.0",
  "websocket_enabled": false,
  "websocket_port": 3012,
  "yubico_client_id": "72586",
  "yubico_secret_key": "***",
  "yubico_server": null
}
  • Other relevant details:

Steps to reproduce

  • Create a very large note using the Firefox extension.

Expected behaviour

  • Everything works as normal.

Actual behaviour

  • Various slowdowns and errors.
Originally created by @przemub on GitHub (Nov 28, 2022). Original GitHub issue: https://github.com/dani-garcia/vaultwarden/issues/2937 <!-- # ### NOTE: Please update to the latest version of vaultwarden before reporting an issue! This saves you and us a lot of time and troubleshooting. See: * https://github.com/dani-garcia/vaultwarden/issues/1180 * https://github.com/dani-garcia/vaultwarden/wiki/Updating-the-vaultwarden-image # ### --> <!-- Please fill out the following template to make solving your problem easier and faster for us. This is only a guideline. If you think that parts are unnecessary for your issue, feel free to remove them. Remember to hide/redact personal or confidential information, such as passwords, IP addresses, and DNS names as appropriate. --> ### Subject of the issue <!-- Describe your issue here. --> Thank you so much for this re-implementation, I love it! When I was bored, I created a secure note, of approximately 15 MB size, consisting of repeating 4-character string. I used the Firefox extension. I observed the following problems: * Searching for anything hanged the clients for ~10 seconds, no matter the client * It becomes impossible to use the official iOS client (you get a Syncing failed. message with no further info) * The vault can be exported to JSON, but not imported to the official Bitwarden server (exceeded maximum note length). Actually, the last problem was how I discovered what caused this :) Probably, some limit is needed, or maybe not searching inside the whole note? ### Deployment environment ### Your environment (Generated via diagnostics page) * Vaultwarden version: v1.26.0 * Web-vault version: v2022.10.0 * Running within Docker: true (Base: Debian) * Environment settings overridden: false * Uses a reverse proxy: true * IP Header check: true (X-Real-IP) * Internet access: true * Internet access via a proxy: false * DNS Check: true * Time Check: true * Domain Configuration Check: false * HTTPS Check: false * Database type: SQLite * Database version: 3.35.4 * Clients used: iOS, Firefox, macOS * Reverse proxy and version: nginx 1.18 * Other relevant information: ### Config (Generated via diagnostics page) <details><summary>Show Running Config</summary> **Environment settings which are overridden:** ```json { "_duo_akey": null, "_enable_duo": false, "_enable_email_2fa": false, "_enable_smtp": true, "_enable_yubico": true, "_icon_service_csp": "", "_icon_service_url": "", "_ip_header_enabled": true, "admin_ratelimit_max_burst": 3, "admin_ratelimit_seconds": 300, "admin_token": "***", "allowed_iframe_ancestors": "", "attachments_folder": "data/attachments", "authenticator_disable_time_drift": false, "data_folder": "data", "database_conn_init": "", "database_max_conns": 10, "database_timeout": 30, "database_url": "****/**.*******", "db_connection_retries": 15, "disable_2fa_remember": false, "disable_admin_token": false, "disable_icon_download": false, "domain": "****://*********", "domain_origin": "****://*********", "domain_path": "", "domain_set": false, "duo_host": null, "duo_ikey": null, "duo_skey": null, "email_attempts_limit": 3, "email_expiration_time": 600, "email_token_size": 6, "emergency_access_allowed": true, "emergency_notification_reminder_schedule": "0 5 * * * *", "emergency_request_timeout_schedule": "0 5 * * * *", "enable_db_wal": true, "extended_logging": true, "helo_name": null, "hibp_api_key": null, "icon_blacklist_non_global_ips": true, "icon_blacklist_regex": null, "icon_cache_folder": "data/icon_cache", "icon_cache_negttl": 259200, "icon_cache_ttl": 2592000, "icon_download_timeout": 10, "icon_redirect_code": 302, "icon_service": "internal", "incomplete_2fa_schedule": "30 * * * * *", "incomplete_2fa_time_limit": 3, "invitation_expiration_hours": 120, "invitation_org_name": "Vaultwarden", "invitations_allowed": true, "ip_header": "X-Real-IP", "job_poll_interval_ms": 30000, "log_file": null, "log_level": "Info", "log_timestamp_format": "%Y-%m-%d %H:%M:%S.%3f", "login_ratelimit_max_burst": 10, "login_ratelimit_seconds": 60, "org_attachment_limit": null, "org_creation_users": "", "password_hints_allowed": true, "password_iterations": 100000, "reload_templates": false, "require_device_email": false, "rsa_key_filename": "data/rsa_key", "send_purge_schedule": "0 5 * * * *", "sends_allowed": true, "sends_folder": "data/sends", "show_password_hint": false, "signups_allowed": true, "signups_domains_whitelist": "", "signups_verify": false, "signups_verify_resend_limit": 6, "signups_verify_resend_time": 3600, "smtp_accept_invalid_certs": false, "smtp_accept_invalid_hostnames": false, "smtp_auth_mechanism": null, "smtp_debug": false, "smtp_explicit_tls": null, "smtp_from": "", "smtp_from_name": "Vaultwarden", "smtp_host": null, "smtp_password": null, "smtp_port": 587, "smtp_security": "starttls", "smtp_ssl": null, "smtp_timeout": 15, "smtp_username": null, "templates_folder": "data/templates", "tmp_folder": "data/tmp", "trash_auto_delete_days": null, "trash_purge_schedule": "0 5 0 * * *", "use_syslog": false, "user_attachment_limit": null, "web_vault_enabled": true, "web_vault_folder": "web-vault/", "websocket_address": "0.0.0.0", "websocket_enabled": false, "websocket_port": 3012, "yubico_client_id": "72586", "yubico_secret_key": "***", "yubico_server": null } ``` </details> * Other relevant details: ### Steps to reproduce * Create a very large note using the Firefox extension. ### Expected behaviour * Everything works as normal. ### Actual behaviour * Various slowdowns and errors.
kerem 2026-03-03 02:09:01 +03:00
Author
Owner

@BlackDex commented on GitHub (Nov 28, 2022):

We currently do not impose a limit. Maybe we should, but that will break previous large sized notes. We should think about what to do. Maybe we can make a difference between new and previous notes, that way older items can still be preserved, and newer items will have a limit.

Not searching them is a client side item, which we do not maintain.

<!-- gh-comment-id:1329516678 --> @BlackDex commented on GitHub (Nov 28, 2022): We currently do not impose a limit. Maybe we should, but that will break previous large sized notes. We should think about what to do. Maybe we can make a difference between new and previous notes, that way older items can still be preserved, and newer items will have a limit. Not searching them is a client side item, which we do not maintain.
Author
Owner

@dani-garcia commented on GitHub (Dec 1, 2022):

I think checking the limit on save would work to preserve the existing notes while limiting any new ones that are created, you couldn't edit the existing ones but that's a minor thing, I think. We could create an option if that breaks someone's use case but I would prefer to limit the number of config options we support.

We definitely shouldn't keep the current unlimited notes if it breaks search, bitwarden import and the ios client though.

<!-- gh-comment-id:1334490668 --> @dani-garcia commented on GitHub (Dec 1, 2022): I think checking the limit on save would work to preserve the existing notes while limiting any new ones that are created, you couldn't edit the existing ones but that's a minor thing, I think. We could create an option if that breaks someone's use case but I would prefer to limit the number of config options we support. We definitely shouldn't keep the current unlimited notes if it breaks search, bitwarden import and the ios client though.
Author
Owner

@BlackDex commented on GitHub (Dec 1, 2022):

It definitely breaks exports from Vaultwarden and then import to Bitwarden. But providing an option to break clients is probably not something we should add.

<!-- gh-comment-id:1334494015 --> @BlackDex commented on GitHub (Dec 1, 2022): It definitely breaks exports from Vaultwarden and then import to Bitwarden. But providing an option to break clients is probably not something we should add.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/vaultwarden#1418
No description provided.