Revisión de AuthZ asistida por IA: Lectura de los límites de permisos en Ory Kratos
La IA es mala encontrando errores, pero excelente generando sospechas.
En seguridad, lo más barato que puede hacer una IA es crear una inundación de informes falsos. Por eso los programas de bug bounty están pausando o endureciendo sus reglas.
Yo uso la IA de forma diferente. Permito que la IA genere hipótesis en exceso basándose en mi catálogo de "AuthZ Smells". Luego, yo hago el trabajo duro. Mi trabajo es descartar esas hipótesis.
Una revisión exitosa no es una lista de errores. Es una tabla de descarte de ideas que no superaron la prueba.
Revisé el código fuente de Ory Kratos. Kratos gestiona la identidad y la administración de usuarios. Es un área de alto riesgo porque utiliza múltiples identidades y APIs públicas.
Probé cinco hipótesis:
- H1: La Admin API no tiene autorización en el código.
- H2: Fugas de datos entre identidades o entre tenants.
- H3: Reutilización de tokens en flujos de recuperación.
- H4: Confusión de identidad en flujos de configuración.
- H5: Asignación de tenants mediante payloads de la solicitud.
Los resultados:
- H1: DESCARTADA. La autorización reside en el límite de la red, no en el manejador del código. Esto es así por diseño.
- H2: DESCARTADA. Una capa central de acceso a datos filtra todas las consultas por ID de tenant. Los usuarios no pueden eludir esto.
- H3: DESCARTADA. Los tokens son de un solo uso y tienen un tiempo limitado.
- H4: DESCARTADA. Los flujos están vinculados a la sesión, no a la entrada del usuario.
- H5: DESCARTADA. Los IDs de los tenants provienen del contexto del sistema, no del cuerpo de la solicitud.
Entraron cinco hipótesis. Salieron cero hallazgos. Esta es una revisión exitosa.
Dos lecciones para tu trabajo de seguridad:
La seguridad en la capa de despliegue parece falta de seguridad. Si un guardia reside en el nivel de red, el código parecerá desnudo. No lo reportes hasta que hayas comprobado la arquitectura.
Encuentra el punto de estrangulamiento (chokepoint). Si un sistema impone límites en la capa de datos, los manejadores individuales no necesitan comprobaciones. En lugar de preguntar "¿este manejador comprueba los permisos?", pregunta "¿puede alguien acceder a los datos sin pasar por el punto de estrangulamiento?".
Usa la IA para rechazar candidatos. Usa humanos para verificar a los supervivientes. El valor reside en el rechazo.
Comunidad de aprendizaje opcional: https://t.me/GyaanSetuAi
