A Google apresentou o projeto OSS Rebuild, destinado a identificar alterações ocultas em pacotes prontos, publicados em repositórios. O funcionamento do OSS Rebuild é baseado no conceito de builds reproduzíveis e envolve a verificação da conformidade do pacote hospedado no repositório com o pacote obtido por meio da recompilação a partir do código-fonte de referência, correspondente à versão declarada do pacote. O código da ferramenta é escrito na linguagem Go e é distribuído sob a licença Apache 2.0.
Atualmente, o OSS Rebuild implementa suporte à verificação de pacotes de repositórios NPM (JavaScript/TypeScript), PyPI (Python) e Crates.io (Rust). No futuro, o número de repositórios suportados deve ser expandido. Na prática, a ferramenta permite identificar variantes de ataques da classe "supply chain", nas quais, após a violação de contas de mantenedores ou uma insurgência interna no projeto, uma atualização maliciosa é publicada no repositório. Neste caso, o código no repositório de origem do projeto principal permanece correto, enquanto as alterações maliciosas são feitas apenas nos pacotes prontos.
O sistema, sempre que possível, gera automaticamente um roteiro para a compilação reproduzível do pacote escolhido, utilizando heurísticas e ajustando parâmetros que permitem alcançar a identidade dos artefatos fornecidos no pacote. Se não for possível reproduzir automaticamente o pacote hospedado no repositório, é possível adicionar manualmente a especificação de build. Após conseguir reproduzir o pacote, a ferramenta OSS Rebuild salva a descrição do processo de construção para posterior verificação de novas versões do pacote. Informações também são publicadas para verificação utilizando o framework SLSA.
Após a verificação de uma versão específica do pacote, são gerados dados de certificação que podem ser utilizados por outros para avaliar pacotes já verificados. A verificação pode ser realizada através da execução de uma ferramenta de linha de comando ou da comparação de um hash salvo em um armazenamento em nuvem separado. A infraestrutura para a verificação de pacotes pode ser implantada em um próprio servidor. Também é possível acessar informações sobre verificações realizadas pelo Google para milhares de pacotes.
Como exemplos de diferentes métodos de ataque, contra os quais o OSS Rebuild poderia proteger, são mencionados a adição de um backdoor no XZ, a inserção de código malicioso no cliente JavaScript oficial para a criptomoeda Solana e a alteração de modificações através do manipulador de ações changed-files:
- No caso do projeto XZ, o código no repositório não continha alterações suspeitas, enquanto os componentes maliciosos que formavam o backdoor eram fornecidos dentro dos arquivos usados no conjunto de testes para verificar a funcionalidade do extrator XZ. O backdoor era ativado no nível do sistema de construção, e o próprio código-fonte do XZ correspondia ao código do repositório. Os macros m4 ativadores do backdoor para a ferramenta Automake estavam incluídos apenas no arquivo compactado final com o código e não estavam no repositório. Para identificar tais ataques, o OSS Rebuild utiliza análise dinâmica dos artefatos entregues no pacote, caminhos de execução e operações suspeitas.
- A inserção de alterações maliciosas na biblioteca @solana/web3.js ocorreu devido à comprometimento da conta do mantenedor, utilizando métodos de engenharia social e phishing. Uma nova versão foi publicada no repositório NPM, incluindo alterações maliciosas. No repositório Git do projeto, essa versão não foi criada, e as alterações maliciosas estavam presentes apenas no pacote resultante. A proteção nesse caso se resume à identificação de código no pacote que está ausente do repositório principal.
- A comprometimento do repositório do manipulador changed-files permitiu o ataque a projetos que utilizam changed-files para rastrear alterações em arquivos e diretórios na infraestrutura de integração contínua baseada em GitHub Actions. Para proteger contra a inserção de alterações após a comprometimento do ambiente de construção, o OSS Rebuild utiliza o rastreamento de alterações e atividades suspeitas em ambientes de construção padronizados e reduzidos.
Fonte: opennet.ru
