
Scanner Estático de Tokens e Credenciais
Scanner Estático de Tokens e Credenciais
STACS é um scanner de credenciais estáticas alimentado por YARA que suporta formatos de arquivos binários, análise de arquivos aninhados, conjuntos de regras e listas de ignorar componíveis, e relatórios SARIF.
Atualmente, o STACS suporta descompactação recursiva de:
Como o STACS trabalha com tipos de arquivo detectados, formatos de arquivo proprietários e outros
tipos de arquivo que usam esses formatos são automaticamente suportados. Isso inclui imagens
Docker, APKs Android, arquivos JAR Java, RPMs, pacotes Debian (.deb), pacotes macOS
(.pkg), e muito mais!
O STACS foi projetado para uso por qualquer equipe que publique artefatos binários. O STACS oferece aos desenvolvedores a capacidade de verificar automaticamente a inclusão acidental de credenciais estáticas e material de chave em suas versões.
No entanto, isso não significa que o STACS não possa ajudar com aplicações SaaS, software corporativo ou até mesmo código-fonte!
Como exemplo, o STACS pode ser usado para encontrar credenciais estáticas em imagens Docker enviadas para registros de contêineres públicos e privados. Também pode ser usado para encontrar credenciais acidentalmente compiladas em executáveis, pacotes para dispositivos móveis e "arquivos corporativos" — como aqueles usados por servidores de aplicação Java.
O STACS detecta credenciais estáticas usando "pacotes de regras" fornecidos ao STACS quando executado. Esses pacotes de regras definem um conjunto de regras YARA para serem executadas nos arquivos fornecidos ao STACS. Quando uma correspondência com uma regra é encontrada, um "achado" é gerado. Esses achados representam potenciais credenciais dentro de um arquivo e são relatados para que um desenvolvedor corrija ou "ignore".
Se o achado for considerado um falso positivo — ou seja, uma correspondência em algo que não é uma credencial real — o desenvolvedor pode gerar um conjunto de "listas de ignorar" para garantir que essas correspondências não apareçam em relatórios futuros.
O verdadeiro poder do STACS vem da detecção automática e descompactação de arquivos aninhados, e listas de ignorar e pacotes de regras componíveis.
Para permitir uso flexível e colaborativo, o STACS suporta listas de ignorar componíveis. Isso permite que uma lista de ignorar inclua outras listas de ignorar, possibilitando a composição de uma "árvore de ignorados" com base em diretrizes organizacionais. Essas listas de ignorar são especialmente úteis em organizações onde muitos dos mesmos frameworks ou produtos são usados. Se uma equipe já marcou um achado como falso positivo, outras equipes se beneficiam por não precisarem triar o mesmo achado.
Da mesma forma que as listas de ignorar, os pacotes de regras também são componíveis. Isso permite que uma organização defina um conjunto base de regras para uso por todas as equipes, enquanto ainda permite que as equipes mantenham conjuntos de regras específicos para seus produtos.
A maneira mais fácil de usar o STACS é usando as imagens Docker publicadas no Docker Hub. No entanto, o STACS também pode ser instalado diretamente do PyPI do Python, ou clonando este repositório. Veja as seções relevantes abaixo para começar!
Um serviço baseado em nuvem está chegando em breve, permitindo integração direta em pipelines de construção e liberação para detectar credenciais estáticas antes do lançamento!
Usando as imagens publicadas, o STACS pode ser usado para escanear artefatos imediatamente! As imagens Docker do STACS fornecem vários pontos de montagem de volume para que os arquivos que se deseja escanear sejam montados diretamente no contêiner de escaneamento.
Como exemplo, para escanear tudo na pasta atual, o seguinte comando pode ser executado (o Docker deve estar instalado).
docker run \
--rm \
-v "$(pwd):/mnt/stacs/input:ro" \
stacscan/stacs:latest
Se você quiser receber uma saída legível "bonita", o seguinte comando deve ser usado:
docker run \
--rm \
-e STACS_OUTPUT_PRETTY=1 \
-v "$(pwd):/mnt/stacs/input:ro" \
stacscan/stacs:latest
Por padrão, o STACS enviará quaisquer achados no formato SARIF diretamente para STDOUT e, para manter a organização, todas as mensagens de log serão enviadas para STDERR. Para casos de uso mais avançados, vários outros pontos de montagem de volume são fornecidos. Eles permitem que o usuário controle os pacotes de regras, as listas de ignorar e diretórios de cache a serem usados.
O STACS também pode ser instalado diretamente do PyPI do Python. Isso fornece um comando stacs
que pode ser usado por desenvolvedores para escanear projetos diretamente em seus ambientes de
desenvolvimento locais.
O STACS pode ser instalado diretamente do PyPI usando:
pip install stacs
Por favor, note: A versão PyPI do STACS não vem com nenhuma regra. Elas também precisarão ser clonadas do repositório de regras da comunidade para que o STACS funcione!
Ainda não. No entanto, há planos para uma versão hospedada do STACS que pode ser facilmente integrada em sistemas de construção existentes e que contém pacotes de regras e listas de ignorar pré-construídos adicionais.
Infelizmente, falsos positivos são um efeito colateral inevitável durante a detecção de credenciais estáticas. Se as regras forem muito granulares, a manutenção das regras se torna um fardo e o STACS pode perder credenciais. Se as regras forem muito amplas, o STACS pode gerar muitos falsos positivos!
Para ajudar, o STACS fornece várias ferramentas para auxiliar na redução do número de falsos positivos que chegam aos relatórios finais.
Principalmente, o STACS fornece um mecanismo que permite aos usuários definir listas de ignorar componíveis que permitem que um conjunto de achados seja "ignorado". Essas regras podem ser tão amplas quanto ignorar todos os arquivos com base em um padrão, ou tão granulares quanto um achado específico em uma linha específica de um arquivo.
Essa informação é automaticamente propagada para os relatórios, de modo que os achados "ignorados" serão marcados como "suprimidos" na saída SARIF, enquanto também incluem a razão para o ignore na saída para rastreamento.
Se usar a saída "bonita" (--pretty / STACS_OUTPUT_PRETTY), os resultados serão impressos
em um formato legível por humanos no console.

Se usar SARIF, existem vários visualizadores disponíveis que tornam esses dados mais fáceis de ler, como este ótimo visualizador web da Microsoft. Um exemplo dos achados de uma imagem de contêiner Docker foi incluído abaixo:

Infelizmente, isso parece ser devido a uma limitação do Docker Desktop para Mac. E/S para montagens bind é realmente, realmente lenta.