clients icon indicating copy to clipboard operation
clients copied to clipboard

[PM-6419] Change desktop argon implementation for Node

Open dani-garcia opened this issue 4 months ago • 2 comments

Type of change

- [x] Bug fix
- [ ] New feature development
- [ ] Tech debt (refactoring, code cleanup, dependency upgrades, etc)
- [ ] Build/deploy pipeline (DevOps)
- [ ] Other

Objective

At the moment desktop is using the WASM implementation of Argon2, which is failing to load in the renderer processes now that context isolation is enabled. By moving the implementation to the main process we avoid this problem, and as a plus it allows us to switch to the faster Node implementation.

Code changes

  • Created two new CryptoFunctionService implementations, specifically for desktop usage:
    • RendererCryptoFunctionService, for the renderer processes. Inherits from the WebCrypto implementation with the exception that it replaces the argon2 implementation by an IPC call
    • MainCryptoFunctionService, for the main process. Inherits from the node implementation and adds a listener that responds to the IPC calls from the renderer service.

dani-garcia avatar Feb 22 '24 14:02 dani-garcia

Codecov Report

Attention: Patch coverage is 0% with 16 lines in your changes are missing coverage. Please review.

Project coverage is 24.61%. Comparing base (7bbe168) to head (5a63406). Report is 1 commits behind head on main.

Files Patch % Lines
.../src/platform/main/main-crypto-function.service.ts 0.00% 6 Missing :warning:
...c/app/services/renderer-crypto-function.service.ts 0.00% 4 Missing :warning:
apps/desktop/src/main.ts 0.00% 3 Missing :warning:
apps/desktop/src/platform/preload.ts 0.00% 2 Missing :warning:
apps/desktop/src/app/services/services.module.ts 0.00% 1 Missing :warning:
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #8048      +/-   ##
==========================================
- Coverage   24.62%   24.61%   -0.01%     
==========================================
  Files        2222     2224       +2     
  Lines       65310    65326      +16     
  Branches    12338    12338              
==========================================
  Hits        16081    16081              
- Misses      47907    47923      +16     
  Partials     1322     1322              

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

codecov[bot] avatar Feb 22 '24 14:02 codecov[bot]

Logo Checkmarx One – Scan Summary & Details595b0433-aa6c-4e2e-b4d7-41094c1a8bae

Fixed Issues

Severity Issue Source File / Package
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/protonpass/protonpass-json-importer.ts: 44
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 29
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 55
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 131
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 33
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 30
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 30
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 45
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 131
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/keepass2-xml-importer.ts: 72
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/passworddragon-xml-importer.ts: 28
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 37
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 51
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 46
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 131
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 51
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 39
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 43
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 46
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/passwordsafe-xml-importer.ts: 36
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 42
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 26
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 37
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 47
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 31
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 49
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 131
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 131
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 35
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 50
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 40
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 48
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 131
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 27
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 131
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 35
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 131
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 36
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 45
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 42
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 28
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 34
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 31
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 26
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 131
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/keepass2-xml-importer.ts: 114
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 45
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 37
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 44
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 41
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 39
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 47
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 49
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 25
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 48
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 35
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 29
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 131
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 31
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 28
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 27
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 46
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 131
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 44
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 36
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 131
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 32
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 131
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 131
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/passworddragon-xml-importer.ts: 28
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 33
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 39
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 52
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 50
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/keepass2-xml-importer.ts: 67
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 49
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 34
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 41
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 29
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 47
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 131
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 50
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/passwordsafe-xml-importer.ts: 36
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/keepass2-xml-importer.ts: 60
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 38
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 30
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 36
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 38
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 131
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 43
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 34
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 131
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 40
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 52
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 55
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 32
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 131
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 32
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 28
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 25
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 131
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 27
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 33
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 44
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 131
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 40
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 41
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 42
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 25
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/keepass2-xml-importer.ts: 71
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 55
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 52
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 51
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 131
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 48
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 43
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 131
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 38
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 26
LOW Use_Of_Hardcoded_Password /libs/importer/src/importers/base-importer.ts: 131

bitwarden-bot avatar Feb 22 '24 15:02 bitwarden-bot

Heh. I see you've picked up the patch we've been carrying in openSUSE for a few months because wasm modules are such a pain to build.

brjsp avatar Mar 07 '24 20:03 brjsp

(FWIW — at least on Linux the native module loaded fine without moving the procedure to the main process; not sure whether the sandbox restrixtions are different on other platforms)

brjsp avatar Mar 07 '24 20:03 brjsp