# T1195.001 - Compromise Software Dependencies and Development Tools ## Técnica Pai Esta é uma sub-técnica de [[t1195-supply-chain-compromise|T1195 - T1195 - Supply Chain Compromise]]. ## Descrição Esta sub-técnica de [[t1195-supply-chain-compromise|T1195 - Supply Chain Compromise]] descreve o comprometimento específico de **dependências de software** e **ferramentas de desenvolvimento** antes que cheguem ao desenvolvedor ou à organização final. Aplicações modernas dependem extensivamente de bibliotecas externas - pacotes npm, pip, Maven, NuGet, RubyGems - e qualquer um desses componentes pode ser alvo de adversários. Projetos open-source amplamente utilizados como dependências são alvos prioritários: um único pacote comprometido pode afetar dezenas de milhares de aplicações downstream simultaneamente. Os adversários exploram múltiplos vetores nessa categoria: públicação de pacotes com nomes similares a bibliotecas legítimas (typosquatting), reregistro de pacotes abandonados, comprometimento direto das credenciais de mantenedores de pacotes populares, e infiltração em pipelines de CI/CD como GitHub Actions. O comprometimento de um GitHub Action utilizado por centenas de repositórios pode injetar código malicioso em todos os projetos que dependem daquela action - um multiplicador de impacto extremamente eficiente para adversários. Adicionalmente, o malware [[s1246-beavertail|BeaverTail]] é entregue específicamente via repositórios npm falsos associados a falsas oportunidades de emprego, enquanto [[s0658-xcsset|XCSSET]] compromete projetos Xcode para atingir desenvolvedores macOS. **Contexto Brasil/LATAM:** O Brasil possui uma comunidade de desenvolvedores em rápido crescimento, com alta adoção de ecossistemas npm e pip - o que amplia a superfície de ataque desta técnica. Campanhas de typosquatting em repositórios PyPI e npm têm visado específicamente termos em português e nomes de bibliotecas populares no mercado brasileiro (ex: pacotes relacionados a boleto, NF-e, Pix). Desenvolvedores de fintechs e e-commerce brasileiras são alvos de interesse, pois o comprometimento do pipeline de desenvolvimento pode fornecer acesso a sistemas que processam pagamentos. A adoção de práticas de segurança em pipelines CI/CD ainda é incipiente em grande parte das PMEs e startups de tecnologia da região, tornando GitHub Actions e Jenkins configurados de forma insegura vetores ativos. ## Attack Flow ```mermaid graph TB A([Repositório Público<br/>npm / PyPI / GitHub]) -->|typosquatting\nou credencial comprometida| B([Pacote / Action<br/>Malicioso]) B:::highlight -->|dependência instalada\npelo desenvolvedor| C([Ambiente de<br/>Desenvolvimento]) C -->|build / deploy| D([Aplicação em<br/>Produção]) D -->|execução de\npayload| E([Exfiltração / C2]) classDef highlight fill:#e74c3c,color:#fff ``` ## Como Funciona **Passo 1 - Comprometimento do pacote ou ferramenta** O adversário obtém acesso ao repositório ou conta do mantenedor de um pacote legítimo - via phishing, credential stuffing, ou exploração de repositório abandonado. Alternativamente, pública um pacote com nome quase idêntico ao original (ex: `requesTs` ao invés de `requests`, ou `crypto-js-brasil`). Em pipelines CI/CD, pode-se comprometer um GitHub Action referênciado por múltiplos projetos, usando técnicas como [[t1003-007-proc-filesystem|leitura do filesystem de processos]] para extrair tokens de ambiente (`GITHUB_TOKEN`, `AWS_SECRET_ACCESS_KEY`) no momento do build. **Passo 2 - Inserção e persistência do payload** O código malicioso é inserido de forma cirúrgica - geralmente em funções de inicialização (`__init__.py`, `index.js`) ou em scripts de pós-instalação (`postinstall` no npm, `setup.py` install hooks). O payload pode ser acionado apenas em ambientes específicos (verificando variáveis de ambiente, domínios de rede ou nomes de host) para evitar detecção em sandboxes e focar em alvos de interesse. Tanto o [[s1246-beavertail|BeaverTail]] quanto o [[s0658-xcsset|XCSSET]] utilizam esse modelo de ativação condicional. **Passo 3 - Execução silenciosa no ambiente da vítima** Quando o desenvolvedor ou pipeline executa `npm install`, `pip install` ou um workflow do GitHub Actions, o código malicioso é executado automaticamente - muitas vezes com as permissões do usuário que está realizando o build. Em ambientes CI/CD, isso pode significar acesso a segredos de produção, chaves de nuvem e tokens de deploy. O adversário estabelece canal de comando e controle ou exfiltra credenciais para uso em fases subsequentes da intrusão. ## Detecção **Event IDs relevantes (Windows/Linux)** | Event ID | Plataforma | O que detecta | |----------|-----------|---------------| | 1 (Sysmon) | Windows | Processo `node.exe` ou `python.exe` spawning shells durante `npm install` / `pip install` | | 3 (Sysmon) | Windows | Conexão de rede de origem `pip.exe`, `npm.exe` para IPs não relacionados a registries conhecidos | | 4688 | Windows Security | `cmd.exe` ou `powershell.exe` com processo pai `node` ou `python` durante fase de build | | execve (auditd) | Linux | Execução de binários não esperados durante scripts de pós-instalação de pacotes | | openat (auditd) | Linux | Leitura de arquivos `/proc/*/environ` por processos de instalação (coleta de env vars) | **Sigma Rule - Execução Suspeita Durante Instalação de Dependências** ```yaml title: Suspicious Network Connection During Package Installation id: b8d4f2e3-5c9a-4f1b-ad23-4e6g7h8i9j0k status: experimental description: > Detecta conexão de rede para destino externo iniciada durante instalação de dependências via npm ou pip - possível exfiltração de credenciais por pacote comprometido (T1195.001). references: - https://attack.mitre.org/techniques/T1195/001/ author: RunkIntel daté: 2026-03-24 logsource: category: network_connection product: windows detection: selection: Initiated: 'true' Image|endswith: - '\node.exe' - '\python.exe' - '\pip.exe' - '\npm.cmd' filter_legitimate: DestinationHostname|endswith: - 'registry.npmjs.org' - 'pypi.org' - 'files.pythonhosted.org' - 'registry.yarnpkg.com' condition: selection and not filter_legitimate falsepositives: - Pacotes legítimos que fazem chamadas a APIs externas durante instalação - Mirrors privados de registry npm/PyPI level: high tags: - attack.initial_access - attack.t1195.001 ``` ## Mitigação | ID | Mitigação | Aplicação Prática para Organizações Brasileiras | |----|-----------|------------------------------------------------| | [[m1013-application-developer-guidance\|M1013]] | Orientação a Desenvolvedores | Capacitar equipes de desenvolvimento em práticas seguras: uso de lockfiles (`package-lock.json`, `poetry.lock`), verificação de hashes em `pip install --require-hashes`, e auditoria periódica de dependências com `npm audit` e `pip-audit`. | | [[m1016-vulnerability-scanning\|M1016]] | Varredura de Vulnerabilidades | Integrar ferramentas de SCA (Software Composition Analysis) ao pipeline CI/CD: Dependabot para GitHub, Snyk ou OWASP Dependency-Check para pipelines Jenkins/GitLab. Bloquear builds com dependências com CVEs críticos. | | [[m1033-limit-software-installation\|M1033]] | Limitar Instalação de Software | Usar registries privados (Nexus, Artifactory, AWS CodeArtifact) como proxy para npm e PyPI, realizando pré-inspeção dos pacotes antes de disponibilizá-los para a equipe. Evitar acesso direto a registries públicos em ambientes de produção. | | [[m1051-update-software\|M1051]] | Atualizar Software | Fixar versões exatas de dependências no lockfile e evitar ranges amplos como `^` e `~` no npm. Realizar atualizações de dependências de forma deliberada e revisada, não automática. | ## Threat Actors Não há atores de ameaça com uso documentado e confirmado pelo MITRE específicamente para esta sub-técnica no momento. No entanto, campanhas investigadas por pesquisadores de segurança atribuíram ataques de typosquatting em PyPI e npm a grupos vinculados ao estado norte-coreano - o mesmo padrão tático observado nas campanhas do [[g0032-lazarus-group|Lazarus Group]] que distribuem o [[s1246-beavertail|BeaverTail]] via entrevistas de emprego falsas para desenvolvedores. A técnica de comprometimento de GitHub Actions foi explorada na campanha `tj-actions/changed-files` em março de 2025, que afetou centenas de repositórios públicos e expôs segredos de CI/CD - um exemplo direto de T1195.001 em escala massiva. ## Software Associado O [[s1246-beavertail|BeaverTail]] é um stealer/downloader JavaScript atribuído ao Lazarus Group, distribuído via pacotes npm maliciosos públicados em plataformas de oferta de emprego para desenvolvedores. O malware coleta credenciais de carteiras cripto e tokens de autenticação, e serve como downloader para o implante InvisibleFerret. É um dos exemplos mais documentados de uso de T1195.001 em operações ativas. O [[s0658-xcsset|XCSSET]] é um malware macOS que compromete projetos Xcode, injetando código malicioso nos projetos de desenvolvedores Apple. Quando a vítima compila e distribui seu aplicativo, usuários finais recebem a versão infectada - uma cadeia de comprometimento que transforma o desenvolvedor em vetor involuntário de distribuição. Afeta diretamente desenvolvedores do ecossistema Apple na LATAM. --- *Fonte: [MITRE ATT&CK - T1195.001](https://attack.mitre.org/techniques/T1195/001)*