🔒 Registro cerrado · Apertura oficial próximamente · Acceso exclusivo para alumnos activos
Iniciar SesiónUna regla por dentro
4 tareas · 40 min · Principiante
Detrás de cada hallazgo hay una regla, y una regla es un archivo de texto que alguien escribió, que puede estar demasiado ancha o demasiado estrecha y que se puede probar como cualquier otro código. En esta sala abres las reglas del repositorio de Naranjal Seguros y sus pruebas: aprendes a leer su estructura, a entender qué declaran sobre el fallo que buscan y a interpretar el resultado de una corrida de pruebas con sus dos formas de equivocarse.
Objetivo de la sala
Detrás de cada hallazgo hay una regla, y una regla es un archivo de texto que alguien escribió, que puede estar demasiado ancha o demasiado estrecha y que se puede probar como cualquier otro código. En esta sala abres las reglas del repositorio de Naranjal Seguros y sus pruebas: aprendes a leer su estructura, a entender qué declaran sobre el fallo que buscan y a interpretar el resultado de una corrida de pruebas con sus dos formas de equivocarse.Una regla en formato YAML, como las de Semgrep, tiene piezas fijas: un id, los languages a los que aplica, una severity, un message que le explica al desarrollador qué cambiar y un bloque metadata para lo que la herramienta no usa pero las personas sí. El corazón es el patrón. pattern es una forma de código a buscar; pattern-either pide que se cumpla cualquiera de varias; patterns pide que se cumplan todas. Las metavariables como $A capturan cualquier expresión. Y hay una familia de excluyentes, pattern-not y pattern-not-inside, que descartan lo que parece el fallo pero se sabe inocuo.
Una regla ancha atrapa mucho y se equivoca mucho (falsos positivos); una estrecha se equivoca poco pero deja pasar variantes (falsos negativos). Escribir una regla es elegir ese equilibrio con los ojos abiertos.
Responde para continuar
En una regla de este formato, ¿qué pieza se usa para decir qué forma conocida como inocua debe dejar pasar?
Ver pista de ayuda
Lo que se excluye se escribe como un patrón más, con la palabra «not» en su nombre. Abre las reglas y busca dónde aparece.
El bloque metadata es donde la regla enlaza su hallazgo con el catálogo de debilidades de software que mantiene MITRE, el CWE. Gracias a ese identificador, los informes de herramientas distintas se agrupan bajo el mismo nombre y quien lee un informe sabe a qué familia de fallos se refiere. La confianza dice cuánta probabilidad hay de que el hallazgo sea real; más adelante en este módulo la política la usa para decidir qué reglas pueden bloquear una fusión y cuáles solo avisan.
Cuando una regla propia o heredada no declara a qué debilidad corresponde, el informe pierde buena parte de su valor para quien debe priorizar.
Responde para continuar
Abre las reglas de Naranjal y escribe el identificador CWE que declara la regla hash-contrasena.
Ver pista de ayuda
Está en el bloque metadata del archivo de esa regla.
Una regla sin pruebas es una opinión. Para tenerlas se escribe un archivo de código con casos marcados con comentarios: # ruleid: <id-de-la-regla> antes de una línea que la regla debe marcar, y # ok: <id-de-la-regla> antes de una que no debe marcar. Con semgrep --test se corren todas y el resultado separa los dos fallos posibles: un caso ok que la regla marcó es un falso positivo; un caso ruleid que la regla no marcó es un falso negativo.
La regla propia de Naranjal, que exige autorizar un reintegro antes de pagarlo, tiene tres casos de prueba. El resultado de la última corrida dice dónde falla.
Responde para continuar
Escribe el nombre de la función de pruebas/reintegro.py cuyo caso la regla debía marcar y no marcó.
Ver pista de ayuda
El resultado de las pruebas da un número de línea. Abre el archivo de pruebas y mira qué función contiene esa línea.
Cuando una prueba falla hay dos tentaciones: cambiar la prueba para que vuelva a pasar o aflojar la regla para que deje de molestar. Las dos esconden el problema. La corrección honesta pregunta primero si el caso de prueba tiene razón. Si la tiene, se cambia la regla de modo que lo cumpla, y se vuelven a correr todas las pruebas para comprobar que lo que ya funcionaba sigue funcionando.
En la regla de consultas de Naranjal, un caso que se escribió como inocuo (dos textos fijos pegados entre sí) está siendo marcado. El caso tiene razón: ningún dato de fuera interviene.
Responde para continuar
La prueba consulta_fija falla porque la regla marca la unión de dos textos escritos en el código. ¿Cómo se corrige?
Ver pista de ayuda
El caso de prueba describe lo que la regla debe hacer. ¿Qué parte de la regla hay que cambiar, y qué hay que repetir después?
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
Preferencias
Configuraciones de cookies
Elige qué categorías permitir. Las esenciales siempre están activas. Consulta la Política de Privacidad.
Esenciales
Siempre activas · sesión, CSRF, tema y esta preferencia
Necesarias para iniciar sesión, proteger formularios (CSRF) y recordar tu elección de cookies y tema. Sin ellas la plataforma no funciona de forma segura.
Analíticos
Hoy no activos en la plataforma; listos para cuando se conecten
Nos ayudan a entender uso de cursos y páginas. Si los activas, se usarán cuando conectemos analítica; hasta entonces no se carga ningún tracker.
Marketing
Hoy no activos; campañas futuras solo con tu permiso
Comunicaciones o campañas. No activos hoy en la plataforma; quedarán listos si los conectamos y solo si los permites.