Laboratorio + artículo sobre CVE-2026-44166: Pre-secuestro de cuenta OAuth2 en PocketBase mediante createData.email no validado
Una colección de autenticación de PocketBase con OAuth2 habilitado permite al cliente pasar un objeto createData al registrarse. El correo electrónico dentro de createData nunca se verifica contra el correo electrónico que el proveedor OAuth2 ha verificado. Cualquier persona con una cuenta en un proveedor configurado puede registrar un registro que contenga el correo electrónico de otra persona, vinculado a su propia identidad OAuth2.
Con un proveedor configurado, el propietario real queda bloqueado. Con dos o más, el propietario inicia sesión posteriormente a través de un proveedor diferente y termina compartiendo la cuenta con el atacante.
Afectado: < 0.22.42 y >= 0.30.0, < 0.37.4. Corregido en 0.22.42 y 0.37.4.
Aviso: GHSA-pq7p-mc74-g65w. CWE-287. CVSS 4.0 6.1.
Informe completo: 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+, solo biblioteca estándar. El PoC se ejecuta sin conexión contra un proveedor OAuth2 simulado incluido, por lo que no hay un IdP real ni un objetivo de red.
Vulnerable 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
Parcheado 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
| Archivo | Propósito |
|---|---|
WRITEUP.md | Análisis de causa raíz, ambas variantes de ataque, remediación, detección |
fetch_binaries.py | Descarga los binarios 0.37.3 / 0.37.4 para tu SO/arquitectura |
mock_oauth2_server.py | Pequeño proveedor OAuth2 simulado sin conexión (token + userinfo) |
poc.py | El exploit contra la compilación vulnerable |
verify_fix.py | Ejecuta los mismos pasos en cualquier compilación e informa el resultado |
Para educación y pruebas de seguridad autorizadas: tu propio laboratorio, máquinas CTF y HTB, objetivos de bug bounty dentro del alcance. El laboratorio está desconectado y nunca toca nada que no ejecutes tú mismo.