
Examine bases de código em busca de criptografia vulnerável a quantum. Detecte RSA, ECDSA, Ed25519, ECDH antes do Q-Day. Saída CycloneDX CBOM + SARIF.
Analise bases de código em busca de criptografia vulnerável a quantum. Obtenha uma visão clara do que precisa migrar antes do Q-Day.

O pqaudit detecta o uso de RSA, ECDSA, Ed25519, ECDH, DH e outros algoritmos quebrados pelo algoritmo de Shor. Ele também identifica o uso de PQC já migrado (ML-KEM, ML-DSA, SLH-DSA) para que você possa acompanhar o progresso da migração. Gere saída em texto legível, JSON, CycloneDX CBOM, SARIF para Varredura de Código no GitHub, ou um relatório HTML autossuficiente.
Em 31 de março de 2026, o Google publicou uma pesquisa mostrando que quebrar o ECDSA-256 exige — aproximadamente 1.200 qubits lógicos e menos de 500.000 qubits físicos. O CNSA 2.0 da NSA exige PQC para novos sistemas de segurança nacional até 2027. A janela de migração está aberta, mas se fechando.
npx pqaudit ./my-project
Ou instale globalmente:
npm install -g pqaudit
pqaudit ./my-project
# Escaneia o diretório atual, saída legível
pqaudit .
# Mostra apenas achados críticos e altos
pqaudit ./src --severity high
# Gera CycloneDX CBOM
pqaudit . --format cbom --output cbom.json
# Gera SARIF para Varredura de Código no GitHub
pqaudit . --format sarif --output results.sarif
# Modo CI — código de saída 1 se houver achados críticos/altos
pqaudit . --ci
# Mostra todos os achados, incluindo correspondências de comentários com baixa confiança
pqaudit . --min-confidence 0
# Mostra cada ocorrência em vez de agrupar por arquivo
pqaudit . --no-dedupe
# Ignora varredura de dependências
pqaudit . --no-deps
# Usa regras personalizadas
pqaudit . --rules ./my-rules.yaml
# Escaneia endpoints TLS/SSH em busca de cripto vulnerável a quantum
pqaudit . --scan-endpoint api.example.com:443 --scan-endpoint git.example.com:22
# Escaneia apenas endpoints (sem varredura de código)
pqaudit --scan-endpoint example.com:443 --scan-endpoint example.com:22
| Flag | Descrição | Padrão |
|---|---|---|
-f, --format <formato> | Formato de saída: text, json, cbom, sarif, html | text |
-o, --output <arquivo> | Grava saída em arquivo | stdout |
-s, --severity <nível> | Severidade mínima: critical, high, medium, low, safe | safe |
--min-confidence <0-100> | Filtra achados abaixo deste limite de confiança | 50 |
--no-dedupe | Mostra todas as ocorrências em vez de agrupar por arquivo | dedupe ligado |
--no-deps | Ignora varredura de dependências | varre dependências |
--include <padrões...> | Padrões glob para incluir | todos os arquivos fonte |
--exclude <padrões...> | Padrões glob adicionais para excluir | node_modules, dist, etc. |
--rules <caminho> | Caminho para arquivo YAML de regras personalizadas | regras internas |
--scan-endpoint <endpoints...> | Endpoints TLS/SSH a sondar (host:porta) | nenhum |
--network-timeout <ms> | Tempo limite de conexão de rede | 5000 |
--ci | Código de saída 1 se houver achados críticos ou altos | desligado |
pqaudit — Scanner de Prontidão para Criptografia Pós-Quantum
Escaneado: ./my-project
NÃO PRONTO PARA PQC — Criptografia vulnerável a quantum detectada
Arquivos escaneados: 65 | Achados: 12
Críticos: 7 Altos: 2 Médios: 1 Baixos: 0 Seguros: 2
--- CRÍTICOS (7) ---
[!!] Ed25519 — Assinaturas Ed25519 — vulneráveis ao algoritmo de Shor (14 ocorrências)
src/crypto/signing.ts:14
> import { sign, verify } from "@noble/ed25519";
Correção: ML-DSA-65 (FIPS 204) ou híbrido Ed25519+ML-DSA-65
Confiança: 98% | Esforço: moderado | Via: ast
[!!] RSA — Assinatura RSA — vulnerável a fatoração quântica (3 ocorrências)
src/auth/jwt.ts:42
> jwt.sign(payload, key, { algorithm: "RS256" });
Correção: ML-DSA-65 (FIPS 204)
Confiança: 96% | Esforço: complexo | Via: ast
[!!] ECDSA — Certificado usa chave ECDSA de 256 bits — vulnerável ao algoritmo de Shor
tls://api.example.com:443
> Chave ECDSA de 256 bits, TLSv1.3
Correção: Algoritmos de certificado pós-quânticos quando disponíveis
Confiança: 100% | Esforço: complexo | Via: network
...
| Algoritmo | Ameaça | Substituição |
|---|---|---|
| RSA (qualquer tamanho de chave) | Algoritmo de Shor | ML-KEM-768 / ML-DSA-65 |
| ECDSA / Ed25519 | Shor em curvas elípticas | ML-DSA-65 (FIPS 204) |
| ECDH / X25519 / DH | Shor na troca de chaves | ML-KEM-768 (FIPS 203) |
| DSA | Algoritmo de Shor | ML-DSA-65 (FIPS 204) |
| Algoritmo | Ameaça | Substituição |
|---|---|---|
| AES-128 | Grover reduz para 64 bits | AES-256 |
| TLS 1.0/1.1, SSLv3 | Protocolos obsoletos | TLS 1.3 |
| SSH (detectado via rede) | Troca de chaves DH/ECDH | Troca de chaves híbrida PQ |
ML-KEM (Kyber), ML-DSA (Dilithium), SLH-DSA (SPHINCS+), AES-256, ChaCha20-Poly1305, SHA-256, SHA-3
Gera uma Lista de Materiais Criptográficos em conformidade com CycloneDX 1.6. Cada achado criptográfico torna-se um componente crypto-asset com cryptoProperties, níveis de segurança quântica NIST e locais de evidência.
pqaudit . --format cbom --output cbom.json
Gera saída SARIF 2.1.0 compatível com a varredura de código do GitHub. Envie via github/codeql-action/upload-sarif.
pqaudit . --format sarif --output results.sarif
Arquivo HTML autossuficiente com um painel visual — detalhamento por severidade, pontuação de prontidão PQC e tabela de achados. Sem dependências externas, funciona offline.
pqaudit . --format html --output report.html
name: PQC Audit
on: [push, pull_request]
jobs:
pqaudit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: "20"
- run: npx pqaudit . --format sarif --output pqaudit.sarif --ci
- uses: github/codeql-action/upload-sarif@v3
if: always()
with:
sarif_file: pqaudit.sarif
category: pqaudit
O pqaudit verifica arquivos de manifesto em busca de bibliotecas criptográficas conhecidas em cinco ecossistemas:
| Ecossistema | Arquivos de manifesto | Exemplos de pacotes |
|---|---|---|
| npm | package.json | @noble/ed25519, node-rsa, jsonwebtoken, ethers |
| Rust | Cargo.toml | ed25519-dalek, rsa, ring, p256, pqcrypto |
| Go | go.mod | golang.org/x/crypto, cloudflare/circl |
| Python | requirements.txt, pyproject.toml | cryptography, pycryptodome, paramiko |
| Java | build.gradle, pom.xml | BouncyCastle, Google Tink |
Bibliotecas seguras para PQC (@noble/post-quantum, pqcrypto, cloudflare/circl) são marcadas como seguras para rastreamento de inventário.
As regras são definidas em YAML:
- id: MINHA_REGRA_PERSONALIZADA
description: "Padrão personalizado vulnerável a quantum"
severity: critical
category: signature
algorithm: MeuAlgo
replacement: ML-DSA-65
effort: complex
languages: ["javascript", "typescript"]
patterns:
- "myVulnerableFunction\\("
- "import.*myVulnerableLib"
Consulte CONTRIBUTING.md para o esquema completo de regras e como enviar novas regras.
O pqaudit escaneia arquivos de configuração em busca de configurações criptográficas vulneráveis a quantum:
sshd_config/ssh_configArquivos de configuração sem extensão (Dockerfile, sshd_config, ssh_config) são detectados e escaneados automaticamente.
Sonde endpoints TLS e SSH ativos em busca de configurações criptográficas vulneráveis a quantum:
pqaudit --scan-endpoint api.example.com:443 --scan-endpoint git.example.com:22
Endpoints TLS (qualquer porta, ou especifique tls://host:porta):
Endpoints SSH (porta 22 detectada automaticamente, ou especifique ssh://host:porta):
Os achados de rede têm 100% de confiança (fatos observados, não correspondências de padrão) e aparecem junto com achados de código em todos os formatos de saída.
O pqaudit usa quatro métodos de detecção:
Planejado:
Consulte CONTRIBUTING.md para diretrizes sobre envio de regras, correções de bugs e novos recursos.
MIT