ECHIDNA is in active development. The current major version (2.x) on
main receives security updates; pre-1.0 lineages are not
supported. The on-disk version lives in Cargo.toml
and CHANGELOG.md; this file deliberately does not
pin a version number to avoid drift.
| Lineage | Supported |
|---|---|
2.x ( |
✅ |
1.x |
✅ (security only) |
< 1.0 |
❌ |
ECHIDNA follows these security principles:
-
Defense in Depth: Multiple layers of security controls
-
Least Privilege: Minimal necessary permissions
-
Secure by Default: Safe default configurations
-
Fail Securely: Graceful degradation on errors
-
Complete Mediation: All access requests are checked
-
Transparency: Open communication about security issues
We take the security of ECHIDNA seriously. If you believe you have found a security vulnerability, please report it to us as described below.
DO NOT report security vulnerabilities through public GitHub issues, GitLab issues, the issue tracker, or any other public channel.
Preferred route — GitHub Security Advisories (private, encrypted, auditable):
Email fallback (use only if GitHub is unavailable to you):
-
j.d.a.jewell@open.ac.uk (maintainer; PGP key
4A03639C1EB1F86C7F0C97A91835A14A2867091Epublished on https://keys.openpgp.org)
Please include the following information in your report:
-
Type of vulnerability (e.g., buffer overflow, SQL injection, XSS, etc.)
-
Full paths of source file(s) related to the vulnerability
-
Location of the affected source code (tag/branch/commit or direct URL)
-
Any special configuration required to reproduce the issue
-
Step-by-step instructions to reproduce the issue
-
Proof-of-concept or exploit code (if possible)
-
Impact of the issue, including how an attacker might exploit it
-
Initial Response: Within 48 hours of report
-
Status Update: Within 7 days with initial assessment
-
Patch Development: Timeline provided based on severity
-
Public Disclosure: Coordinated with reporter after patch release
-
Keep Updated: Always use the latest stable version
-
Verify Downloads: Check signatures and checksums
-
Review Configs: Audit security-related configurations
-
Monitor Logs: Watch for suspicious activity
-
Report Issues: Report any security concerns promptly
-
Input Validation: Always validate and sanitize inputs
-
Output Encoding: Properly encode outputs to prevent injection
-
Authentication: Use strong authentication mechanisms
-
Authorization: Implement proper access controls
-
Cryptography: Use well-tested cryptographic libraries
-
Dependencies: Keep dependencies updated and audited
-
Secrets: Never commit secrets or credentials
-
Code Review: All code must be reviewed before merging
-
REUSE Compliance: All code properly licensed and attributed
-
Trivy Scanning: Automated vulnerability scanning via CI/CD
-
Aqua.jl: Julia dependency security analysis
-
Cargo Audit: Rust dependency vulnerability checking
-
Podman: Container isolation with rootless mode support
-
SPDX Headers: Clear license and copyright information
-
Code Signing: Digital signatures for releases
-
SBOM Generation: Software Bill of Materials for dependencies
-
Fuzzing: Automated fuzz testing for parsers
-
SAST/DAST: Static and dynamic security analysis
-
Dependency Pinning: Locked dependency versions
-
Security Hardening: Container and binary hardening
We use the CVSS (Common Vulnerability Scoring System) v3.1 to assess severity:
| Score | Severity | Response Time |
|---|---|---|
9.0-10.0 |
Critical |
24 hours |
7.0-8.9 |
High |
7 days |
4.0-6.9 |
Medium |
30 days |
0.1-3.9 |
Low |
90 days |
Security updates are released as:
-
Critical: Immediate patch release
-
High: Next patch release (within 7 days)
-
Medium: Next minor release (within 30 days)
-
Low: Next major/minor release (within 90 days)
Security advisories are published at:
-
GitHub Security Advisories: https://github.com/hyperpolymath/echidna/security/advisories
-
GitHub Releases (security patches are tagged accordingly): https://github.com/hyperpolymath/echidna/releases
-
GitHub Releases atom feed: https://github.com/hyperpolymath/echidna/releases.atom
The following are in scope for security reports:
-
Core libraries: Rust core, Julia ML layer, Idris2 ABI, Zig FFI bridge, AffineScript / AffineScript UI components
-
Prover backends: every
ProverKindvariant wired through the dispatch pipeline — Tier-1 core through Tier-3 niche. The live membership list isProverKind::all()insrc/rust/provers/mod.rs; the human-readable mirror isdocs/PROVER_COUNT.md. -
Trust-hardening pipeline: solver integrity, certificate checking, axiom tracking, sandboxing, mutation testing, Pareto ranking, Bayesian confidence — wired in
src/rust/dispatch.rs. -
Build system: Justfile, CI/CD workflows under
.github/workflows/ -
Containers:
Containerfile,.containerization/Containerfile.wave3, Podman configurations -
Dependencies: third-party libraries and tools
-
Source Code: Intellectual property and implementation
-
User Data: Proof scripts and theorem libraries
-
Credentials: API keys and authentication tokens
-
Build Artifacts: Compiled binaries and containers
-
Code Injection: Malicious code execution via prover input
-
Data Exfiltration: Unauthorized access to user proofs
-
Supply Chain: Compromised dependencies
-
Container Escape: Breaking out of Podman containers
-
Denial of Service: Resource exhaustion attacks
-
Trivy: Container and filesystem vulnerability scanning
-
cargo-audit: Rust dependency auditing
-
Aqua.jl: Julia package security analysis
-
REUSE: License compliance verification
For security-related questions or concerns:
-
GitHub Security Advisories: https://github.com/hyperpolymath/echidna/security/advisories/new
-
Email: j.d.a.jewell@open.ac.uk (maintainer)
-
PGP key:
4A03639C1EB1F86C7F0C97A91835A14A2867091E— fetch viagpg --recv-keys 4A03639C1EB1F86C7F0C97A91835A14A2867091Eor from j.d.a.jewell@open.ac.uk" class="bare">https://keys.openpgp.org/search?q=j.d.a.jewell@open.ac.uk -
GitHub: @hyperpolymath
We thank the following researchers and security professionals for responsibly disclosing vulnerabilities:
-
No vulnerabilities reported yet
Document lineage: revisions tracked via git log SECURITY.md;
versioned alongside the project (see
CHANGELOG.md). This file is intentionally
count-free and version-free in prose to avoid R5b drift against
Cargo.toml.