BookinglyTech News
Ciberseguridad

Medir rareza en vez de entropía para cazar secretos en el código

Una propuesta en el repositorio de Gitleaks plantea cambiar la entropía de Shannon por la eficiencia de tokens de BPE como filtro en el escaneo de secretos.

2 min de lecturaLobsters0 vistas

Gitleaks decide qué candidatos merecen atención después de las expresiones regulares usando la entropía de Shannon. Una propuesta abierta en el repositorio del proyecto plantea cambiar ese filtro por otro: la eficiencia de tokens que produce un tokenizador de Byte-Pair Encoding. Sobre el conjunto de datos CredData, los primeros números apuntan a que un umbral de 2,5 separa razonablemente los secretos reales del ruido.

Del azar a la rareza

El flujo habitual de un escáner de secretos es siempre el mismo: las regex lanzan una red ancha, la entropía filtra los candidatos y después se aplican reglas complementarias, como descartar cadenas con palabras inglesas frecuentes o ignorar ficheros conocidos del estilo de go.sum. La entropía mide cuánta información lleva cada carácter. Una cadena con caracteres muy repartidos puntúa alto; aaaaaa111111 puntúa bajo. El problema: una cadena en base64, un UUID, una clave real y el nombre raro de una dependencia pueden acabar con puntuaciones parecidas aunque su frecuencia en el mundo real no tenga nada que ver.

De ahí el cambio de enfoque. Los secretos no son solo aleatorios: son raros frente al texto humano. Y los tokenizadores BPE ya miden eso sin proponérselo. Construyen su vocabulario fusionando los pares de caracteres más frecuentes del corpus de entrenamiento, así que lo común acaba en pocos tokens y lo insólito se rompe en trozos. Con cl100k_base, "Hello World" sale en dos tokens y "lookingatcomputer" en tres. La métrica propuesta es el cociente entre la longitud de la cadena y el número de tokens. Una clave del estilo ghp_xK7mP9qL2wR5nT3vJ8fY, de 24 caracteres, produce 22 tokens: eficiencia 1,1. El texto corriente se mueve bastante más arriba.

Qué falta por comprobar

Para medirlo, quien firma el análisis extrajo los valores etiquetados de CredData, miles de ejemplos de secretos y no secretos anotados sobre repositorios reales. Los ficheros de índice traen las etiquetas, los rangos de línea y columna y los nombres de fichero, pero no los valores: hay que reconstruirlos cortando los ficheros fuente en esas posiciones. Con esa muestra, 2,5 parece un buen corte mínimo.

Conviene no confundir el alcance de la idea. Hablamos de un filtro posterior a las regex, no de un detector autónomo: solo clasifica candidatos ya capturados. Gitleaks aplica hoy un umbral de entropía de 3,5, así que la comparación directa de las dos métricas sobre el mismo conjunto es lo que queda pendiente. El código que genera las gráficas está publicado.