O que são as melhores práticas de assinatura de código?
A assinatura de código verifica a identidade do fornecedor ou desenvolvedor de software e confirma a integridade do código desde o momento em que foi assinado até o download. Isso prova que é possível confiar no código. Infelizmente, os criminosos estão sempre tentando superar as práticas de assinatura de código para inserir malware em código confiável.
Estas são algumas das melhores práticas para atenuar os riscos de ataques bem-sucedidos:
- Proteja o armazenamento de chaves: Se a chave privada de assinatura for comprometida ou roubada de uma organização, ela poderá ser usada para assinar software com malware incorporado, e assim o software lançado se registra como um software legítimo originário dessa organização. As chaves privadas precisam ser protegidas em um módulo de segurança de hardware (HSM - Hardware Security Module) ou criptografadas em repouso. Segundo os requisitos do CA/Browser (CA/B) Forum, as chaves para uso de confiança pública precisam ser armazenadas em um HSM.
- Aplique controles de acesso de chaves e assinatura: Configure políticas e aplique controles de acesso de chave para garantir que somente os desenvolvedores e usuários autorizados possam assinar com chaves específicas, quando necessário. Gere chaves na nuvem para que não sejam compartilhadas, perdidas ou roubadas. Garanta a separação de tarefas, ou seja, separe as responsabilidades dos indivíduos que geram chaves daqueles que assinam. Implemente a autenticação multifator (MFA) para garantir que a pessoa que acessa a assinatura é realmente quem diz ser. Revogue o acesso dos funcionários que deixaram a organização ou que não precisam mais ter acesso à assinatura ou geração de chaves.
- Monitore e audite fluxos de trabalho de assinatura de chaves: Rastreie quem assinou o quê e quando fez isso, para responder rapidamente a assinaturas não autorizadas e realizar a correção apropriada. Audite regularmente todas as atividades associadas com pares de chaves, como geração de chaves, operações com certificados e atribuição de acesso a chaves e assinatura.
- Mantenha-se atualizado e aplique políticas de padrões de criptografia em toda a empresa: Os requisitos do setor podem mudar para ajudar as organizações a ficar à frente do panorama de ameaças. Novos requisitos do CA/Browser Forum prescrevem a RSA de 3072 bits como o requisito de chaves mínimo para certificados com data/hora e assinatura de código com confiança pública, em vigor desde 1º de junho de 2021. Desenvolvedores e usuários em uma organização podem ou não estar cientes das mudanças conforme geram chaves ou assinam código. As organizações precisam aplicar os requisitos do setor para impedir que os usuários gerem chaves ou solicitem certificados com curvas, tamanhos de chave ou algoritmos fracos ou sem conformidade.
- Habilite a assinatura de código automatizada em processos do SDLC: Integre e automatize assinaturas em processos do SDLC, como pipelines CI/CD, para poder reduzir os riscos de código não assinado ou assinaturas sem conformidade. Você pode configurar controles de segurança junto com a automação para criar software seguro e em conformidade, no ritmo rápido e contínuo do desenvolvimento de software.
- Compare assinaturas de diferentes servidores de compilação: Ataques recentes contra a cadeia de suprimento de software vêm causando grandes disrupções financeiras e operacionais em organizações de alto impacto de todo o mundo. Criminosos se infiltram nas operações de desenvolvimento de uma organização e incorporam malware no código durante o SDLC, e esse código violado é posteriormente lançado e implantado nos sistemas dos clientes. Assine e compare o hash do software de diferentes servidores de build antes do lançamento para descobrir se há diferenças entre os builds do servidor. Dois ou mais builds idênticos podem fornecer garantias de que os builds são seguros e que nenhum código desconhecido foi incluído no build.
- Revogue certificados comprometidos: Se descobrir chaves comprometidas ou malware assinado, relate o evento à sua autoridade de certificação (CA). O certificado de assinatura de código precisará ser revogado, o que invalidará o software e interromperá a propagação do malware.
- Aplique um carimbo de data/hora ao seu código assinado: Evite os riscos da expiração inesperada do software quando o certificado de assinatura de código expira. Os certificados de assinatura de código são válidos por um período de um a três anos. Quando um certificado de assinatura de código expira, a validade do software que foi assinado também irá expirar, a menos que o software tenha recebido um carimbo de data/hora quando foi assinado. O sistema registrará o carimbo de data/hora e o software continuará a ser válido, desde que permaneça em produção. Outro motivo para aplicar um carimbo de data/hora a seu código é minimizar o impacto da revogação de um certificado. Se for encontrado malware e o certificado associado precisar ser revogado, o carimbo de data/hora minimizará o impacto, já que a revogação só afetará o software lançado após a data do comprometimento.