This question appears to be based on two assumptions that are not necessarily true. First, Manifest V3 does not require that developers use chrome.storage to store data. IndexedDB is available within service workers and the
Web Storage API is available in other contexts. Second, using the extension platform's storage API is less secure than web APIs or storing values in memory.
Chrome's thread model does not take physically-local attacks into account (
source). As such, if someone has physical access to a user's computer, values can be extracted from chrome.storage, LocalStorage, or IndexedDB with roughly the same level of effort, and values can be extracted from memory with a bit more effort.
I am not a security expert or a password manager developer, but I believe the current best practice in this space is to store sensitive user data (typically a password vault) encrypted when written to disk. Otherwise, sensitive data should only be held in memory unencrypted and even then it should be cleared out after a period of inactivity or when the user explicitly locks their vault.
If you're concerned about accessing values across service worker restarts, you'll likely want to experiment with chrome.storage.session. This is an in-memory storage area that can hold 1MB of data. Data will be cleared when the user's browser session is terminated. Be aware that this storage area isn't appearing in the
Storage API documentation at the moment due to a bug, but chrome.storage.session is available in the current stable release of Chrome.
Simeon - @dotproto
Chrome Extensions DevRel