image

Access unlimited bootcamps and 650+ courses forever

60
%OFF
Sidney Rezende
Sidney Rezende15/06/2025 10:48
Share
WEX - End to End EngineeringRecommended for youWEX - End to End Engineering

Título do artigo

    🛡️ Criando um Agente para Detecção de Vulnerabilidades em Arquivos

    A segurança da informação é uma das áreas mais críticas da tecnologia, e uma das primeiras linhas de defesa é a detecção de vulnerabilidades em arquivos enviados ou manipulados por sistemas. Neste artigo, vamos construir um agente simples de detecção de vulnerabilidades em arquivos, com foco em arquivos de código (como .py, .php, .js) e arquivos de configuração (como .env, .json, etc).

    Nosso objetivo será criar uma ferramenta que possa ser integrada em pipelines de CI/CD ou usada localmente para identificar padrões perigosos, como exposições de senhas, comandos maliciosos ou más práticas de codificação.

    📌 O que é um agente de detecção de vulnerabilidades?

    Um agente de detecção é basicamente um script ou aplicação que analisa arquivos em busca de sinais de alerta. Ele pode funcionar como um scanner local, uma API ou um plugin em um fluxo de trabalho DevSecOps.

    🧠 Conceito: O que vamos analisar?

    Vamos procurar por:

    • Chaves de API e senhas hardcoded
    • Comandos potencialmente perigosos (os.system, eval, exec, etc.)
    • Bibliotecas conhecidas por terem brechas de segurança
    • Informações sensíveis em arquivos .env e .json

    🛠️ Mão na massa: Criando o agente em Python

    Vamos usar Python por ser rápido de prototipar e ter ótimas bibliotecas para análise de strings e arquivos.

    1. Estrutura do Projeto

    vuln_scanner/
    ├── scanner.py
    ├── signatures.json
    └── samples/
      ├── test.py
      └── .env
    

    2. Arquivo de assinaturas (signatures.json)

    {
    "patterns": [
      {
        "name": "Uso de eval",
        "regex": "eval\\s*\\(",
        "severity": "alta"
      },
      {
        "name": "Token hardcoded",
        "regex": "(token|senha|password|secret)[\\s:=]+['\\\"]?[A-Za-z0-9\\-_=]{8,}",
        "severity": "média"
      },
      {
        "name": "Comando shell",
        "regex": "os\\.system\\s*\\(",
        "severity": "alta"
      }
    ]
    }
    

    3. O agente (scanner.py)

    import os
    import re
    import json
    
    def carregar_assinaturas(caminho="signatures.json"):
      with open(caminho, 'r') as file:
          return json.load(file)["patterns"]
    
    def escanear_arquivo(arquivo, assinaturas):
      vulnerabilidades = []
      try:
          with open(arquivo, 'r', encoding='utf-8') as f:
              conteudo = f.read()
              for sig in assinaturas:
                  if re.search(sig["regex"], conteudo, re.IGNORECASE):
                      vulnerabilidades.append((sig["name"], sig["severity"]))
      except Exception as e:
          print(f"[!] Erro ao ler {arquivo}: {e}")
      return vulnerabilidades
    
    def escanear_pasta(pasta, assinaturas):
      for root, dirs, files in os.walk(pasta):
          for file in files:
              caminho = os.path.join(root, file)
              vulns = escanear_arquivo(caminho, assinaturas)
              if vulns:
                  print(f"\n[!] Vulnerabilidades encontradas em {caminho}:")
                  for v in vulns:
                      print(f" - {v[0]} (Severidade: {v[1]})")
    
    if __name__ == "__main__":
      print("🔍 Iniciando varredura de vulnerabilidades...")
      sigs = carregar_assinaturas()
      escanear_pasta("samples", sigs)
    

    ✅ Resultado

    Quando você rodar o script, ele irá vasculhar os arquivos da pasta samples e te mostrar possíveis pontos vulneráveis com base nas assinaturas definidas. Exemplo de saída:

    🔍 Iniciando varredura de vulnerabilidades...
    
    [!] Vulnerabilidades encontradas em samples/test.py:
     - Uso de eval (Severidade: alta)
     - Comando shell (Severidade: alta)
    
    [!] Vulnerabilidades encontradas em samples/.env:
     - Token hardcoded (Severidade: média)
    

    🔒 Como melhorar esse agente?

    • ✅ Adicionar suporte a arquivos YAML, INI, XML
    • ✅ Integrar com o GitHub Actions ou GitLab CI
    • ✅ Exportar resultados em formato JSON ou HTML
    • ✅ Adicionar classificação CVSS
    • ✅ Usar machine learning para detectar padrões desconhecidos

    🚀 Conclusão

    Criar um agente de detecção de vulnerabilidades não precisa ser complicado. Mesmo soluções simples, como a que criamos aqui, aumentam muito a segurança do seu projeto. Esse é um ótimo primeiro passo para adotar uma mentalidade DevSecOps e proteger seu código desde o início.

    Se curtiu esse conteúdo, me segue aqui na DIO e compartilha com quem também quer aprender mais sobre segurança da informação na prática! 💻🔐

    Share
    Recommended for you
    NTT DATA - Java e IA para Iniciantes
    TONNIE - Java and AI in Europe
    Microsoft - Azure Administrator Certification (AZ-104)
    Comments (1)
    Gustavo Vianna
    Gustavo Vianna - 15/06/2025 13:39

    Show de bola, Sidney! Lembrando que essa mentalidade DevSecOps é excelente para os negócios.

    Recommended for youWEX - End to End Engineering