Our Blog

Glassworm: O Novo Ataque Unicode Invisível Que Está Comprometendo Repositórios

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:

  • 1. Inserção de caracteres invisíveis: O atacante adiciona caracteres Unicode que não têm representação visual
  • 2. Ofuscação de código: Esses caracteres podem alterar a interpretação do código sem mudar sua aparência
  • 3. Bypass de revisão: Revisores humanos e ferramentas básicas não detectam a anomalia
  • 4. Execução maliciosa: Quando o código é executado, o payload oculto é ativado
  • 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 = "A​B​C​1​2​3" # Contém zero-width spaces
    `

    A string parece normal, mas tem caracteres extras que podem bypassar validações.

    ---

    Como Detectar o Glassworm

    Ferramentas Especializadas

  • 1. Unicode Scanner: Scripts que detectam caracteres não-ASCII
  • 2. Git Pre-commit Hooks: Bloqueiam commits com caracteres suspeitos
  • 3. Static Analysis Tools: Configuradas para detectar anomalias Unicode
  • 4. Hex Editors: Permitem visualizar bytes reais do arquivo
  • 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

    Facebook
    Twitter
    LinkedIn