
Project Aura: Auditoria de segurança e introspecção de código

A tendência atual no desenvolvimento é usar muitos pacotes na fase de desenvolvimento, mesmo que eles forneçam apenas funcionalidades triviais e consistam em 11 linhas de código. Quando combinamos isso com políticas muito liberais de publicação de novos pacotes, vemos um aumento de ataques maliciosos direcionados aos desenvolvedores. Houve várias abordagens diferentes por parte dos agentes de ameaças:
Esses são apenas alguns exemplos das técnicas pelas quais um desenvolvedor pode se comprometer. Isso é sustentado pelo fato de que não há um processo de monitoramento sobre o que é enviado para repositórios como PyPI ou NPM, e um golpe de pura sorte descobriu os incidentes anteriores. Nosso objetivo é melhorar isso.
Criamos um framework projetado para escanear código-fonte em larga escala (como todo o repositório PyPI), procurando anomalias e intenções potencialmente maliciosas, bem como vulnerabilidades. Este framework também foi projetado para escanear código-fonte sob demanda, como quando um pacote é instalado por um desenvolvedor ou qualquer conjunto de arquivos/diretórios. A implementação atualmente tem como alvo a linguagem Python e o PyPI, no entanto, foi projetada para fornecer capacidade de incluir outras linguagens (como Javascript e NPM).
O conjunto de casos de uso inclui, mas não se limita a:
Um mecanismo de análise híbrida altamente otimizado realiza isso. A análise é realizada em um ambiente completamente seguro usando análise estática de código sem qualquer execução de código. O mecanismo principal do Aura analisa a árvore AST analisada a partir do código-fonte, realizando análise comportamental e fluxo de execução do código. O mecanismo também suporta reescrita da árvore AST usando um conjunto de regras como propagação de constantes, dobramento ou avaliação estática; estes são um conjunto de técnicas que compiladores usam para otimizar o código. Esta é a razão pela qual esta abordagem de análise é "híbrida", pois aprimora a análise estática com uma avaliação parcial completamente segura, o que nos permite derrotar mecanismos de ofuscação mais simples.
Abaixo, você pode ver uma demonstração de diferentes técnicas de "ofuscação" de código-fonte reconhecidas pelo mecanismo de transformação AST do Aura:

Para aprender e começar a usar o framework, leia a documentação de instalação, configuração e uso.
A parte central do Aura é analisar o código-fonte em busca de anomalias ou vulnerabilidades potenciais. O Aura possui vários analisadores integrados que procuram anomalias como uso de eval no script de configuração; outros analisadores examinam a estrutura do sistema de arquivos (código não fonte) procurando, por exemplo, vazamento de credenciais, tokens de API codificados, etc. Esses analisadores geram o que chamamos de hits que definem as anomalias encontradas e também podem incluir uma pontuação, que é usada para calcular a aura de segurança dos dados escaneados. Recomenda-se usar um julgamento razoável das anomalias apresentadas com base na funcionalidade dos dados de entrada. Por exemplo, é completamente normal para uma biblioteca requests incluir chamadas relacionadas à rede, enquanto ao mesmo tempo, não se espera que uma biblioteca de processamento de imagens envie dados pela rede. Também há suporte para saída de dados em formato JSON adequado para varreduras massivas de repositórios ou integração em outros produtos. Para descrição e uso de outros componentes, consulte a documentação.


##Documentação
Este projeto é licenciado sob a Licença GPLv3 - veja o arquivo LICENSE.txt para detalhes. Partes deste framework contêm integrações (opcionais) com outros produtos, como a plataforma r2c, libraries.io, etc.; que estão sujeitos à sua licença e termos de uso.