-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathauditor.py
More file actions
85 lines (74 loc) · 3.45 KB
/
Copy pathauditor.py
File metadata and controls
85 lines (74 loc) · 3.45 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
import os
from dotenv import load_dotenv
from crewai import Agent, Task, Crew, Process, LLM
# ==========================================
# 1. CONFIGURAÇÃO DA API
# ==========================================
load_dotenv() # Carrega as variáveis do arquivo .env
# ==========================================
# 2. CONFIGURANDO O MOTOR DA IA (O CÉREBRO)
# ==========================================
# Temperatura 0.1 = respostas técnicas e precisas (ideal para Cyber/AppSec)
motor_ia = LLM(
model="anthropic/claude-haiku-4-5-20251001",
temperature=0.1
)
# ==========================================
# 3. CRIANDO OS AGENTES DO TIME
# ==========================================
appsec_agent = Agent(
role='Analista Sênior de AppSec',
goal='Identificar vulnerabilidades críticas de segurança (OWASP Top 10) e vazamento de dados em código-fonte.',
backstory='Você é um auditor de segurança implacável, especialista em arquiteturas cloud e web modernas. Seu objetivo é proteger as aplicações da empresa contra ataques externos e más práticas.',
verbose=True,
allow_delegation=False,
llm=motor_ia # <-- MUDANÇA: Usamos o motor que configuramos acima
)
qa_agent = Agent(
role='Engenheiro de Qualidade e Clean Code (QA)',
goal='Garantir que o código seja limpo, modular, performático e siga as melhores práticas de engenharia de software.',
backstory='Você é um Tech Lead focado em manutenibilidade. Você odeia código espaguete e sempre busca refatorar lógicas complexas para facilitar a leitura e a segurança.',
verbose=True,
allow_delegation=False,
llm=motor_ia # <-- MUDANÇA: O QA usa o mesmo motor
)
# ==========================================
# 4. CÓDIGO ALVO (NOSSA COBAIA)
# ==========================================
codigo_alvo = """
// Exemplo de backend simulado
function loginUser(username, password) {
console.log("Iniciando login para:", username, password);
let query = "SELECT * FROM users WHERE user = '" + username + "' AND pass = '" + password + "'";
db.execute(query);
return true;
}
"""
# ==========================================
# 5. DEFININDO AS TAREFAS (O QUE ELES VÃO FAZER)
# ==========================================
task_seguranca = Task(
description=f'Analise o seguinte trecho de código em busca de vulnerabilidades de segurança graves. Código: \n\n{codigo_alvo}',
expected_output='Um relatório de segurança focado listando as vulnerabilidades encontradas, o nível de criticidade e a explicação técnica de como corrigir.',
agent=appsec_agent
)
task_qualidade = Task(
description=f'Leia o relatório de segurança anterior e analise o mesmo código buscando problemas de performance e más práticas. Aplique as correções de segurança e refatore o código.',
expected_output='Um code review executivo e o bloco de código final, totalmente refatorado, seguro e limpo.',
agent=qa_agent
)
# ==========================================
# 6. ORQUESTRANDO A EQUIPE (O CREW)
# ==========================================
agentes_auditoria = Crew(
agents=[appsec_agent, qa_agent],
tasks=[task_seguranca, task_qualidade],
process=Process.sequential
)
# Inicia o processo
print("Iniciando a auditoria dos agentes...")
resultado = agentes_auditoria.kickoff()
print("\n\n################################################")
print("RELATÓRIO FINAL DA AUDITORIA (AGENT SHIELD MVP)")
print("################################################\n")
print(resultado)