Лаб + разбор для CVE-2026-44166: предварительный угон учетной записи OAuth2 в PocketBase через непроверенную createData.email
Коллекция аутентификации PocketBase с включенным OAuth2 позволяет клиенту передавать объект createData при регистрации. Email внутри createData никогда не проверяется на соответствие email, подтвержденному провайдером OAuth2. Любой, у кого есть учетная запись у настроенного провайдера, может зарегистрировать запись, содержащую чужой email, привязанную к его собственной OAuth2-идентичности.
При настройке одного провайдера настоящий владелец блокируется. При двух и более владелец входит в систему позже через другого провайдера и в итоге делит учетную запись с атакующим.
Затронуто: < 0.22.42 и >= 0.30.0, < 0.37.4. Исправлено в 0.22.42 и 0.37.4.
Уведомление: GHSA-pq7p-mc74-g65w. CWE-287. CVSS 4.0 6.1.
Полное описание: WRITEUP.md
python fetch_binaries.py # pulls vulnerable 0.37.3 + patched 0.37.4 for your OS
python poc.py # pre-claim and lockout against the vulnerable build
python verify_fix.py 0.37.4 # same steps on the patched build, attacker gets evicted
Python 3.8+, только стандартная библиотека. PoC работает офлайн с встроенным имитатором OAuth2-провайдера, поэтому нет реального IdP или сетевой цели.
Уязвимая версия 0.37.3:
[1] Attacker token issued for: [email protected] (verified=False)
[2] Victim login: HTTP 400 -- Failed to authenticate.
[3] Attacker re-auth: [email protected] -- same record: True
Исправленная версия 0.37.4:
[1] Attacker pre-claims: [email protected] verified=False id=...
[2] Victim login: SUCCESS verified=True id=... => victim owns the account
[3] Attacker re-auth: [email protected] id=... same-as-victim=False
| Файл | Назначение |
|---|---|
WRITEUP.md | Анализ первопричины, оба варианта атаки, исправление, обнаружение |
fetch_binaries.py | Загружает бинарные файлы 0.37.3 / 0.37.4 для вашей ОС/архитектуры |
mock_oauth2_server.py | Небольшой офлайн имитатор OAuth2-провайдера (токен + userinfo) |
poc.py | Эксплойт для уязвимой сборки |
verify_fix.py | Выполняет те же шаги на любой сборке и сообщает результат |
В целях обучения и авторизованного тестирования безопасности: собственная лаборатория, машины CTF и HTB, цели в рамках программы bug bounty. Лаборатория работает офлайн и никогда не взаимодействует с тем, что вы не запустили сами.