Uma ferramenta que automatiza a correção de vulnerabilidades identificadas pelo Horusec, utilizando o OpenAI GPT-4 para sugerir correções, gerando relatório e criando pull requests no GitHub com as alterações propostas.
- Visão Geral
- Recursos
- Pré-requisitos
- Instalação
- Configuração
- Uso
- Relatório HTML
- Resolução de Problemas
- Contribuição
- Licença
- Contato
O OpenFixAI é uma ferramenta que automatiza o processo de identificação e correção de vulnerabilidades em projetos de código aberto ou privado. Ele integra o scanner de segurança Horusec com a API da OpenAI para gerar sugestões de correção, cria relatórios HTML estilizados e abre pull requests automaticamente no GitHub com as correções propostas.
- Leitura de Relatórios do Horusec: Analisa o relatório de vulnerabilidades gerado pelo Horusec.
- Extração de Vulnerabilidades: Utiliza expressões regulares para extrair detalhes das vulnerabilidades encontradas.
- Consulta à OpenAI: Envia as vulnerabilidades para a API da OpenAI e recebe sugestões de correção.
- Geração de Relatório HTML Aprimorado: Cria um relatório detalhado em HTML com estilos CSS aprimorados para melhor visualização.
- Extração de Código Corrigido: Processa a sugestão para obter apenas o código corrigido.
- Criação Automática de Pull Requests: Cria um novo branch, atualiza o arquivo vulnerável com a correção e abre um pull request no GitHub.
- Python 3.7 ou superior
- Chave de API da OpenAI com acesso ao modelo GPT-4
- Token de Acesso Pessoal do GitHub com permissões para criar branches e pull requests
- Horusec instalado para gerar o relatório de vulnerabilidades
- Ambiente Virtual (opcional, mas recomendado)
-
Clone o repositório
git clone https://github.com/crypto-br/OpenFixAI.git cd OpenFixAI
-
Crie e ative um ambiente virtual
python3 -m venv venv source venv/bin/activate # No Windows use `venv\Scripts\activate`
-
Instale as dependências necessárias
pip install -r requirements.txt
-
Configure as variáveis de ambiente
Crie um arquivo
.env
na raiz do projeto e adicione as seguintes variáveis:OPENAI_API_KEY=seu_openai_api_key GIT_TOKEN=seu_github_token REPO_NAME=seu_usuario/seu_repositorio BRANCH_NAME=auto-fix-vulnerabilities
- OPENAI_API_KEY: Sua chave de API da OpenAI.
- GIT_TOKEN: Seu token de acesso pessoal do GitHub.
- REPO_NAME: Nome do repositório no formato
usuario/repo
. - BRANCH_NAME: Nome do branch que será criado para as correções.
-
Verifique o arquivo
requirements.txt
Certifique-se de que o arquivo contém as seguintes dependências:
openai PyGithub python-dotenv markdown
-
Gere um relatório de vulnerabilidades com o Horusec
Execute o Horusec para escanear seu código e gerar o
report.txt
:horusec start -p ./ --output-format=text --output-file=report.txt
-
Execute a ferramenta
python openfixai.py
-
Verifique o relatório gerado
Após a execução, um relatório HTML chamado
relatorio_vulnerabilidades.html
será criado no diretório do projeto. Abra-o em um navegador para visualizar as vulnerabilidades encontradas e as sugestões de correção. -
Revise o Pull Request
A ferramenta criará um novo branch e abrirá um pull request no seu repositório GitHub com as correções propostas. Revise as mudanças antes de fazer o merge.
O relatório HTML gerado apresenta:
- Detalhes das Vulnerabilidades: Informações detalhadas sobre cada vulnerabilidade encontrada.
- Código Vulnerável: Trechos de código que contêm as vulnerabilidades.
- Sugestões de Correção: Orientações fornecidas pela OpenAI para corrigir as vulnerabilidades.
- Erro 401 "Bad credentials": Verifique se o
GIT_TOKEN
está correto e tem as permissões necessárias. - Erro 404 "Not Found": Certifique-se de que o
REPO_NAME
e ocleaned_path
estão corretos e que o arquivo existe no repositório. - Erros ao ler o relatório: Verifique se o arquivo
report.txt
existe e foi gerado corretamente pelo Horusec. - Erros na API da OpenAI: Confirme se a sua chave de API é válida e tem acesso ao modelo especificado.
- Dependências não encontradas: Execute
pip install -r requirements.txt
para instalar as dependências necessárias.
Contribuições são bem-vindas! Sinta-se à vontade para abrir uma issue ou enviar um pull request.
Este projeto está licenciado sob a Licença MIT.