program-dongtai-iast
Guia Definitivo e Padrões de Engenharia para DongTai IAST (github.com/HXSecurity/DongTai), cobrindo o framework open-source de Interactive Application Security Testing passivo, deploy do DongTai Serve
Files5
View on GitHubSKILL.mdskills/programs/program-dongtai-iast/SKILL.md
GitHubHabilidade de IA: Guia e Engenharia com DongTai IAST
Esta skill fornece orientação técnica canônica, comandos operacionais e padrões de engenharia para o DongTai IAST (github.com/HXSecurity/DongTai), o primeiro framework open-source de Interactive Application Security Testing (IAST) passivo, desenvolvido pela Huoxian Security (HXSecurity).
🧭 Visão Geral e Arquitetura do DongTai IAST
O DongTai IAST utiliza uma abordagem de IAST Passivo, onde agentes de instrumentação instalados dentro da aplicação monitoram o fluxo de dados em memória à medida que requisições reais ou de testes automatizados chegam, sem gerar tráfego invasivo adicional e sem necessidade de crawlers externos.
┌────────────────────────────────────────────────────────────────────────┐
│ ARQUITETURA DONGTAI IAST │
└────────────────────────────────────────────────────────────────────────┘
[ TESTES DE QA / TRÁFEGO REAL ] (Playwright, Cypress, Postman, JMeter)
│ (Requisições HTTP normais de funcionalidade)
▼
[ AMBIENTE INSTRUMENTADO (Aplicação Java, Python, Go, PHP, Node.js) ]
┌────────────────────────────────────────────────────────────────────┐
│ AGENTE DONGTAI (dongtai-agent.jar / dongtai-agent-python) │
│ │
│ 1. Ingestão de Requisição ──► SOURCE (Etiqueta dados como sujos) │
│ 2. Métodos Internos ──► PROPAGATOR (Rastreia contaminação) │
│ 3. Sanitizadores ──► FILTER (Verifica se neutralizou) │
│ 4. Chamadas Críticas ──► SINK (Detecta violação de segurança)│
└─────────────────────────────────┬──────────────────────────────────┘
│ (Relato assíncrono via OpenAPI)
▼
[ DONGTAI SERVER ] (Orquestrador & Motor de Análise)
┌────────────────────────────────────────────────────────────────────┐
│ - DongTai OpenAPI Gateway: Recebe telemetria e batimentos dos nós │
│ - DongTai Engine: Analisa os grafos de contaminação e stack trace │
│ - DongTai Web UI: Dashboard de gestão de vulnerabilidades e regras│
│ - Armazenamento: MySQL + Redis │
└────────────────────────────────────────────────────────────────────┘
🚀 Deploy do DongTai Server (Docker Compose)
O DongTai Server é implantado centralmente utilizando contêineres Docker.
1. Clonagem e Inicialização:
# Clonar o repositório oficial do DongTai
git clone https://github.com/HXSecurity/DongTai.git
cd DongTai
# Subir a infraestrutura completa do servidor
docker-compose -f docker-compose.yml up -d
2. Portas e Componentes em Execução:
- Painel Web (DongTai Web UI):
http://localhost:80ouhttp://localhost:8888 - Gateway OpenAPI:
http://localhost:8888/openapi - Credenciais Padrão:
admin/admin(troque imediatamente no primeiro login). - Geração de Token: No painel web, acesse System Settings ➔ Agent Deployment para obter o
Tokenúnico de autenticação dos agentes.
💻 Instalação e Execução dos Agentes por Linguagem
1. Agente Java (Spring Boot, Tomcat, WildFly)
O agente Java do DongTai é composto por três módulos internos (dongtai-agent.jar, dongtai-core.jar e dongtai-spy.jar).
# Baixar o agente Java compilado
curl -X GET "http://dongtai-server:8888/openapi/api/v1/agent/download?url=http://dongtai-server:8888/openapi&language=java" \
-H "Authorization: Token SEU_TOKEN_AQUI" -o dongtai-agent.jar
# Executar a aplicação Java com o agente acoplado
java -javaagent:/opt/dongtai/dongtai-agent.jar \
-Ddongtai.server.url=http://dongtai-server:8888/openapi \
-Ddongtai.server.token=SEU_TOKEN_AQUI \
-Ddongtai.app.name=EcommerceBackend \
-Ddongtai.app.version=v1.2.0 \
-Ddongtai.app.create=true \
-jar app.jar
2. Agente Python (Django, Flask, FastAPI)
O agente Python utiliza monkey patching dinâmico para interceptar métodos no runtime CPython.
# Instalar o pacote do agente via pip
pip install dongtai-agent-python
# Definir variáveis de ambiente para inicialização automática
export DONGTAI_IAST_SERVER_URL="http://dongtai-server:8888/openapi"
export DONGTAI_IAST_SERVER_TOKEN="SEU_TOKEN_AQUI"
export DONGTAI_IAST_PROJECT_NAME="FinanceAPI"
export DONGTAI_IAST_PROJECT_VERSION="v2.0.0"
# Inicializar aplicação Django / Flask
python manage.py runserver 0.0.0.0:8000
3. Agente Go (Golang)
O agente Go realiza a reescrita dinâmica de endereços de funções e hooking de símbolos em tempo de execução:
# Integrar o pacote dongtai-agent-go no arquivo main.go
import _ "github.com/HXSecurity/dongtai-agent-go"
🔬 Configuração de Regras e Estratégia de Hooks (Hook Strategy)
O DongTai classifica métodos em quatro categorias dentro de seu motor de regras:
┌────────────────────────────────────────────────────────────────────────┐
│ TIPOS DE NÓS NO GRAFO DE TAINT │
└────────────────────────────────────────────────────────────────────────┘
1. SOURCE: Entrada de dados (Ex: javax.servlet.ServletRequest.getParameter)
2. PROPAGATOR: Concatenação (Ex: java.lang.StringBuilder.append)
3. FILTER: Validação (Ex: org.apache.commons.lang3.StringEscapeUtils.escapeHtml4)
4. SINK: Consumo perigoso (Ex: java.sql.Statement.execute, java.lang.Runtime.exec)
Exemplo de Estrutura de Regra de Sink no DongTai:
- Classe Alvo:
java.lang.ProcessBuilder - Método:
start() - Assinatura:
()Ljava/lang/Process; - Tipo de Vulnerabilidade:
Command Injection (CWE-78) - Condição: Se qualquer argumento que alcançou o
ProcessBuildercontiver uma etiqueta de contaminação ativa vinda de umSOURCEsem passar por umFILTERhomologado, o DongTai registra a vulnerabilidade com stack trace completo.
🔄 Integração com Pipelines de DevSecOps e QA
O grande benefício do DongTai IAST é sua capacidade de transformar a suíte de testes de QA existente em uma auditoria de segurança contínua sem nenhum tempo adicional de execução.
Workflow no CI/CD (GitHub Actions / GitLab CI):
┌────────────────────────┐
│ 1. Build da Aplicação │
└───────────┬────────────┘
▼
┌────────────────────────┐
│ 2. Start em Staging │ ──► (Inicia a aplicação com dongtai-agent acoplado)
└───────────┬────────────┘
▼
┌────────────────────────┐
│ 3. Execução de QA E2E │ ──► (Roda Playwright / Cypress / Newman / Selenium)
└───────────┬────────────┘
▼
┌────────────────────────┐
│ 4. Quality Gate Check │ ──► (Consulta API do DongTai Server: Há vulnerabilidades?)
└───────────┬────────────┘
▼
┌────────────────────────┐
│ 5. Aprova ou Bloqueia │
└────────────────────────┘
Script de Verificação de Quality Gate via API:
#!/usr/bin/env bash
set -euo pipefail
DONGTAI_URL="http://dongtai-server:8888/openapi"
TOKEN="SEU_TOKEN_AQUI"
PROJECT_NAME="EcommerceBackend"
# Consultar total de vulnerabilidades críticas ou altas no projeto
FINDINGS=$(curl -s -X GET "${DONGTAI_URL}/api/v1/vulns?project_name=${PROJECT_NAME}&level=1,2" \
-H "Authorization: Token ${TOKEN}" | jq '.data | length')
echo "Total de vulnerabilidades graves encontradas no IAST: ${FINDINGS}"
if [ "${FINDINGS}" -gt 0 ]; then
echo "❌ Quality Gate FALHOU: O DongTai identificou vulnerabilidades críticas em tempo de execução."
exit 1
else
echo "✅ Quality Gate APROVADO: Nenhuma vulnerabilidade crítica ativa detectada."
fi
🔗 Integração com Outras Skills do Repositório
- iast-interactive-testing: Teoria formal de Interactive Application Security Testing e comparação com SAST/DAST.
- program-opengrep: Complementa a análise estática prévia das regras de Taint.
- qa-engineer: Conexão direta com a automação de testes funcionais (Playwright, Cypress, Pytest).
- devsecops-engineer: Configuração de Quality Gates automatizados no pipeline CI/CD.