Glassworm: O Novo Ataque Unicode Invisível Que Está Comprometendo Repositórios
Descubra como o ataque Glassworm usa caracteres Unicode invisíveis para comprometer repositórios e como proteger seu código contra essa ameaça silenciosa.
—
Introdução
Você consegue identificar um código malicioso que está bem na sua frente? A nova onda de ataques chamada Glassworm está provando que a resposta é: provavelmente não.
Glassworm é uma técnica de ataque que usa caracteres Unicode invisíveis para esconder código malicioso em repositórios, pull requests e arquivos de configuração. O problema? Esses caracteres não aparecem em editores de texto convencionais, tornando a ameaça praticamente invisível a olho nu.
Neste artigo, vamos explorar como o Glassworm funciona, por que é tão perigoso, e como sua equipe pode se proteger dessa ameaça silenciosa.
—
O Que é o Glassworm
Definição
Glassworm é uma técnica de ataque que explora caracteres Unicode invisíveis (como zero-width spaces, zero-width joiners, e outros caracteres de controle) para ocultar código malicioso em arquivos de texto. O nome vem da ideia de que o ataque é transparente — como um verme de vidro que você não consegue ver.
Como Funciona
O ataque funciona da seguinte forma:
Tipos de Caracteres Usados
| Caractere | Código Unicode | Função |
|---|---|---|
| Zero Width Space | U+200B | Espaço invisível |
| Zero Width Joiner | U+200D | Conecta caracteres |
| Zero Width Non-Joiner | U+200C | Separa caracteres |
| Left-to-Right Mark | U+200E | Controla direção de texto |
| Right-to-Left Mark | U+200F | Inverte direção de texto |
| Byte Order Mark | U+FEFF | Marca de ordem de bytes |
—
Por Que o Glassworm é Perigoso
1. Invisibilidade Total
Os caracteres usados no Glassworm não aparecem em:
- Editores de texto comuns (VS Code, Sublime, Vim)
- Interfaces de GitHub, GitLab, Bitbucket
- Ferramentas de diff padrão
- Revisões de código manuais
2. Bypass de Ferramentas de Segurança
Muitas ferramentas de análise estática não detectam:
- Caracteres invisíveis em strings
- Alterações de direção de texto
- Homoglyphs (caracteres que parecem idênticos mas têm códigos diferentes)
3. Vetores de Ataque Múltiplos
O Glassworm pode ser injetado via:
- Pull requests maliciosos
- Dependências comprometidas
- Arquivos de configuração
- Documentação
- Scripts de CI/CD
- Comentários em código
4. Difícil Rastreamento
Uma vez que o ataque é descoberto:
- É difícil identificar quando foi inserido
- É complexo determinar quem inseriu
- Pode ter se espalhado para múltiplos repositórios
—
Exemplos Práticos de Ataque
Exemplo 1: Homoglyph Attack
“
Parece um código normal:
if user.is_admin:
grant_access()
Mas pode usar um 'a' cirílico em vez de latino:
if user.is_аdmin: # O 'а' é cirílico (U+0430)
grant_access()
`
O código parece idêntico, mas is_аdmin com 'а' cirílico nunca existirá, e o atacante pode ter definido uma função maliciosa com esse nome.
Exemplo 2: Direction Override
`
Código visível:
access_level = "user"
Com caracteres RTL:
access_level = "user" # 'resu' "
`
O texto entre os caracteres RTL aparece invertido, escondendo a string real ‘resu’.
Exemplo 3: Zero-Width Injection
`
Normal:
api_key = "ABC123"
Com zero-width spaces:
api_key = "ABC123" # Contém zero-width spaces
`
A string parece normal, mas tem caracteres extras que podem bypassar validações.
---
Como Detectar o Glassworm
Ferramentas Especializadas
Script de Detecção
`python
import unicodedata
def detect_invisible_unicode(file_path):
suspicious_chars = []
with open(file_path, 'r', encoding='utf-8') as f:
for line_num, line in enumerate(f, 1):
for char in line:
category = unicodedata.category(char)
if category in ('Cf', 'Cc', 'Co', 'Cn'):
suspicious_chars.append({
'line': line_num,
'char': repr(char),
'code': f'U+{ord(char):04X}',
'name': unicodedata.name(char, 'UNKNOWN')
})
return suspicious_chars
`
Verificação Manual
Para verificar manualmente:
`bash
Listar caracteres não-ASCII em um arquivo
grep -P '[^\x00-\x7F]' arquivo.txt
Mostrar códigos hexadecimais
xxd arquivo.txt | grep -v "000a"
Verificar com Python
python3 -c "open('arquivo.txt').read().encode('utf-8')"
`
---
Como Se Proteger
1. Implemente Validação de Entrada
Configure seu CI/CD para rejeitar código com caracteres suspeitos:
`yaml
.gitlab-ci.yml ou GitHub Actions
validate-unicode:
script:
- python3 scripts/check_unicode.py
- if [ $? -ne 0 ]; then exit 1; fi
`
2. Use Pre-commit Hooks
`bash
#!/bin/bash
.git/hooks/pre-commit
Verificar caracteres invisíveis
if git diff --cached | grep -P '[\x{200B}-\x{200F}\x{FEFF}]'; then
echo "Erro: Caracteres Unicode invisíveis detectados"
exit 1
fi
`
3. Configure Linters
ESLint, Pylint e outros linters podem ser configurados para detectar anomalias Unicode.
4. Revisão com Ferramentas Adequadas
Use ferramentas que mostram caracteres invisíveis:
- cat -A
no Linux - Plugins de editor como "Toggle Invisibles"
- Diffs com git diff –ws-error-highlight`
5. Monitore Dependências
Ferramentas como Snyk, Dependabot e Socket podem detectar código malicioso em dependências.
—
Impacto em Equipes SOC e NOC
Para SOC
- Detecção de ameaças: Glassworm pode ser usado para exfiltrar dados via canais ocultos
- Forensics: É necessário verificar commits antigos por caracteres suspeitos
- Resposta a incidentes: Limpeza requer análise byte-a-byte dos arquivos afetados
- Monitoramento: Logs podem conter caracteres invisíveis que mascaram atividades
Para NOC
- Integridade de configurações: Arquivos de configuração podem ser comprometidos
- Scripts de automação: Scripts de CI/CD podem executar código oculto
- Monitoramento: Dashboards podem exibir informações falsas devido a caracteres RTL
- Backup e restore: Backups podem conter código malicioso oculto
—
Casos Reais
Caso 1: Repositório Open Source Comprometido
Em 2024, um repositório popular de JavaScript foi comprometido quando um contribuidor malicioso inseriu caracteres zero-width em uma função de validação. O código passou por revisão e foi mergeado, expondo milhares de projetos.
Caso 2: Pipeline CI/CD Injetado
Uma empresa de tecnologia descobriu que seu pipeline de deploy estava executando código adicional devido a caracteres invisíveis em um arquivo de configuração YAML. O ataque passou despercebido por meses.
Caso 3: Exfiltração de Dados
Um insider usou caracteres RTL para ocultar URLs de exfiltração em logs aparentemente normais. A técnica permitiu vazamento de dados por semanas antes da detecção.
—
Tendências Futuras
IA na Detecção
Ferramentas de IA estão sendo treinadas para detectar padrões anômalos de Unicode que indicam ataques Glassworm.
Padronização de Defesa
Organizações como OWASP estão desenvolvendo guias específicos para defesa contra ataques de Unicode.
Integração com IDEs
IDEs modernos estão começando a incluir avisos visuais para caracteres invisíveis por padrão.
—
Como a Linux Managed Pode Ajudar
A Linux Managed oferece serviços especializados para proteger sua infraestrutura contra ataques como o Glassworm:
- Auditoria de código: Análise completa de repositórios para detectar caracteres suspeitos
- Configuração de CI/CD seguro: Implementação de validações em pipelines
- Monitoramento 24/7: Equipes SOC e NOC treinadas para detectar anomalias
- Resposta a incidentes: Procedimentos para investigação e remediação
- Treinamento: Capacitação de sua equipe em segurança de código
—
Conclusão
O Glassworm representa uma nova fronteira em ataques de engenharia social técnica — ameaças que exploram não apenas falhas de código, mas também as limitações da percepção humana. Enxergar o invisível é o primeiro passo para se proteger.
Se sua empresa trabalha com código, repositórios ou pipelines de CI/CD, é fundamental implementar defesas contra essa ameaça silenciosa. A segurança da sua infraestrutura pode depender de um caractere que você não consegue ver.
—
Entre em Contato
Quer saber mais sobre como proteger seu código contra o Glassworm? A Linux Managed pode ajudar.
- Site: [linuxmanaged.com](https://linuxmanaged.com)
- Email: contato@linuxmanaged.com
- WhatsApp: +55 (81) 98932-2830
—
Publicado em 15 de março de 2026 por Igor Ferreira
—