Recaptcha de Google tiene hostname
de validación "baked-in". Cuando un usuario envía una respuesta de Recpatcha, el dominio del que se obtuvo la respuesta se valida en la lista blanca de dominios que proporcionó al configurar Recaptcha.
Sin embargo, si está utilizando Recaptcha con varios dominios, tiene la opción de desactivar la validación de hostname
predeterminada de Google y manejarlo usted mismo ( enlace ).
Google acompaña esto con una advertencia prominente de que la no validación de hostname
para cualquier respuesta dada lo abre a una vulnerabilidad de seguridad. Pero teniendo en cuenta lo fácil que es falsificar el hostname
, no veo cómo este alguna vez proporcionó ningún grado de mejora de la seguridad.
Una prueba simple me demostró lo fácil que es falsificar el valor hostname
que usa Google para validar el origen de la respuesta Recaptcha:
$ sudo nano /etc/hosts
127.0.0.1 spoofedhostname.com
Y luego, cuando envié una respuesta de prueba Recaptcha, el resultado que obtuve fue el siguiente:
{
"success": true,
"challenge_ts": "2016-12-24T14:15:22Z",
"hostname": "spoofedhostname.com"
}
¿Por qué molestarse con la validación del nombre de host?
- Se sabe que la validación del nombre de host es inútil en vista de lo fácil que es falsear.
- Esto parece tener algo que ver con evitar que un atacante robe su clave pública de Recaptcha y luego genere un montón de respuestas de Recaptcha válidas, que podrían almacenar y luego usar cuando automatizan un ataque en puntos finales sensibles (
/login
,% código%). Teóricamente, esto podría usarse en algún tipo de ataque de fuerza bruta, pero en realidad no tiene sentido considerando que los tokens de respuesta expiran después de 1 minuto. Y aún tendría que resolver manualmente todos los Recaptchas, que simplemente podría hacer en el dominio real. Y, nuevamente, podrían fácilmente falsificar su dominio incluso si están haciendo validación de/reset-password
.
Para mí, no tiene ningún sentido, pero teniendo en cuenta que es un producto de Google, debo pensar que sus ingenieros de seguridad saben algo que yo no.
¿Qué me estoy perdiendo?