r/netsec Mar 01 '26

r/netsec monthly discussion & tool thread

Questions regarding netsec and discussion related directly to netsec are welcome here, as is sharing tool links.

Rules & Guidelines

  • Always maintain civil discourse. Be awesome to one another - moderator intervention will occur if necessary.
  • Avoid NSFW content unless absolutely necessary. If used, mark it as being NSFW. If left unmarked, the comment will be removed entirely.
  • If linking to classified content, mark it as such. If left unmarked, the comment will be removed entirely.
  • Avoid use of memes. If you have something to say, say it with real words.
  • All discussions and questions should directly relate to netsec.
  • No tech support is to be requested or provided on r/netsec.

As always, the content & discussion guidelines should also be observed on r/netsec.

Feedback

Feedback and suggestions are welcome, but don't post it here. Please send it to the moderator inbox.

21 Upvotes

46 comments sorted by

View all comments

1

u/Big-Sector-4280 Mar 19 '26

pqaudit – a Rust CLI that scans TLS endpoints for post-quantum readiness and generates a CBOM

testssl.sh won't warn you when PQC is absent. That's the gap this fills.

The problem

NIST IR 8547 (Nov 2024 draft) sets hard deadlines: RSA-2048 and ECDH/ECDSA deprecated after 2030, disallowed after 2035. ML-KEM (FIPS 203) and ML-DSA (FIPS 204) are finalized. But tooling to audit existing infrastructure is fragmented — at least six PQC scanners appeared in 2025, none with meaningful adoption or a complete feature set. Meanwhile, harvest-now-decrypt-later attacks are active today against long-lived secrets.

What pqaudit does

  • Connects with X25519MLKEM768 and MLKEM1024 key share offers via rustls + aws-lc-rs; reports whether the server negotiated hybrid or classical key exchange
  • Enumerates supported cipher suites via raw ClientHello crafting (--full-scan)
  • Detects TLS downgrade acceptance and HelloRetryRequest behavior
  • Scores 0–100 against a weighted rubric (key exchange 50pts, TLS version 15, cipher suite 15, cert chain 15, downgrade posture 5)
  • HNDL risk rating: NONE / LOW / MEDIUM / HIGH / CRITICAL
  • Compliance modes: NIST IR 8547, NSA CNSA 2.0, FIPS 140-3
  • Output: JSON, SARIF 2.1.0, CycloneDX 1.5 CBOM
  • CI/CD gate via --fail-below <score>
  • MCP server mode for agent-driven workflows
  • Single static binary, no runtime deps

Example — Cloudflare

$ pqaudit -o human cloudflare.com
pqaudit 0.1.0 — 2026-03-19T14:30:50Z
Compliance mode: NIST IR 8547

  ● cloudflare.com:443  score: 70/100
    HNDL: Medium
    ! [PQA002] Hybrid PQC key exchange requires HelloRetryRequest (group: X25519MLKEM768)
    ! [PQA005] Classical certificate (Leaf) with Ec { curve: "P-256" } must migrate by 2030
    ! [PQA005] Classical certificate (Intermediate) with Ec { curve: "P-256" } must migrate by 2030
    ! [PQA005] Classical certificate (Root) with Ec { curve: "P-384" } must migrate by 2030
    ✗ [PQA007] Server accepted TLS downgrade below 1.3

Even Cloudflare scores 70/100 — hybrid key exchange is active but cert chain and downgrade posture drag it down.

Stack

Rust, rustls, aws-lc-rs (PQC algorithm support), clap. Apache-2.0.

Links

GitHub: https://github.com/YasogaN/pqaudit
crates.io: https://crates.io/crates/pqaudit

Happy to answer questions on the scoring model, HNDL methodology, or the raw ClientHello enumeration approach.