Unable to upload attachment using web client #1339

Closed
opened 2026-02-05 00:39:43 +03:00 by OVERLORD · 6 comments
Owner

Originally created by @tmeckel on GitHub (Jul 31, 2022).

Subject of the issue

I'm unable to upload attachments using the web client (web vault). Error message in WebBrowser

<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>400 Bad Request</title> </head> <body align="center"> <div role="main" align="center"> <h1>400: Bad Request</h1> <p>The request could not be understood by the server due to malformed syntax.</p> <hr /> </div> <div role="contentinfo" align="center"> <small>Rocket</small> </div> </body> </html> 

image

In the log file the following is printed:

Jul 30 19:50:33 rt02 bitwarden_rs[18418]:    >> Data guard `Form < UploadData < '_ > >` failed: Errors([Error { name: Some("data"), value: None,
Jul 30 19:50:33 rt02 bitwarden_rs[18418]:    >> No 400 catcher registered. Using Rocket default.

Deployment environment

Your environment (Generated via diagnostics page)

  • Vaultwarden version: v1.25.2
  • Web-vault version: v2022.6.2
  • Running within Docker: false (Base: Debian)
  • Environment settings overridden: true
  • 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: true
  • HTTPS Check: true
  • Database type: SQLite
  • Database version: 3.35.4
  • Clients used:
  • Reverse proxy and version:
  • Other relevant information:

Config (Generated via diagnostics page)

Show Running Config

Environment settings which are overridden: DOMAIN, ADMIN_TOKEN, DISABLE_ADMIN_TOKEN

{
  "_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": "/var/lib/bitwarden_rs/attachments",
  "authenticator_disable_time_drift": true,
  "data_folder": "/var/lib/bitwarden_rs",
  "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": true,
  "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": "/var/lib/bitwarden_rs/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_org_name": "*** Bitwarden",
  "invitations_allowed": true,
  "ip_header": "X-Real-IP",
  "job_poll_interval_ms": 30000,
  "log_file": "/var/log/bitwarden_rs",
  "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": "/var/lib/bitwarden_rs/rsa_key",
  "send_purge_schedule": "0 5 * * * *",
  "sends_allowed": true,
  "sends_folder": "/var/lib/bitwarden_rs/sends",
  "show_password_hint": true,
  "signups_allowed": false,
  "signups_domains_whitelist": "",
  "signups_verify": true,
  "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": false,
  "smtp_from": "*****************@******.***",
  "smtp_from_name": "**** Password Manager",
  "smtp_host": "****.******.***",
  "smtp_password": null,
  "smtp_port": 25,
  "smtp_security": "off",
  "smtp_ssl": false,
  "smtp_timeout": 15,
  "smtp_username": null,
  "templates_folder": "/var/lib/bitwarden_rs/templates",
  "tmp_folder": "/var/lib/bitwarden_rs/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": "/usr/share/bitwarden_rs/web-vault/",
  "websocket_address": "0.0.0.0",
  "websocket_enabled": true,
  "websocket_port": 3012,
  "yubico_client_id": null,
  "yubico_secret_key": null,
  "yubico_server": null
}

Steps to reproduce

  1. Open arbitrary vault item
  2. Select Edit
  3. Scroll to Attachments
  4. Add (small 15kb) Attachment
  5. Click Save

Expected behaviour

Attachment added to vault item

Actual behaviour

Error shown as described above

Troubleshooting data

see above

Originally created by @tmeckel on GitHub (Jul 31, 2022). <!-- # ### 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 I'm unable to upload attachments using the web client (web vault). Error message in WebBrowser ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>400 Bad Request</title> </head> <body align="center"> <div role="main" align="center"> <h1>400: Bad Request</h1> <p>The request could not be understood by the server due to malformed syntax.</p> <hr /> </div> <div role="contentinfo" align="center"> <small>Rocket</small> </div> </body> </html> ``` ![image](https://user-images.githubusercontent.com/14177833/182027032-e74839be-e77d-404a-9c61-1541134ecd55.png) In the log file the following is printed: ```text Jul 30 19:50:33 rt02 bitwarden_rs[18418]: >> Data guard `Form < UploadData < '_ > >` failed: Errors([Error { name: Some("data"), value: None, Jul 30 19:50:33 rt02 bitwarden_rs[18418]: >> No 400 catcher registered. Using Rocket default. ``` ### Deployment environment <!-- ========================================================================================= Preferably, use the `Generate Support String` button on the admin page's Diagnostics tab. That will auto-generate most of the info requested in this section. ========================================================================================= --> ### Your environment (Generated via diagnostics page) * Vaultwarden version: v1.25.2 * Web-vault version: v2022.6.2 * Running within Docker: false (Base: Debian) * Environment settings overridden: true * 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: true * HTTPS Check: true * Database type: SQLite * Database version: 3.35.4 * Clients used: * Reverse proxy and version: * Other relevant information: ### Config (Generated via diagnostics page) <details><summary>Show Running Config</summary> **Environment settings which are overridden:** DOMAIN, ADMIN_TOKEN, DISABLE_ADMIN_TOKEN ```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": "/var/lib/bitwarden_rs/attachments", "authenticator_disable_time_drift": true, "data_folder": "/var/lib/bitwarden_rs", "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": true, "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": "/var/lib/bitwarden_rs/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_org_name": "*** Bitwarden", "invitations_allowed": true, "ip_header": "X-Real-IP", "job_poll_interval_ms": 30000, "log_file": "/var/log/bitwarden_rs", "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": "/var/lib/bitwarden_rs/rsa_key", "send_purge_schedule": "0 5 * * * *", "sends_allowed": true, "sends_folder": "/var/lib/bitwarden_rs/sends", "show_password_hint": true, "signups_allowed": false, "signups_domains_whitelist": "", "signups_verify": true, "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": false, "smtp_from": "*****************@******.***", "smtp_from_name": "**** Password Manager", "smtp_host": "****.******.***", "smtp_password": null, "smtp_port": 25, "smtp_security": "off", "smtp_ssl": false, "smtp_timeout": 15, "smtp_username": null, "templates_folder": "/var/lib/bitwarden_rs/templates", "tmp_folder": "/var/lib/bitwarden_rs/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": "/usr/share/bitwarden_rs/web-vault/", "websocket_address": "0.0.0.0", "websocket_enabled": true, "websocket_port": 3012, "yubico_client_id": null, "yubico_secret_key": null, "yubico_server": null } ``` </details> ### Steps to reproduce <!-- Tell us how to reproduce this issue. What parameters did you set (differently from the defaults) and how did you start vaultwarden? --> 1. Open arbitrary vault item 2. Select `Edit` 3. Scroll to `Attachments` 4. Add (small 15kb) `Attachment` 5. Click `Save` ### Expected behaviour <!-- Tell us what you expected to happen --> Attachment added to vault item ### Actual behaviour <!-- Tell us what actually happened --> Error shown as described above ### Troubleshooting data <!-- Share any log files, screenshots, or other relevant troubleshooting data --> see above
Author
Owner

@BlackDex commented on GitHub (Jul 31, 2022):

Works for me.
It would suggest to check the reverse proxy. Since according to Vaultwarden logs it didn't received any data at all.
That is why it failed.

@BlackDex commented on GitHub (Jul 31, 2022): Works for me. It would suggest to check the reverse proxy. Since according to Vaultwarden logs it didn't received any data at all. That is why it failed.
Author
Owner

@tmeckel commented on GitHub (Jul 31, 2022):

@BlackDex Thanks for the quick answer. I was wondering was the error message of Rocket really means. I'll have a look on my reverse proxy configuration.Are there any special requirements? I saw other issues here, that are discussing the reverse proxy configuration.

@tmeckel commented on GitHub (Jul 31, 2022): @BlackDex Thanks for the quick answer. I was wondering was the error message of Rocket really means. I'll have a look on my reverse proxy configuration.Are there any special requirements? I saw other issues here, that are discussing the reverse proxy configuration.
Author
Owner

@BlackDex commented on GitHub (Jul 31, 2022):

Well, the issue means that Rocket didn't detect any data a.k.a. attachment. Like if a request was sent without the actual attachment. So, it was either filtered out somewhere in between. Either the from the client side (Firewall, Anti-Virus), something in between, like the reverse proxy.

You could try to enable DEBUG_LOG=tracing which should give a bit more info.

@BlackDex commented on GitHub (Jul 31, 2022): Well, the issue means that Rocket didn't detect any data a.k.a. attachment. Like if a request was sent without the actual attachment. So, it was either filtered out somewhere in between. Either the from the client side (Firewall, Anti-Virus), something in between, like the reverse proxy. You could try to enable `DEBUG_LOG=tracing` which should give a bit more info.
Author
Owner

@tmeckel commented on GitHub (Jul 31, 2022):

Problem solved: Vaultwarden wasn't able to save the incoming data to a tmp file

Jul 31 17:45:06 rt02 bitwarden_rs[28014]: [2022-07-31 17:45:06.857][_][WARN] Data guard `Form < UploadData < '_ > >` failed: Errors([Error { name: Some("data"), value: None, kind: Io(Custom { kind: PermissionDenied, error: PathError { path: "/var/lib/bitwarden_rs/tmp/.tmpYL1l8M", err: Os { code: 13, kind: PermissionDenied, message: "Permission denied" } } }), entity: Form }]).
@tmeckel commented on GitHub (Jul 31, 2022): Problem solved: Vaultwarden wasn't able to save the incoming data to a tmp file ```text Jul 31 17:45:06 rt02 bitwarden_rs[28014]: [2022-07-31 17:45:06.857][_][WARN] Data guard `Form < UploadData < '_ > >` failed: Errors([Error { name: Some("data"), value: None, kind: Io(Custom { kind: PermissionDenied, error: PathError { path: "/var/lib/bitwarden_rs/tmp/.tmpYL1l8M", err: Os { code: 13, kind: PermissionDenied, message: "Permission denied" } } }), entity: Form }]). ```
Author
Owner

@zutewas commented on GitHub (Sep 27, 2022):

Problem solved: Vaultwarden wasn't able to save the incoming data to a tmp file

Jul 31 17:45:06 rt02 bitwarden_rs[28014]: [2022-07-31 17:45:06.857][_][WARN] Data guard `Form < UploadData < '_ > >` failed: Errors([Error { name: Some("data"), value: None, kind: Io(Custom { kind: PermissionDenied, error: PathError { path: "/var/lib/bitwarden_rs/tmp/.tmpYL1l8M", err: Os { code: 13, kind: PermissionDenied, message: "Permission denied" } } }), entity: Form }]).

Can you explain how do you have solved the problem?

I'm using the pre-built binaries with ubuntu 22.04 and systemd. Which permission do you have set on the directories?

This are my permissions.

drwxr-xr-x 6 vaultwarden vaultwarden   4096 Sep 27 13:58 ./
drwxr-xr-x 5 vaultwarden vaultwarden   4096 Sep 27 15:12 ../
drwxrwxrwx 2 vaultwarden vaultwarden   4096 Sep 27 12:55 attachments/
-rw-r--r-- 1 vaultwarden vaultwarden 196608 Sep 27 12:55 db.sqlite3
-rw-r--r-- 1 vaultwarden vaultwarden  32768 Sep 27 13:58 db.sqlite3-shm
-rw-r--r-- 1 vaultwarden vaultwarden      0 Sep 27 13:58 db.sqlite3-wal
drwxrwxr-x 2 vaultwarden vaultwarden   4096 Sep 27 12:55 icon_cache/
-rw-rw-r-- 1 vaultwarden vaultwarden   1679 Sep 27 12:55 rsa_key.pem
-rw-rw-r-- 1 vaultwarden vaultwarden    451 Sep 27 12:55 rsa_key.pub.pem
drwxrwxrwx 2 vaultwarden vaultwarden   4096 Sep 27 12:55 sends/
drwxrwxr-x 2 vaultwarden vaultwarden   4096 Sep 27 12:55 tmp/
root@virtubuntu:/opt/vaultwarden/data#

An my error


Sep 27 15:10:50 virtubuntu vaultwarden[31606]: [2022-09-27 15:10:50.445][request][INFO] POST /api/sends/file/v2
Sep 27 15:10:50 virtubuntu vaultwarden[31606]: [2022-09-27 15:10:50.445][_][ERROR] No matching routes for POST /api/sends/file/v2 application/json.
Sep 27 15:10:50 virtubuntu vaultwarden[31606]: [2022-09-27 15:10:50.445][_][WARN] No 404 catcher registered. Using Rocket default.
Sep 27 15:10:50 virtubuntu vaultwarden[31606]: [2022-09-27 15:10:50.445][response][INFO] 404 Not Found
Sep 27 15:10:50 virtubuntu vaultwarden[31606]: [2022-09-27 15:10:50.506][request][INFO] POST /api/sends/file
Sep 27 15:10:50 virtubuntu vaultwarden[31606]: [2022-09-27 15:10:50.518][_][WARN] Data guard `Form < UploadData < '_ > >` failed: Errors([Error { name: Some("data"), value: None, kind: Io(Custom { kind: ReadOnlyFilesystem, error: PathError { path: "/opt/vaultwarden/data/tmp/.tmp67irbt", err: Os { code: 30, kind: ReadOnlyFilesystem, message: "Read-only file system" } } }), entity: Form }]).
Sep 27 15:10:50 virtubuntu vaultwarden[31606]: [2022-09-27 15:10:50.518][_][WARN] No 400 catcher registered. Using Rocket default.
Sep 27 15:10:50 virtubuntu vaultwarden[31606]: [2022-09-27 15:10:50.519][response][INFO] (post_send_file) POST /api/sends/file multipart/form-data => 400 Bad Request

I'm using vaultwarden behind traefik with simple config. The gui works find. Only "sends" makes problems.

Is there a documentaion which permission I must set on file system if I use the binary non docker way?

Thanks

@zutewas commented on GitHub (Sep 27, 2022): > Problem solved: Vaultwarden wasn't able to save the incoming data to a tmp file > > ``` > Jul 31 17:45:06 rt02 bitwarden_rs[28014]: [2022-07-31 17:45:06.857][_][WARN] Data guard `Form < UploadData < '_ > >` failed: Errors([Error { name: Some("data"), value: None, kind: Io(Custom { kind: PermissionDenied, error: PathError { path: "/var/lib/bitwarden_rs/tmp/.tmpYL1l8M", err: Os { code: 13, kind: PermissionDenied, message: "Permission denied" } } }), entity: Form }]). > ``` Can you explain how do you have solved the problem? I'm using the pre-built binaries with ubuntu 22.04 and systemd. Which permission do you have set on the directories? This are my permissions. ``` drwxr-xr-x 6 vaultwarden vaultwarden 4096 Sep 27 13:58 ./ drwxr-xr-x 5 vaultwarden vaultwarden 4096 Sep 27 15:12 ../ drwxrwxrwx 2 vaultwarden vaultwarden 4096 Sep 27 12:55 attachments/ -rw-r--r-- 1 vaultwarden vaultwarden 196608 Sep 27 12:55 db.sqlite3 -rw-r--r-- 1 vaultwarden vaultwarden 32768 Sep 27 13:58 db.sqlite3-shm -rw-r--r-- 1 vaultwarden vaultwarden 0 Sep 27 13:58 db.sqlite3-wal drwxrwxr-x 2 vaultwarden vaultwarden 4096 Sep 27 12:55 icon_cache/ -rw-rw-r-- 1 vaultwarden vaultwarden 1679 Sep 27 12:55 rsa_key.pem -rw-rw-r-- 1 vaultwarden vaultwarden 451 Sep 27 12:55 rsa_key.pub.pem drwxrwxrwx 2 vaultwarden vaultwarden 4096 Sep 27 12:55 sends/ drwxrwxr-x 2 vaultwarden vaultwarden 4096 Sep 27 12:55 tmp/ root@virtubuntu:/opt/vaultwarden/data# ``` An my error ``` Sep 27 15:10:50 virtubuntu vaultwarden[31606]: [2022-09-27 15:10:50.445][request][INFO] POST /api/sends/file/v2 Sep 27 15:10:50 virtubuntu vaultwarden[31606]: [2022-09-27 15:10:50.445][_][ERROR] No matching routes for POST /api/sends/file/v2 application/json. Sep 27 15:10:50 virtubuntu vaultwarden[31606]: [2022-09-27 15:10:50.445][_][WARN] No 404 catcher registered. Using Rocket default. Sep 27 15:10:50 virtubuntu vaultwarden[31606]: [2022-09-27 15:10:50.445][response][INFO] 404 Not Found Sep 27 15:10:50 virtubuntu vaultwarden[31606]: [2022-09-27 15:10:50.506][request][INFO] POST /api/sends/file Sep 27 15:10:50 virtubuntu vaultwarden[31606]: [2022-09-27 15:10:50.518][_][WARN] Data guard `Form < UploadData < '_ > >` failed: Errors([Error { name: Some("data"), value: None, kind: Io(Custom { kind: ReadOnlyFilesystem, error: PathError { path: "/opt/vaultwarden/data/tmp/.tmp67irbt", err: Os { code: 30, kind: ReadOnlyFilesystem, message: "Read-only file system" } } }), entity: Form }]). Sep 27 15:10:50 virtubuntu vaultwarden[31606]: [2022-09-27 15:10:50.518][_][WARN] No 400 catcher registered. Using Rocket default. Sep 27 15:10:50 virtubuntu vaultwarden[31606]: [2022-09-27 15:10:50.519][response][INFO] (post_send_file) POST /api/sends/file multipart/form-data => 400 Bad Request ``` I'm using vaultwarden behind traefik with simple config. The gui works find. Only "sends" makes problems. Is there a documentaion which permission I must set on file system if I use the binary non docker way? Thanks
Author
Owner

@zutewas commented on GitHub (Sep 27, 2022):

My problem is solved. In my case the WorkingDirectory and ReadWriteDirectories in my vaultwarden.service was wrong.

But perhaps there is an answer to my question with the filesystem permission I should set.

@zutewas commented on GitHub (Sep 27, 2022): My problem is solved. In my case the WorkingDirectory and ReadWriteDirectories in my vaultwarden.service was wrong. But perhaps there is an answer to my question with the filesystem permission I should set.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/vaultwarden#1339