# M1045 — Code Signing ## Visão Geral --- *Fonte: [MITRE ATT&CK — M1045](https://attack.mitre.org/mitigations/M1045)* ## Descrição Code Signing é um processo de segurança que garante a autenticidade e a integridade do software por meio da assinatura digital de executáveis, scripts e outros artefatos de código. ```mermaid graph TB A["🏗️ Build Artifact<br/>binário / script<br/>gerado no CI/CD"] --> B["🔑 Assinar com PKI<br/>certificado de CA<br/>confiável — Signtool"] B --> C["📦 Distribuir Assinado<br/>hash registrado<br/>imutável no pipeline"] C --> D["🖥️ Endpoint Verifica<br/>AppLocker / WDAC<br/>válida assinatura + hash"] D --> E{"Assinatura<br/>válida?"} E -->|Sim| F["✅ Executar<br/>código autorizado"] E -->|Não| G["🚫 Bloquear<br/>alertar SOC"] ``` Ele impede que código não confiável ou malicioso seja executado ao verificar as assinaturas digitais contra fontes confiáveis. Code signing protege contra adulteração, impersonificação e distribuição de software não autorizado ou malicioso, formando uma defesa crítica contra ataques de supply chain e exploração de software. Esta mitigação pode ser implementada por meio das seguintes medidas: Aplicar Execução de Código Assinado: - Implementação: Configurar sistemas operacionais (ex.: Windows com AppLocker ou Linux com Secure Boot) para permitir apenas a execução de código assinado. - Caso de uso: Prevenir a execução de scripts PowerShell maliciosos ao exigir que todos os scripts sejam assinados com um certificado confiável. Aplicação de Drivers Assinados por Vendors: - Implementação: Habilitar code signing em modo kernel para garantir que apenas drivers assinados por vendors confiáveis possam ser carregados. - Caso de uso: Um driver malicioso que tenta modificar a memória do sistema falha ao carregar porque não possui uma assinatura válida. Gerenciamento de Revogação de Certificados: - Implementação: Utilizar Online Certificate Status Protocol (OCSP) ou Certificate Revocation Lists (CRLs) para bloquear certificados associados a código comprometido ou obsoleto. - Caso de uso: Um certificado comprometido usado para assinar uma atualização maliciosa é revogado, impedindo a execução adicional do software. Verificação de Software de Terceiros: - Implementação: Exigir que software de fornecedores externos seja assinado com certificados válidos antes do deployment. - Caso de uso: Uma organização implanta apenas software de terceiros assinado e verificado para prevenir ataques de supply chain. Integridade de Scripts em Pipelines CI/CD: - Implementação: Integrar code signing nos pipelines de CI/CD para assinar e verificar artefatos de código antes do release em produção. - Caso de uso: Uma empresa de software garante que todos os builds de produção sejam assinados, impedindo que builds adulterados cheguem aos clientes. **Componentes-Chave do Code Signing** - Verificação de Assinatura Digital: Verifica a autenticidade do código garantindo que foi assinado por uma entidade confiável. - Gerenciamento de Certificados: Utiliza Public Key Infrastructure (PKI) para gerenciar certificados de assinatura e listas de revogação. - Política de Aplicação para Código Não Assinado: Impede a execução de binários e scripts não assinados ou não confiáveis. - Verificação de Integridade por Hash: Confirma que o código não foi alterado desde a assinatura comparando hashes criptográficos. ## Técnicas Mitigadas | ID | Técnica | |---|---------| | T1505 | [[t1505-server-software-component\|T1505 — Server Software Component]] | | T1204.003 | [[t1204-003-malicious-image\|T1204.003 — Malicious Image]] | | T1525 | [[t1525-implant-internal-image\|T1525 — Implant Internal Image]] | | T1059.002 | [[t1059-002-applescript\|T1059.002 — AppleScript]] | | T1059 | [[t1059-command-and-scripting-interpreter\|T1059 — Command and Scripting Interpreter]] | | T1036.005 | [[t1036-005-match-legitimate-resource-name-or-location\|T1036.005 — Match Legitimaté Resource Name or Location]] | | T1036.001 | [[t1036-001-invalid-code-signature\|T1036.001 — Invalid Code Signature]] | | T1546.013 | [[t1546-013-powershell-profile\|T1546.013 — PowerShell Profile]] | | T1036 | [[t1036-masquerading\|T1036 — Masquerading]] | | T1554 | [[t1554-compromise-host-software-binary\|T1554 — Compromise Host Software Binary]] | | T1601.001 | [[t1601-001-patch-system-image\|T1601.001 — Patch System Image]] | | T1601.002 | [[t1601-002-downgrade-system-image\|T1601.002 — Downgrade System Image]] | | T1543.003 | [[t1543-003-windows-service\|T1543.003 — Windows Service]] | | T1059.001 | [[t1059-001-powershell\|T1059.001 — PowerShell]] | | T1505.001 | [[t1505-001-sql-stored-procedures\|T1505.001 — SQL Stored Procedures]] | | T1543 | [[t1543-create-or-modify-system-process\|T1543 — Create or Modify System Process]] | | T1601 | [[t1601-modify-system-image\|T1601 — Modify System Image]] | | T1505.004 | [[t1505-004-iis-components\|T1505.004 — IIS Components]] | | T1546.006 | [[t1546-006-lcloaddylib-addition\|T1546.006 — LC_LOAD_DYLIB Addition]] | | T1505.006 | [[t1505-006-vsphere-installation-bundles\|T1505.006 — vSphere Installation Bundles]] | | T1505.002 | [[t1505-002-transport-agent\|T1505.002 — Transport Agent]] | | T1127.002 | [[t1127-002-clickonce\|T1127.002 — ClickOnce]] | ## Contexto LATAM > [!globe] Relevância Regional > Code signing é uma defesa crítica contra supply chain attacks que têm afetado organizações brasileiras, especialmente via software de terceiros sem assinatura digital adequada. Malware brasileiro como loaders de [[s0531-grandoreiro]] frequentemente utilizam binários não assinados ou com assinaturas expiradas — e a baixa adoção de WDAC no Brasil deixa espaço para essa técnica prosperar em ambientes corporativos nacionais. > - Adoção em SOCs brasileiros: médio em setor financeiro e grandes corporações — enforcement de assinatura via AppLocker/WDAC; baixo em governo e PMEs onde software sem assinatura é commonplace > - Regulamentações relevantes: BACEN 4893/2021 (controle de integridade de software em sistemas financeiros), ICP-Brasil (infraestrutura de chaves públicas brasileira — base legal para PKI nacional), Decreto 10.748/2021 (identidade digital gov.br) > - Desafios regionais: muitos softwares fiscais e ERP nacionais (TOTVS, Sankhya, Protheus) distribuídos sem code signing adequado, custo de certificados de assinatura de código via ICP-Brasil, ausência de cultura de PKI corporativo em empresas de médio porte