Blog · Lo que encuentra la auditoría gratuita
Los nombres de usuario son la mitad de un inicio de sesión
Pídale a un sitio WordPress su lista de usuarios y, por defecto, responde. El nombre de usuario de cada autor, en una lista legible por máquinas, en una dirección fija. Los atacantes no tienen que adivinar quiénes son las cuentas. Solo tienen que adivinar las contraseñas.
De dónde sale la lista, cómo la reporta la auditoría gratuita y los cuatro cambios que la cierran sin dejar a nadie fuera.
De dónde sale la lista
WordPress lleva una interfaz de programación que otro software usa para leer el sitio: la aplicación móvil, el editor de bloques, las integraciones. Una parte de ella lista usuarios. Por defecto cualquiera puede leerla, con sesión o sin ella, en la dirección del sitio seguida de /wp-json/wp/v2/users. La lista muestra el nombre público de cada cuenta y su slug de usuario, que en la mayoría de los sitios es el propio nombre de usuario.
Hay una ruta más antigua a la misma información. Pedir la dirección del sitio seguida de /?author=1 redirige a la página de archivo de la primera cuenta, cuya dirección contiene el nombre de usuario. Contar hacia arriba desde uno recorre todo el personal.
Por qué importa un nombre de usuario
Un inicio de sesión tiene dos mitades. Adivinar ambas es lento. Adivinar una, con la otra entregada, es cuestión de probar contraseñas, y las listas de contraseñas de otras filtraciones son baratas. Un sitio cuyos nombres de usuario son públicos es un sitio donde la seguridad de cada cuenta descansa solo en su contraseña.
La interfaz remota heredada, xmlrpc.php, hace el adivinar aún más rápido. Una sola petición puede llevar cientos de intentos de contraseña. Está activada por defecto, y la mayoría de los sitios no la usan desde que la aplicación móvil de WordPress dejó de necesitarla.
Cuatro cambios
Primero, restrinja la lista de usuarios a visitantes con sesión iniciada. Los plugins de seguridad ofrecen el ajuste, y para un desarrollador es un filtro corto. El editor de bloques y la aplicación siguen funcionando, porque tienen sesión.
Segundo, apague xmlrpc.php a menos que una integración concreta lo necesite. Jetpack y algunas herramientas móviles antiguas lo necesitan; si su sitio usa una de ellas, déjelo encendido y ponga delante un límite de intentos.
Tercero, dé un segundo factor a cada cuenta que pueda publicar. Este es el cambio que más importa, porque vuelve inútil una contraseña adivinada. Una aplicación de autenticación en un teléfono basta. Primero los administradores, luego los editores, luego todos.
Cuarto, renombre o elimine la cuenta llamada admin, y haga que el nombre visible de cada cuenta sea distinto de su nombre de usuario. Ninguno de los dos es una defensa por sí solo. Ambos quitan la conjetura más fácil.
En qué no molestarse
Mover la página de inicio de sesión a una dirección secreta es popular y sirve de poco. La interfaz que lista usuarios es otra puerta. Un plugin que oculta el número de versión de WordPress tampoco hace nada por esto. Dedique el tiempo al segundo factor.
Qué reporta la auditoría gratuita
La auditoría gratuita pide la lista de usuarios de la misma forma que lo haría un atacante e informa cuántos nombres de usuario devolvió, mostrando los primeros para que pueda reconocerlos. También informa si xmlrpc.php responde. Ambos hallazgos son moderados por separado y graves juntos, que es como suelen llegar.