.. image:: https://cdn.sourcecode.ai/imgs/logotype.png
:target: https://aura.sourcecode.ai/
======
.. class:: center
|homepage_flair| |docs_flair| |docker_flair|
|license_flair| |travis_flair| |pypi_flair|
Auditoria de código fonte e análise estática de código
Aura é um framework de análise estática desenvolvido como resposta à ameaça cada vez maior de pacotes maliciosos e código vulnerável publicados no PyPI.
Objetivos do projeto:
- fornecer um sistema de monitoramento automatizado sobre pacotes enviados ao PyPI, alertar sobre anomalias que podem indicar um ataque em andamento ou vulnerabilidades no código
- permitir que uma organização realize auditorias de segurança automatizadas do código fonte e implemente práticas de codificação segura com foco na auditoria de código de terceiros, como dependências de pacotes Python
- permitir que pesquisadores analisem repositórios de código em grande escala, criem conjuntos de dados e realizem análises para avançar a pesquisa na área de dependências de código vulneráveis e maliciosas
Lista de funcionalidades:
- Adequado para análise de malware com garantia de zero execução de código
- Mecanismos avançados de desofuscação reescrevendo a árvore AST - propagação de constantes, desenrolamento de código e outros truques sujos
- Escaneamento recursivo que descompacta automaticamente arquivos como zips, wheels, etc. e escaneia o conteúdo
- Suporte também a escaneamento de arquivos não Python - plugins podem funcionar em modo 'arquivo bruto', como a integração embutida com Yara
- Escaneie por segredos codificados, senhas e outras informações sensíveis
- Mecanismo de diff personalizado - você pode comparar alterações entre diferentes fontes de dados, como pacotes typosquatting do PyPI, para ver quais mudanças foram feitas
- Funciona tanto para código fonte Python 2.x quanto Python 3.x
- Alto desempenho, projetado para escanear todo o repositório PyPI
- Saída em diversos formatos, como texto simples formatado, JSON, SQLite, SARIF, etc.
- Testado em mais de 4TB de código fonte Python comprimido
- Aura é capaz de relatar comportamentos do código, como comunicação de rede, acesso a arquivos ou execução de comandos do sistema
- Calcular a 'pontuação Aura' informando o quão confiável é o código fonte / dados de entrada
- e muito, muito mais...
Não encontrou o que procura? A arquitetura do Aura é baseada em um sistema robusto de plugins, onde você pode personalizar quase tudo, desde um conjunto de analisadores de dados, protocolos de transporte até formatos de saída personalizados.
Instalação
::
# Via pip:
pip install aura-security[full]
# or build from source/git
poetry install --no-dev -E full
Or just use a prebuild docker image ``sourcecodeai/aura:dev``
Executando o Aura
::
docker run -ti --rm sourcecodeai/aura:dev scan pypi://requests -v
Aura usa URIs para identificar o protocolo e localização a serem escaneados. Se nenhum protocolo for usado, o argumento de escaneamento é tratado como um caminho para o arquivo ou diretório no sistema local.
.. image:: files/imgs/aura_scan.png
Diferença entre pacotes::
docker run -ti --rm sourcecodeai/aura:dev diff pypi://requests pypi://requests2
.. image:: docs/source/_static/imgs/aura_diff.png
Encontre os pacotes typosquatting mais populares (você precisa executar aura update para baixar o conjunto de dados primeiro)::
aura find-typosquatting --max-distance 2 --limit 10
.. image:: https://asciinema.org/a/367999.svg
:target: https://asciinema.org/a/367999
.. image:: files/imgs/download_dataset.png
:target: https://cdn.sourcecode.ai/pypi_datasets/index/datasets.html
:align: center
:width: 256
Por que Aura?
Embora existam outras ferramentas com funcionalidades que se sobrepõem ao Aura, como Bandit, dlint, semgrep, etc., o foco dessas alternativas é diferente, o que impacta a funcionalidade e como são utilizadas. Essas alternativas são principalmente destinadas a serem usadas de maneira semelhante a linters, integradas a IDEs, executadas frequentemente durante o desenvolvimento, o que torna importante minimizar falsos positivos e reportar com explicações claras e acionáveis em casos ideais.
O Aura, por outro lado, relata comportamento do código, anomalias e vulnerabilidades com o máximo de informações possível, ao custo de falsos positivos. Há muitas coisas reportadas pelo Aura que não são necessariamente acionáveis por um usuário, mas que dizem muito sobre o comportamento do código, como realizar comunicação de rede, acessar arquivos sensíveis ou usar mecanismos associados a ofuscação, indicando um possível código malicioso. Ao coletar esses dados e agregá-los, o Aura pode ser comparado em funcionalidade a outros sistemas de segurança, como antivírus, IDS ou firewalls, que estão essencialmente fazendo a mesma análise, mas em um tipo diferente de dados (comunicação de rede, processos em execução, etc).
Aqui está uma visão geral rápida das diferenças entre o Aura e outras ferramentas similares de linters e SAST:
- dados de entrada:
- Outras ferramentas SAST - geralmente restritas apenas ao código fonte Python (alvo) e à versão do Python sob a qual a ferramenta está instalada.
- Aura pode analisar tanto código binário (ou não Python) quanto código fonte Python. Capaz de analisar uma mistura de código Python compatível com diferentes versões do Python (py2k e py3k) usando a mesma instalação do Aura.
- relatórios:
- Outras ferramentas SAST - Visam integrar-se bem com outros sistemas, como IDEs, sistemas de CI, com resultados acionáveis, enquanto tentam minimizar falsos positivos para não sobrecarregar os usuários com muitos alertas não significativos.
- Aura - relata o máximo de informações possível que não são imediatamente acionáveis, como análise comportamental e de anomalias. O formato de saída é projetado para processamento e agregação fáceis por máquina, em vez de legível por humanos.
- configuração:
- Outras ferramentas SAST - As ferramentas são ajustadas ao projeto alvo personalizando as assinaturas para atingir tecnologias específicas usadas pelo projeto alvo. A configuração de sobreposição é frequentemente possível inserindo comentários no código fonte, como
# nosec, que suprime o alerta naquela posição.
- Aura - espera-se que haja pouco ou nenhum conhecimento prévio sobre as tecnologias usadas pelo código que está sendo escaneado, como auditar um novo pacote Python para aprovação como dependência em um projeto. Na maioria dos casos, nem é possível modificar o código fonte escaneado, como usar comentários para indicar ao linter ou ao Aura para pular a detecção naquele local, porque está escaneando uma cópia desse código que está hospedada em algum local remoto.
Autores & Contribuidores
Doar
LICENÇA
O framework Aura é licenciado sob a GPL-3.0.
Conjuntos de dados produzidos a partir de varreduras globais usando o Aura são liberados sob a licença CC BY-NC 4.0.
Use a seguinte citação ao usar o Aura ou dados produzidos pelo Aura em pesquisa:
::