# 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)*