Um SDK moderno, modular e estritamente tipado (TypeScript) para interagir com a API do Banco Nacional de Vulnerabilidades Cibernéticas (BNVD).
Construído com uma arquitetura limpa (Clean Architecture), este wrapper foi desenhado para ser integrado em ferramentas de automação, pipelines de CI/CD, CLI de segurança (SecOps) e plataformas de Threat Intelligence.
- Tipagem Extrema (DTOs): Autocomplete nativo no VS Code para toda a árvore de resposta do BNVD, métricas CVSS e matrizes MITRE ATT&CK.
- Arquitetura Modular: Instancie o cliente e acesse domínios isolados (
vulnerabilities,noticias,statistics,mitre). - Resiliência: Tratamento nativo de Timeouts via
AbortControllerpara evitar requisições travadas no seu backend. - Zero Dependências Pesadas: Construído sobre a
Fetch APInativa do Node.js (Node 18+). Compatível com CommonJS (require) e ESM (import).
Este pacote está hospedado no GitHub Packages em vez do registro público do NPM. Para permitir o download fluido por qualquer desenvolvedor, configuramos um Token de Acesso Pessoal (PAT) exclusivamente com permissão de leitura (read:packages).
É seguro usar e expor este token, ele não possui permissões de escrita.
Na raiz do seu projeto (onde fica o seu package.json), crie um arquivo chamado .npmrc e adicione as seguintes linhas:
@wjuniorw:registry=https://npm.pkg.github.com
//npm.pkg.github.com/:_authToken=ghp_[remove_this_brackets]EmeneGHIvUF9ymJjMiFu1dOMdstRKS0sRtT3E caso haja outros pacotes assim no seu projeto autentique por sequencia:
@wjuniorw:registry=https://npm.pkg.github.com/wjuniorw
//npm.pkg.github.com/wjuniorw:_authToken=ghp_[remove_this_brackets]EmeneGHIvUF9ymJjMiFu1dOMdstRKS0sRtT3
;proximo:
//npm.pkg.github.com/:_authToken={outro_token}
@outroUser:registry=https://npm.pkg.github.com/outroUser
Agora você pode instalar o pacote normalmente usando o seu gerenciador favorito:
npm install @wjuniorw/bnvd-api-wrapper@latest
# ou
pnpm add @wjuniorw/bnvd-api-wrapper@latest
# ou
yarn add @wjuniorw/bnvd-api-wrapper@latestA biblioteca exporta a classe central BNVDClient. Instancie-a uma vez e utilize os domínios mapeados.
import { BNVDClient } from '@wjuniorw/bnvd-api-wrapper';
// O cliente aceita configurações opcionais (como timeout personalizado e headers)
const bnvd = new BNVDClient({
timeout: 15000, // 15 segundos
});Busque vulnerabilidades recentes, zero-days e detalhes específicos.
// Buscar as 5 vulnerabilidades mais recentes com descrição em português
const recentes = await bnvd.vulnerabilities.getTop5Recent(true);
recentes.data?.forEach(vuln => {
console.log(`[${vuln.cve.id}] ${vuln.cve.vulnStatus}`);
});
// Buscar vulnerabilidades críticas de um fabricante específico
const msCriticals = await bnvd.vulnerabilities.searchByVendor('microsoft', {
severity: 'CRITICAL'
});Mantenha seu radar de inteligência de ameaças atualizado.
// Buscar as 3 últimas notícias de segurança cibernética
const noticias = await bnvd.noticias.getRecent(3);
noticias.data?.forEach(noticia => {
console.log(`📌 ${noticia.titulo} - Leia mais em bnvd.org/noticias/${noticia.slug}`);
});Consulte as matrizes, táticas, técnicas e mitigações oficiais.
// Buscar detalhes de uma técnica de ataque específica (Ex: Phishing)
const technique = await bnvd.mitre.getTechnique('T1566', { translate: true });
console.log(technique.data);
// Listar grupos de ameaças (APT) mapeados
const grupos = await bnvd.mitre.listGroups();Obtenha o panorama numérico do banco de dados do BNVD.
const stats = await bnvd.statistics.getGeneral();
console.log(`Total de CVEs Críticas cadastradas: ${stats.data?.by_severity.CRITICAL}`);O wrapper trata erros de API e de Timeout nativamente, lançando exceções claras. Recomenda-se o uso de blocos try/catch.
try {
const vuln = await bnvd.vulnerabilities.getById('CVE-2024-99999');
} catch (error) {
console.error("Falha na consulta ao BNVD:", error.message);
// Saída ex: "BNVD API Error: 404 Not Found" ou "Request timeout após 30000ms"
}Se você deseja adicionar novos endpoints ou melhorar as tipagens, PRs são muito bem-vindos!
- Faça um fork do projeto
- Crie uma branch para sua feature (
git checkout -b feature/minha-feature) - Faça o commit das suas alterações (
git commit -m 'feat: adiciona nova funcionalidade') - Faça o push para a branch (
git push origin feature/minha-feature) - Abra um Pull Request
Distribuído sob a licença MIT. Veja LICENSE para mais informações.
