Loading
_ DESCIFRANDO CONEXIÓN SEGURA...

Consumir APIs de terceros como entrada no confiable

5 tareas · 40 min · Principiante

Una plataforma de servicios casi nunca está sola: geocodifica direcciones con un proveedor, manda mensajes con otro y cobra con un tercero. Lo que esos proveedores devuelven entra a la aplicación por una puerta en la que nadie pone guardia, porque «es un proveedor serio». El 12 de noviembre la app de los repartidores de Domicilios Cuchumbí mostró textos extraños y el servicio de notificaciones se quedó colgado varios minutos. Tienes los dos clientes de proveedores, el contrato de uno de ellos y el registro de integraciones.

0 de 5 · 0%

Objetivo de la sala

Una plataforma de servicios casi nunca está sola: geocodifica direcciones con un proveedor, manda mensajes con otro y cobra con un tercero. Lo que esos proveedores devuelven entra a la aplicación por una puerta en la que nadie pone guardia, porque «es un proveedor serio». El 12 de noviembre la app de los repartidores de Domicilios Cuchumbí mostró textos extraños y el servicio de notificaciones se quedó colgado varios minutos. Tienes los dos clientes de proveedores, el contrato de uno de ellos y el registro de integraciones.

El Top 10 de seguridad de APIs de OWASP, en su edición de 2023, dedica su décimo riesgo al consumo inseguro de APIs: los equipos suelen confiar más en lo que devuelve un tercero que en lo que escribe un usuario, y le aplican controles más flojos. Quien quiera llegar a la aplicación ya no necesita atacarla de frente; le basta con lo que entra por la integración, sea porque el proveedor fue comprometido, porque su dominio cambió de manos o porque alguien se metió en medio de la conexión.

La regla que se desprende es corta: la respuesta de un proveedor es entrada externa. Se recibe por un canal verificado, con tiempo de espera y tamaño máximo, se valida contra lo que el proveedor promete y se codifica al mostrarla, igual que si la hubiera escrito un desconocido.

Responde para continuar

¿Cómo hay que tratar los datos que devuelve la API de un proveedor de confianza?

Ver pista de ayuda

Piensa en qué pasa si el proveedor es el que cae.

Abre el laboratorio y lee cliente_ubicalo.py junto a cliente_textea.py. El segundo sirve de contraste: es lo que el primero debería parecer. Fíjate primero en cómo se abre la conexión. Si el cliente no comprueba el certificado del proveedor, cualquiera que se ponga en medio puede responder en su nombre, y además se lleva la clave de API que viaja en cada pedido.

Responde para continuar

¿Qué argumento, con su valor, apaga la comprobación del certificado del proveedor en el cliente de Ubícalo? Escríbelo tal como aparece en el código.

Ver pista de ayuda

Está en la llamada a requests, con un comentario que da la excusa.

La librería que usa el cliente sigue redirecciones si se lo permiten, y este cliente lo permite. El contrato de Ubícalo dice algo muy concreto sobre redirecciones y sobre su dominio. Lee contrato-ubicalo.txt y busca en integraciones.log a dónde terminó yendo el cliente. Una redirección seguida a ciegas lleva la petición, y lo que la acompaña, a un servidor que nadie evaluó.

Responde para continuar

¿A qué host siguió el cliente de Ubícalo una redirección que el contrato no contempla? Escríbelo tal como aparece.

Ver pista de ayuda

Busca la línea con estado 301.

El contrato fija un tamaño máximo de respuesta, y el cliente no lo comprueba. Recorre integraciones.log y cuenta las respuestas que el cliente de Ubícalo procesó con un tamaño mayor que el del contrato. Las del otro proveedor no cuentan, tampoco la que no llegó a responder, y sí cuenta la que vino del host al que se siguió la redirección, porque también la procesó el cliente de Ubícalo.

Responde para continuar

¿Cuántas respuestas procesadas por el cliente de Ubícalo superaron el tamaño máximo del contrato?

Ver pista de ayuda

Compara cada tamaño con el máximo en bytes del contrato.

tarjeta_entrega.py escapa lo que escribe el cliente final y no escapa lo que viene de Ubícalo, «porque ya viene limpio». El registro muestra una respuesta con etiquetas HTML en un campo que el contrato declara sin marcado, y esa respuesta se procesó. El tiempo de espera ausente explica, de paso, los minutos que notificaciones se quedó colgado esperando una respuesta que nunca llegó.

Responde para continuar

¿Qué corrige el hallazgo de la tarjeta de entrega en su causa?

Ver pista de ayuda

El control tiene que quedar del lado de quien recibe el dato.

Inicia sesión para registrar tus puntos y progreso en el ranking.

Whoami-Labs Pro

Whoami-Labs Pro utiliza cookies

Utilizamos cookies y almacenamiento local para el funcionamiento del sitio, seguridad de sesión y, si lo autorizas, analítica y marketing. Puedes aceptar, rechazar o personalizar. Política de Privacidad