MagAudit vs TruffleHog
Escrito por quienes hacemos uno de los dos. Léelo teniéndolo en cuenta.
TruffleHog hace una cosa que nosotros no haremos nunca
TruffleHog verifica una credencial encontrada llamando a la API del proveedor para ver si sigue funcionando. Eso es útil de verdad: separa una clave viva de una ya rotada, y reduce el montón por triar.
Nosotros no lo hacemos, y no está en la hoja de ruta. Según el
artículo 197 bis del Código Penal español —operamos desde
España—, usar la credencial de otro para acceder a un sistema sin autorización son de
seis meses a dos años. Nuestro escáner habla con api.github.com y con los
registros de paquetes, y con nada más. Hay una prueba que falla si se hace cualquier otra
petición.
Si lo que necesitas es la verificación, usa TruffleHog. Es de código abierto y gratuito.
En qué nos diferenciamos
| TruffleHog | MagAudit | |
|---|---|---|
| Verifica la clave contra el proveedor | Sí | No, por diseño |
| Corre en el CI que configuras tú | Sí | Sin tocar el CI; es una App de GitHub |
| Violaciones del límite del navegador | — | Sí |
| Comenta en el pull request con fichero, línea y corrección | Con tu pipeline | Incluido |
| Entiende los ficheros de configuración ver los dos casos de abajo | — | Sí |
Los dos casos que nos costaron una disculpa pública
Estábamos preparando avisos de seguridad para repositorios públicos, y comprobamos cada uno a mano antes de enviarlo. Los dos estaban mal, y los dos están ahora fijados por una prueba de regresión escrita con la línea exacta:
1. Una variable forzada a vacío es el arreglo, no el fallo
...(command === "build"
? { "import.meta.env.VITE_OPENAI_API_KEY": '""' }
: {}),
Esa línea elimina la clave de todas las compilaciones de producción. Un
comentario de seis líneas encima explica que Vite incrusta las VITE_* en el
paquete. Le habríamos dicho a un equipo que entiende esto mejor que nuestro escáner que
tenía el fallo que ya había arreglado.
2. Leer una variable en Node no es publicarla
module.exports = {
openAIApiKey: process.env.VITE_OPENAI_API_KEY,
}
La configuración de una herramienta de traducción. Corre en Node en tiempo de
compilación. El prefijo VITE_ despista: el código de cliente nunca referencia
la variable, así que nada llega al navegador. Cualquier escáner que busque el prefijo va a
marcar esto, y se va a equivocar.
Última revisión: 21 de septiembre de 2026. Todas las cifras sobre nosotros son medición propia y reproducibles contra nuestro endpoint público y nuestro registro de errores. Cualquier cifra sobre otro producto o la puedes verificar tú en un paso, o está marcada como informada por un tercero. Hasta el 18 de septiembre esta línea afirmaba que todas las cifras de aquí eran medición nuestra, lo que no era cierto de todas ellas.