
Scansiona i codebase per crittografia vulnerabile ai quantistici. Rileva RSA, ECDSA, Ed25519, ECDH prima del Q-Day. Output CycloneDX CBOM + SARIF.
Scansiona i codebase alla ricerca di crittografia vulnerabile al quantum. Ottieni un quadro chiaro di cosa deve migrare prima del Q-Day.

pqaudit rileva l'uso di RSA, ECDSA, Ed25519, ECDH, DH e altri algoritmi compromessi dall'algoritmo di Shor. Identifica anche l'uso già migrato di PQC (ML-KEM, ML-DSA, SLH-DSA) in modo da poter monitorare i progressi della migrazione. Output come testo leggibile, JSON, CycloneDX CBOM, SARIF per GitHub Code Scanning, o un report HTML autonomo.
Il 31 marzo 2026, Google ha pubblicato una ricerca che mostra che rompere ECDSA-256 richiede 20 volte meno qubit di quanto stimato in precedenza — circa 1.200 qubit logici e meno di 500.000 qubit fisici. Il CNSA 2.0 della NSA impone il PQC per i nuovi sistemi di sicurezza nazionale entro il 2027. La finestra di migrazione è aperta ma si sta chiudendo.
npx pqaudit ./my-project
Oppure installa globalmente:
npm install -g pqaudit
pqaudit ./my-project
# Scansiona la directory corrente, output leggibile
pqaudit .
# Mostra solo risultati critici e alti
pqaudit ./src --severity high
# Genera un CycloneDX CBOM
pqaudit . --format cbom --output cbom.json
# Genera SARIF per GitHub Code Scanning
pqaudit . --format sarif --output results.sarif
# Modalità CI — codice di uscita 1 se esistono risultati critici/alti
pqaudit . --ci
# Mostra tutti i risultati, comprese le corrispondenze nei commenti a bassa confidenza
pqaudit . --min-confidence 0
# Mostra ogni occorrenza invece di raggrupparle per file
pqaudit . --no-dedupe
# Salta la scansione delle dipendenze
pqaudit . --no-deps
# Usa regole personalizzate
pqaudit . --rules ./my-rules.yaml
# Scansiona endpoint TLS/SSH per crittografia vulnerabile al quantum
pqaudit . --scan-endpoint api.example.com:443 --scan-endpoint git.example.com:22
# Scansiona solo endpoint (nessuna scansione del codice)
pqaudit --scan-endpoint example.com:443 --scan-endpoint example.com:22
| Flag | Descrizione | Predefinito |
|---|---|---|
-f, --format <format> | Formato di output: text, json, cbom, sarif, html | text |
-o, --output <file> | Scrivi output su file | stdout |
-s, --severity <level> | Gravità minima: critical, high, medium, low, safe | safe |
--min-confidence <0-100> | Filtra i risultati al di sotto di questa soglia di confidenza | 50 |
--no-dedupe | Mostra tutte le occorrenze invece di raggrupparle per file | deduplica attiva |
--no-deps | Salta la scansione delle dipendenze | scansiona dipendenze |
--include <patterns...> | Pattern glob da includere | tutti i file sorgente |
--exclude <patterns...> | Pattern glob aggiuntivi da escludere | node_modules, dist, ecc. |
--rules <path> | Percorso del file YAML con regole personalizzate | regole predefinite |
--scan-endpoint <endpoints...> | Endpoint TLS/SSH da sondare (host:port) | nessuno |
--network-timeout <ms> | Timeout di connessione di rete | 5000 |
--ci | Codice di uscita 1 se esistono risultati critici o alti | disattivato |
pqaudit — Post-Quantum Cryptography Readiness Scanner
Scansionato: ./my-project
NON PRONTO PER IL PQC — Rilevata crittografia vulnerabile al quantum
File scansionati: 65 | Risultati: 12
Critici: 7 Alti: 2 Medi: 1 Bassi: 0 Sicuri: 2
--- CRITICO (7) ---
[!!] Ed25519 — Firma Ed25519 — vulnerabile all'algoritmo di Shor (14 occorrenze)
src/crypto/signing.ts:14
> import { sign, verify } from "@noble/ed25519";
Soluzione: ML-DSA-65 (FIPS 204) o ibrido Ed25519+ML-DSA-65
Confidenza: 98% | Sforzo: moderato | Via: ast
[!!] RSA — Firma RSA — vulnerabile alla fattorizzazione quantistica (3 occorrenze)
src/auth/jwt.ts:42
> jwt.sign(payload, key, { algorithm: "RS256" });
Soluzione: ML-DSA-65 (FIPS 204)
Confidenza: 96% | Sforzo: complesso | Via: ast
[!!] ECDSA — Il certificato usa chiave ECDSA 256-bit — vulnerabile all'algoritmo di Shor
tls://api.example.com:443
> chiave ECDSA 256-bit, TLSv1.3
Soluzione: Algoritmi di certificato post-quantistici quando disponibili
Confidenza: 100% | Sforzo: complesso | Via: rete
...
| Algoritmo | Minaccia | Sostituzione |
|---|---|---|
| RSA (qualsiasi dimensione di chiave) | Algoritmo di Shor | ML-KEM-768 / ML-DSA-65 |
| ECDSA / Ed25519 | Shor sulle curve ellittiche | ML-DSA-65 (FIPS 204) |
| ECDH / X25519 / DH | Shor sullo scambio di chiave | ML-KEM-768 (FIPS 203) |
| DSA | Algoritmo di Shor | ML-DSA-65 (FIPS 204) |
| Algoritmo | Minaccia | Sostituzione |
|---|---|---|
| AES-128 | Grover riduce a 64-bit | AES-256 |
| TLS 1.0/1.1, SSLv3 | Protocolli deprecati | TLS 1.3 |
| SSH (rilevato via rete) | Scambio di chiave DH/ECDH | Scambio di chiave ibrido PQ |
ML-KEM (Kyber), ML-DSA (Dilithium), SLH-DSA (SPHINCS+), AES-256, ChaCha20-Poly1305, SHA-256, SHA-3
Genera un Cryptographic Bill of Materials conforme a CycloneDX 1.6. Ogni risultato crittografico diventa un componente crypto-asset con cryptoProperties, livelli di sicurezza quantistica NIST e posizioni delle evidenze.
pqaudit . --format cbom --output cbom.json
Genera output SARIF 2.1.0 compatibile con la scansione del codice di GitHub. Carica tramite github/codeql-action/upload-sarif.
pqaudit . --format sarif --output results.sarif
File HTML autonomo con un dashboard visivo — ripartizione delle gravità, punteggio di prontezza PQC e tabella dei risultati. Nessuna dipendenza esterna, funziona 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
pqaudit controlla i file di manifesto per librerie crittografiche note in cinque ecosistemi:
| Ecosistema | File di manifesto | Esempi di pacchetti |
|---|---|---|
| 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 |
Le librerie sicure per PQC (@noble/post-quantum, pqcrypto, cloudflare/circl) vengono segnalate come sicure per il monitoraggio dell'inventario.
Le regole sono definite in YAML:
- id: MY_CUSTOM_RULE
description: "Pattern personalizzato vulnerabile al quantum"
severity: critical
category: signature
algorithm: MyAlgo
replacement: ML-DSA-65
effort: complex
languages: ["javascript", "typescript"]
patterns:
- "myVulnerableFunction\\("
- "import.*myVulnerableLib"
Vedi CONTRIBUTING.md per lo schema completo delle regole e come inviare nuove regole.
pqaudit scansiona i file di configurazione per impostazioni crittografiche vulnerabili al quantum:
sshd_config/ssh_configI file di configurazione senza estensione (Dockerfile, sshd_config, ssh_config) vengono automaticamente rilevati e scansionati.
Sonda endpoint TLS e SSH live per configurazioni crittografiche vulnerabili al quantum:
pqaudit --scan-endpoint api.example.com:443 --scan-endpoint git.example.com:22
Endpoint TLS (qualsiasi porta, o specifica tls://host:port):
Endpoint SSH (porta 22 auto-rilevata, o specifica ssh://host:port):
I risultati di rete hanno confidenza al 100% (fatti osservati, non corrispondenze di pattern) e appaiono insieme ai risultati del codice in tutti i formati di output.
pqaudit utilizza quattro metodi di rilevamento:
Pianificati:
Vedi CONTRIBUTING.md per le linee guida su come inviare regole, correzioni di bug e nuove funzionalità.
MIT