Como mitigar ataques à cadeia de suprimentos com pré-voo

Peshkova / Shutterstock. com
Os riscos de ataques à cadeia de suprimentos ganharam visibilidade recentemente na esteira dos hacks SolarWinds e Codecov. Os invasores comprometem os provedores de código upstream para inserir fontes maliciosas em produtos de software.
Muitos aplicativos baixam dependências externas durante suas rotinas de construção. Usar esses downloads como estão pode ser perigoso. Como você sabe se o arquivo no servidor não foi substituído por uma versão maliciosa?
curl https://example. com/install-script. sh | sh
Este comando ilustra o mais simples dos ataques à cadeia de suprimentos. Canalizar um script de instalação em seu shell é conveniente, mas arriscado. Se example. com foi comprometido, você acabou de conceder a um invasor acesso irrestrito ao seu sistema.
Soma de verificação do arquivo
Você pode atenuar os perigos dessa abordagem verificando se o arquivo baixado corresponde a uma soma de verificação conhecida. Muitos projetos de código aberto respeitáveis publicarão uma soma de verificação com a qual você poderá comparar. Execute o arquivo apenas se a soma de verificação calculada corresponder ao seu valor conhecido.
Implementar essa verificação em seus scripts de construção pode rapidamente se tornar repetitivo. Preflight é uma ferramenta que ajuda a realizar comparações de checksum para evitar ataques comuns à cadeia de suprimentos.
Publicidade
A pré-impressão aceita um caminho binário e uma soma de verificação para comparação. Se a soma de verificação do arquivo corresponder, ela será executada normalmente. Caso contrário, o comando é abortado, protegendo seu script de compilação ou pipeline de CI contra a inclusão de código malicioso indesejado.
Usando Preflight
Você pode baixar o Preflight de sua página de lançamentos do GitHub. A ferramenta também é distribuída como comprovação no gerenciador de pacotes Homebrew.
Em sua forma mais simples, o Preflight pode ser usado em qualquer lugar que você normalmente usaria | sh. Canalize outro comando para o Preflight, fornecendo uma soma de verificação para corresponder antes de qualquer coisa ser executada.
curl https://example. com/install-script. sh | execução de comprovação sha256 = abc ... 123
Agora, o script de instalação só será executado se corresponder à soma de verificação conhecida. Isso dá a você a certeza de que o conteúdo do arquivo não foi adulterado. O Preflight é compatível com os tipos de hash sha256, sha1 e md5.

Você deve codificar somas de verificação conhecidas em seus scripts de construção. Não baixe um arquivo de soma de verificação fornecido pelo mesmo servidor do arquivo de destino. Suponha que um invasor com a capacidade de modificar o script também carregou um arquivo de soma de verificação falso.
Verificações programáticas
Às vezes, você pode querer realizar uma ação dependendo se um arquivo corresponde com sucesso à sua soma de verificação. Nesse caso, você pode usar a verificação preflight para realizar a comparação sem realmente executar o arquivo.
curl https://example. com/install-script. sh | verificação preflight sha256 = abc ... 123
Publicidade
O comando sairá com o código de status 0 se a soma de verificação do arquivo corresponder. Um código de status 1 será emitido quando houver uma discrepância. A comprovação também emitirá uma mensagem de erro para o fluxo de saída padrão.
Criação de hashes com comprovação
Nem todos os projetos de software publicam hashes para seus lançamentos. O Preflight tem suporte integrado para gerar um novo hash se você precisar de um para uma dependência.
Baixe o arquivo do site do fornecedor. Em seguida, passe-o para a criação do preflight para obter o hash do conteúdo do arquivo.
wget https://example. com/install-script. sh preflight create install-script. sh

Um hash SHA256 é gerado por padrão. Você pode alternar para SHA1 ou MD5 adicionando o sinalizador --digest ao comando.
Adição de verificações de malware
Além das comparações básicas de soma de verificação, o Preflight oferece suporte à verificação opcional de malware. Este recurso verifica seu arquivo em relação a assinaturas de malware conhecidas.
As listas de malware são fornecidas por serviços de terceiros. A comprovação funciona com qualquer arquivo de texto que contenha uma lista de somas de verificação de malware conhecidas. Malshare é um fornecedor dessas listas.
Publicidade
Defina a variável de ambiente PF_FILE_LOOKUP para apontar para a localização do seu arquivo. A comprovação detectará essa variável e permitirá pesquisas de malware. Quando você executa a verificação do preflight ou a execução do preflight, a soma de verificação do arquivo de destino é comparada com as entradas na lista de malware. A verificação falhará se houver uma correspondência.
E quanto a outros tipos de dependência?
A comprovação se concentra na verificação de arquivos estáticos. É mais adequado para downloads binários predefinidos que você adquire diretamente do fornecedor.
É menos realista usar o Preflight com dependências adquiridas por meio de gerenciadores de pacotes. Riscos decorrentes de software instalado via npm, Composer, NuGet ou Maven precisarão ser tratados de uma maneira diferente. Você pode usar os recursos do gerenciador de pacotes, como escopo do fornecedor, para garantir que as dependências sejam instaladas a partir de repositórios confiáveis.
A comprovação deve ser um componente em sua defesa contra injeções na cadeia de suprimentos. Analise seus scripts de compilação para identificar vetores de intrusão fornecidos por outras formas de software de terceiros.
Resumo
Os ataques à cadeia de suprimentos são um problema crescente que afeta a segurança das implantações de software. Muitos desenvolvedores incorporam downloads diretos de software em seus scripts de construção. Isso pode dar aos invasores uma maneira de incluir código em um projeto de destino, comprometendo um fornecedor upstream.
A comprovação simplifica as verificações de segurança de scripts e binários de terceiros. Porém, há uma certa ironia: ao usar o Preflight, você depende de um pacote de terceiros que precisará baixar. Você pode atenuar isso criando você mesmo a comprovação da fonte e hospedando o binário em um servidor interno em que você confia.
Nenhum comentário