Noir é uma ferramenta SAST que lê código-fonte e extrai os endpoints que uma aplicação expõe — caminhos, métodos, parâmetros, cabeçalhos, cookies e os arquivos de origem por trás deles. APIs Sombra, rotas obsoletas e manipuladores não documentados aparecem como parte do mesmo inventário; eles não são um modo separado.
O inventário alimenta três públicos:
Engenheiros de segurança e auditores de código recebem uma lista focada de pontos de entrada alcançáveis por atacantes — caminhos, parâmetros, arquivos de origem, tags — em vez de percorrer todo o repositório.
Revisores humanos.
Auditores de IA. Agentes SAST baseados em LLM recebem a mesma lista focada, mais contexto de revisão por endpoint (--include callee para callees de 1 salto, --ai-context para guards, sinks, validators e signals).
Ferramentas DAST. ZAP, Burp Suite, Caido e Gori recebem uma lista real de rotas para escanear, incluindo caminhos que nunca teriam alcançado por crawling.
O que o Noir faz
Extração de endpoints. Análise estática em mais de 50 frameworks. Retorna endpoints, parâmetros, cabeçalhos, cookies e os arquivos de origem de onde vieram.
Fallback para LLM. Encaminhe frameworks não suportados (ou roteamento personalizado único) para OpenAI / Ollama / etc. quando as regras estáticas não se aplicam.
Saída para a próxima etapa. JSON, YAML, OpenAPI, SARIF, cURL, Postman, HTML — qualquer formato que a próxima ferramenta na pipeline leia.
Integração com DAST. Envie diretamente para ZAP, Burp Suite, Caido ou Gori como destino de proxy, ou exporte OpenAPI para que eles importem.
Contexto SAST com IA. O inventário de endpoints (e, com --include callee, as funções de 1 salto que cada manipulador invoca) é o contexto focado que um auditor LLM precisa para encontrar bugs alcançáveis por atacantes. --ai-context vai além e anexa contexto de revisão agregado por endpoint — guards, callees, sinks, validators e signals — para que o LLM não precise redescobri-los.
CI/CD. GitHub Action, saída SARIF, códigos de saída — adapta-se à pipeline que você já possui.
Uso
root@kitploit:~
noir -h
Exemplo
root@kitploit:~
noir -b <source_dir>
Se você usar com GitHub Action, consulte este documento .
Para mais detalhes, visite nossa página de documentação.
Roteiro
Noir começou como um auxílio para testes WhiteBox: extrair endpoints do código-fonte para que DAST possa escaneá-los com mais precisão. O trabalho cresceu — o mesmo inventário agora também alimenta auditores humanos e agentes SAST com IA. O objetivo daqui em diante é atender igualmente bem todos os três consumidores: humanos revisando o código, LLMs auditando-o e ferramentas DAST escaneando-o.
A partir daqui:
Ampliar a cobertura de linguagens e frameworks; manter a precisão honesta com fixtures por framework.
Apoiar-se mais fortemente em LLMs para os casos que a análise estática não consegue alcançar.
Enriquecer o contexto de revisão por endpoint (guards, callees, sinks, validators, signals) para que revisores humanos e auditores de IA compartilhem a mesma visão focada de cada manipulador.
Manter a integração com DAST como prioridade — OpenAPI, proxy targets e entregas diretas para ZAP / Burp / Caido.
Projeto OWASP
OWASP Noir juntou-se à Fundação OWASP em junho de 2024.
Maio de 2026: Lançado v1.0.0 — introduzindo uma linha estável 1.x em todos os analisadores, taggers, passive-scan e uma nova estrutura CLI focada em verbos.
Maio de 2026: Roteiro atualizado — o objetivo do Noir agora é servir humanos, auditores de IA e ferramentas DAST igualmente como consumidores do mesmo inventário de endpoints.
Novembro de 2023: Moveu o repositório Noir para a organização GitHub noir-cr.
Agosto de 2023: Começou como projeto pessoal de @hahwul.
Contribuição
Noir é um projeto de código aberto feito com ❤️.
Se você gostaria de contribuir, consulte CONTRIBUTING.md e envie um Pull Request.
Mascote
Nosso mascote é Hak (학), uma garça simbolizando elegância e precisão ao detectar falhas ocultas. Em coreano, "학" significa "garça", representando um aliado afiado que mergulha fundo para descobrir vulnerabilidades e superfícies de ataque no seu código.