Email security@theqrl.org. Please do not open a public issue for a vulnerability in this tool.
Include the version or commit, affected file or workflow, likely impact, and a proof of concept when available.
The wallet generator depends on these properties:
- The release bundle is authentic. The zip is signed with ML-DSA-87 under
the permanent context
qrl-webtools-release-signatures, using theQRL organisation release key, and carries a GitHub build-provenance attestation; see RELEASE.md. - The generated seed is unpredictable. Entropy comes from the browser CSPRNG through a fail-closed wrapper that rejects missing, throwing, wrong-length, or all-zero results.
- Encrypted wallet files resist offline attack and tampering. The v3 envelope uses scrypt (N=2^17, r=8, p=1) plus AES-256-GCM, with format metadata bound into authenticated data. See docs/v3-wallet-format.md.
- The downloadable HTML is self-contained. CI statically checks the
single-file build and loads it over
file://in Chromium while denying outbound requests.
The project cannot defend against a compromised machine that reads secrets from the page, insecure storage after export, or disclosure of a mnemonic/hexseed. Use a clean bootable OS, disconnect it from the network, and protect backups.
Everything in this repository is in scope, including GitHub Actions and the
release process. QRLLIB and the underlying qrllib WebAssembly library should
be reported to the QRL qrllib project.