
Escáner Estático de Tokens y Credenciales
Escáner Estático de Tokens y Credenciales
STACS es un escáner estático de credenciales impulsado por YARA que admite formatos de archivo binarios, análisis de archivos anidados, conjuntos de reglas y listas de ignorados componibles, e informes SARIF.
Actualmente, STACS soporta la descompresión recursiva de:
Como STACS trabaja sobre tipos de archivo detectados, los formatos de archivo propietarios basados en
y otros tipos de archivo que usan estos formatos se admiten automáticamente. ¡Esto incluye imágenes
Docker, APKs de Android, archivos JAR de Java, RPMs, paquetes Debian (.deb), paquetes macOS
(.pkg), y más!
STACS está diseñado para ser usado por cualquier equipo que publique artefactos binarios. STACS proporciona a los desarrolladores la capacidad de verificar automáticamente la inclusión accidental de credenciales estáticas y material de claves en sus versiones.
Sin embargo, esto no significa que STACS no pueda ayudar con aplicaciones SaaS, software empresarial, ¡o incluso código fuente!
Por ejemplo, STACS se puede usar para encontrar credenciales estáticas en imágenes Docker subidas a registros de contenedores públicos y privados. También se puede usar para encontrar credenciales compiladas accidentalmente en ejecutables, paquetes para dispositivos móviles y "archivos empresariales", como los utilizados por los servidores de aplicaciones Java.
STACS detecta credenciales estáticas mediante "paquetes de reglas" que se le proporcionan al ejecutarse. Estos paquetes de reglas definen un conjunto de reglas YARA que se ejecutan contra los archivos proporcionados a STACS. Cuando se encuentra una coincidencia con una regla, se genera un "hallazgo". Estos hallazgos representan posibles credenciales dentro de un archivo, y se informan para que un desarrollador los corrija o los "ignore".
Si el hallazgo resulta ser un falso positivo — es decir, una coincidencia en algo que no es una credencial real — el desarrollador puede generar un conjunto de "listas de ignorados" para asegurar que estas coincidencias no aparezcan en informes futuros.
El verdadero poder de STACS proviene de la detección y descompresión automática de archivos anidados, y de las listas de ignorados y paquetes de reglas componibles.
Para permitir un uso flexible y colaborativo, STACS admite listas de ignorados componibles. Esto permite que una lista de ignorados incluya otras listas de ignorados, lo que posibilita la composición de un "árbol de ignorados" basado en pautas organizativas. Estas listas de ignorados son especialmente útiles en organizaciones donde se utilizan muchos de los mismos frameworks o productos. Si un equipo ya ha marcado un hallazgo como falso positivo, otros equipos se benefician al no tener que triar el mismo hallazgo.
De la misma manera que las listas de ignorados, los paquetes de reglas también son componibles. Esto permite a una organización definir un conjunto base de reglas para que lo usen todos los equipos, mientras que permite a los equipos mantener conjuntos de reglas específicos para sus productos.
La forma más sencilla de usar STACS es mediante las imágenes Docker publicadas en Docker Hub. Sin embargo, STACS también se puede instalar directamente desde PyPI de Python, o clonando este repositorio. ¡Consulte las secciones correspondientes a continuación para empezar!
Próximamente estará disponible un servicio basado en la nube que permita la integración directa en canales de compilación y publicación para detectar credenciales estáticas antes del lanzamiento.
Usando las imágenes publicadas, ¡STACS se puede usar para escanear artefactos de inmediato! Las imágenes Docker de STACS proporcionan varios montajes de volumen para que los archivos que se deseen escanear se monten directamente en el contenedor de escaneo.
Por ejemplo, para escanear todo en la carpeta actual, se puede ejecutar el siguiente comando (Docker debe estar instalado).
docker run \
--rm \
-v "$(pwd):/mnt/stacs/input:ro" \
stacscan/stacs:latest
Si desea recibir una salida "bonita" y legible, debe usar el siguiente comando:
docker run \
--rm \
-e STACS_OUTPUT_PRETTY=1 \
-v "$(pwd):/mnt/stacs/input:ro" \
stacscan/stacs:latest
De forma predeterminada, STACS enviará cualquier hallazgo en formato SARIF directamente a STDOUT y, para mantener el orden, todos los mensajes de registro se enviarán a STDERR. Para casos de uso más avanzados, se proporcionan otros montajes de volumen. Estos permiten al usuario controlar los paquetes de reglas, las listas de ignorados y los directorios de caché a utilizar.
STACS también se puede instalar directamente desde PyPI de Python. Esto proporciona un comando stacs
que los desarrolladores pueden usar para escanear proyectos directamente en sus entornos de desarrollo
locales.
STACS se puede instalar directamente desde PyPI usando:
pip install stacs
Nota: La versión de PyPI de STACS no incluye ninguna regla. También será necesario clonarlas del repositorio de reglas de la comunidad para que STACS funcione.
Todavía no. Sin embargo, hay planes para una versión alojada de STACS que pueda integrarse fácilmente en sistemas de compilación existentes, y que contenga paquetes de reglas y listas de ignorados preconstruidos adicionales.
Desafortunadamente, los falsos positivos son un efecto secundario inevitable durante la detección de credenciales estáticas. Si las reglas son demasiado detalladas, el mantenimiento de las reglas se vuelve una carga y STACS podría pasar por alto credenciales. Si las reglas son demasiado generales, STACS podría generar demasiados falsos positivos.
Para ayudar, STACS proporciona varias herramientas para reducir el número de falsos positivos que llegan a los informes finales.
Principalmente, STACS proporciona un mecanismo que permite a los usuarios definir listas de ignorados componibles que permiten "ignorar" un conjunto de hallazgos. Estas reglas pueden ser tan generales como ignorar todos los archivos según un patrón, o tan específicas como un hallazgo concreto en una línea particular de un archivo.
Esta información se propaga automáticamente a los informes, por lo que los hallazgos "ignorados" se marcarán como "suprimidos" en la salida SARIF, incluyendo también la razón de la ignorancia en la salida para su seguimiento.
Si se usa la salida "bonita" (--pretty / STACS_OUTPUT_PRETTY), los resultados se imprimirán
en un formato legible para humanos en la consola.

Si se usa SARIF, hay varios visores disponibles que hacen que estos datos sean más fáciles de leer, como este excelente visor web de Microsoft. A continuación se incluye un ejemplo de los hallazgos de una imagen de contenedor Docker:

Desafortunadamente, esto parece deberse a una limitación de Docker Desktop para Mac. La E/S para montajes vinculados es realmente, realmente lenta.