Loading
_ DESCIFRANDO CONEXIÓN SEGURA...

Excepciones que dejan la puerta abierta

5 tareas · 40 min · Principiante

Casi todo control de seguridad depende de algo que puede fallar: un servicio externo, una base de datos, un directorio de permisos. Lo que el código hace en ese momento decide si el control sigue en pie o desaparece sin que nadie lo note. Droguería Siemprevida vende en línea medicamentos que exigen fórmula médica y la valida con un proveedor externo. Te entrega su código, el registro de despachos de un sábado en que el proveedor estuvo inestable y las notas del equipo. Todo es lectura de evidencia ficticia.

0 de 5 · 0%

Objetivo de la sala

Casi todo control de seguridad depende de algo que puede fallar: un servicio externo, una base de datos, un directorio de permisos. Lo que el código hace en ese momento decide si el control sigue en pie o desaparece sin que nadie lo note. Droguería Siemprevida vende en línea medicamentos que exigen fórmula médica y la valida con un proveedor externo. Te entrega su código, el registro de despachos de un sábado en que el proveedor estuvo inestable y las notas del equipo. Todo es lectura de evidencia ficticia.

Cuando la pieza que respalda un control no responde, el código tiene que elegir. Puede fallar cerrado: no deja pasar lo que no pudo comprobar y lo retiene hasta poder hacerlo. O puede fallar abierto: sigue como si la comprobación hubiera salido bien. Lo segundo casi nunca se escribe a propósito; aparece en un bloque catch que registra la falla y deja que la ejecución continúe hacia el camino feliz.

El Top 10 de OWASP de 2025 dedica su décima categoría al manejo inadecuado de condiciones excepcionales: software que no prevé, no detecta o no responde bien a lo inusual, y que por eso termina en estados que nadie diseñó. Agrupa 24 debilidades del catálogo CWE, y una de ellas es justamente no fallar de forma segura. Que un proveedor se caiga es normal; que su caída apague un control es un fallo del código.

Responde para continuar

El validador externo de fórmulas no responde. ¿Qué hace un control que falla cerrado?

Ver pista de ayuda

Cerrado quiere decir que lo no comprobado no pasa.

Abre el laboratorio y lee VerificadorFormula.php y AutorizarDevolucion.php. Hay tres bloques try/catch que envuelven una llamada a un servicio externo. Para cada uno, no te quedes en lo que hace el catch: sigue la ejecución hasta lo que el método devuelve después. Dos de ellos, ante la duda, niegan o mandan a revisión humana; uno registra la falla y deja que el bucle continúe hasta un return que aprueba.

Responde para continuar

¿Qué método deja que el pedido siga hacia despacho cuando la llamada al validador lanza una excepción? Escribe su nombre tal como aparece en el código.

Ver pista de ayuda

Mira qué devuelve el método cuando el bucle termina, no solo lo que hay dentro del catch.

El hallazgo se mide con el registro, no con el código. En registro-despachos.txt cada línea dice si el producto exige fórmula, qué contestó el validador y qué pasó con el pedido. Cuenta los pedidos que cumplen las tres condiciones a la vez: el producto exige fórmula, el validador no llegó a responder y el pedido salió a despacho.

Responde para continuar

¿Cuántos pedidos con un medicamento que exige fórmula salieron a despacho sin que el validador llegara a responder?

Ver pista de ayuda

Hay un pedido con error del validador que no salió por otra razón, y otro que ni siquiera necesitaba validador.

Un hallazgo bien clasificado le dice al equipo qué familia de errores buscar en el resto del código. Dentro de la categoría de condiciones excepcionales conviven debilidades muy distintas: mensajes de error que revelan datos, valores de retorno que nadie revisa, errores que se detectan y no se atienden, y diseños que ante la falla pasan a un estado menos protegido. La clasificación correcta es la que describe la causa, no el síntoma que se ve primero en el registro.

Responde para continuar

¿Qué clasificación describe la causa del hallazgo en puedeDespachar?

Ver pista de ayuda

Fíjate en qué estado queda el control cuando el validador falla, comparado con cuando funciona.

El cambio CS-212 resolvía un problema real: dos caídas del proveedor frenaron las ventas una hora cada vez. Pero lo resolvió quitando el control justo cuando no hay nadie que lo sustituya; la revisión del regente al final del día no está automatizada y ese sábado no hubo regente. El propio código de Siemprevida ya muestra el patrón correcto en requiereRevisionRegente y en AutorizarDevolucion: ante la duda, se reporta y se niega o se retiene. La continuidad del negocio se consigue con una cola de pedidos pendientes que se revalidan solos, no abriendo el control.

Responde para continuar

¿Qué cambio quita la causa del hallazgo sin dejar la venta frenada a ciegas?

Ver pista de ayuda

El pedido no debe salir sin fórmula validada, pero tampoco debe perderse.

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