Valence Shell is currently in research prototype status (version 0.9.0). Security updates are provided on a best-effort basis for the current development version.
| Version | Supported | Status |
|---|---|---|
0.9.x |
✅ |
Current development branch |
< 0.9.0 |
❌ |
Historical/superseded |
Note: This is research software with formal proofs but unverified implementation. See Production Readiness below.
Valence Shell uses polyglot verification across 6 proof systems:
✅ Formally Proven (Mathematical Guarantees): - Directory operations (mkdir/rmdir) reversibility - File operations (create/delete) reversibility - File content operations (read/write) reversibility - Operation independence - Composition correctness - ~250+ theorems across Coq, Lean 4, Agda, Isabelle/HOL, Mizar, Z3 (4 gaps remain)
┌─────────────────────────────────────┐
│ Formal Proofs (HIGH TRUST) │
│ - Coq/Lean/Agda/Isabelle/Mizar │
│ - Mathematical guarantees │
└─────────────┬───────────────────────┘
│ Extraction (GAP)
┌─────────────▼───────────────────────┐
│ OCaml Implementation (MEDIUM TRUST) │
│ - Type safe, memory safe │
│ - Manual verification needed │
└─────────────┬───────────────────────┘
│ FFI (GAP)
┌─────────────▼───────────────────────┐
│ POSIX Syscalls (LOW TRUST) │
│ - Kernel guarantees only │
│ - File system dependent │
└──────────────────────────────────────┘
For issues in this early-stage research prototype:
-
Open a public issue on GitHub: https://github.com/Hyperpolymath/valence-shell/issues
-
Tag with
securitylabel -
This is a research project; responsible disclosure follows academic norms
-
-
For GitLab: https://gitlab.com/non-initiate/rhodinised/vsh/-/issues
-
Main development repository
-
If you discover a critical security vulnerability that could affect users:
-
Email: [Contact info to be added - check repository]
-
PGP Key: [To be added]
-
Expected Response Time: 7 days (research project, best-effort)
What qualifies as critical: - Arbitrary code execution - Privilege escalation - Data loss beyond documented limitations - Security proof invalidation
A good security report includes:
-
Description: Clear explanation of the vulnerability
-
Impact: What an attacker could achieve
-
Reproduction: Step-by-step instructions to reproduce
-
Proof Level: Which layer is affected:
-
Formal proofs (breaks mathematical guarantee)
-
Implementation (FFI, syscall)
-
Documentation (incorrect claim)
-
-
Suggested Fix: If you have one
✅ Proven Reversibility - Directory creation/deletion - File creation/deletion - File content modifications - Mathematical guarantee of undo capability
✅ Proven Independence - Operations on different paths don’t interfere - Concurrent operation safety (at proof level)
✅ MAA Framework Foundation - Audit trail for modifications - Reversible operations with proof - FileModificationRecord tracking
✅ Type Safety - Coq/Lean 4/Agda: Dependent types - Isabelle/HOL: Higher-order logic - OCaml: Strong static typing - Elixir: Pattern matching, guards
🔄 RMO (Remove-Match-Obliterate) - GDPR “right to be forgotten” compliance - Cryptographic erasure guarantees - Secure overwrite proof
🔄 Access Control - POSIX permissions modeling - Capability-based security - Principle of least privilege
🔄 Sandboxing - Path restriction proofs - Chroot-like containment - Resource limits
Current status: Research Prototype
Do NOT use for: - Production systems - Critical data - Security-sensitive applications - Unverified/untrusted environments
Verification Gap: The formal proofs operate on abstract models. The implementation (OCaml FFI + POSIX) is not formally connected to the proofs. This gap means: - Proofs guarantee model correctness - Implementation may have bugs - Extraction may introduce errors
To reach production: 1. Close extraction gap (Coq → OCaml verification) 2. Verify FFI layer 3. Complete security audit 4. Fuzzing campaign 5. Formal verification of full stack
✅ If preconditions hold, rmdir(mkdir(p, fs)) = fs ✅ If
preconditions hold, write(p, old, write(p, new, fs)) = fs ✅
Operations on p1 don’t affect p2 (p1 ≠ p2) ✅ Composition: sequences of
operations reverse correctly
Current version uses NO cryptography.
Future versions may include: - Cryptographic erasure (RMO) - Digital signatures (audit trail) - Encryption (data at rest)
When cryptography is added, we will: - Document algorithms and parameters - Provide formal security proofs where possible - Follow NIST/IETF standards - Disclose any custom primitives
Proof Systems (development only): - Coq 8.18+ - Lean 4.3+ - Agda 2.6.4+ - Isabelle/HOL 2024 - Mizar (optional) - Z3 4.12+
Runtime (OCaml implementation): - OCaml 5.0+ (compiler + stdlib only) - Zero external runtime dependencies ✅
Build Tools: - Just (command runner) - Nix (reproducible builds, optional)
-
Day 0: Vulnerability reported
-
Day 7: Initial response from maintainers
-
Day 30: Assessment complete, severity assigned
-
Day 90: Fix developed and tested (if applicable)
-
Day 90+: Public disclosure
For critical issues, we may request coordinated disclosure with: - OCaml team (if compiler issue) - Coq/Lean/Agda teams (if proof assistant issue) - Linux kernel (if syscall issue)
Contributors who responsibly disclose security issues will be acknowledged here (with permission).
[None yet]
-
Proof Documentation:
proofs/README.md -
Verification Gap Analysis:
docs/PROGRESS_REPORT.md -
Architecture:
docs/ARCHITECTURE.adoc -
Test Suite:
scripts/demo_verified_operations.sh -
Academic Papers:
docs/academic-papers.md(planned)
-
✅ RSR Framework: Bronze level (this security policy = part of compliance)
-
✅ Offline-First: No network dependencies
-
✅ Type Safety: All 6 proof systems provide strong typing
-
✅ Memory Safety: Rust-equivalent via OCaml (no manual memory management)
-
GitHub Issues: https://github.com/Hyperpolymath/valence-shell/issues
-
GitLab Issues: https://gitlab.com/non-initiate/rhodinised/vsh/-/issues
-
Email: [To be added]
-
Security.txt: See
.well-known/security.txt(RFC 9116)
This security policy is inspired by: - Rustls Security Policy: Clarity on proof vs implementation - seL4 Kernel: Formal verification security model - CompCert Compiler: Verified compilation security claims
A manual security audit (P9) was performed across the Rust CLI codebase. Findings and fixes:
| Issue | Severity | Fix |
|---|---|---|
Predictable temp file paths |
Medium |
Here doc/here string temp files
used predictable |
CString panic vectors |
Medium |
|
Missing SAFETY comments |
Low |
All |
Null byte handling in chown |
Medium |
Paths or usernames containing
null bytes caused panics via |
Brace expansion DoS |
High |
Nested brace expansion (e.g.,
|
Glob expansion DoS |
Medium |
Patterns like |
Shift overflow |
Medium |
Shift operations ( |
-
All
unsafeblocks in Rust source (6 occurrences) -
All
CString/CStrusage (chown implementation) -
Temp file creation patterns (here docs, process substitution)
-
Expansion algorithms (brace, glob, arithmetic) for resource exhaustion
-
Input validation on all user-facing commands
Last Updated: 2026-03-08 Version: see CHANGELOG.md (release
history) and impl/rust-cli/Cargo.toml [package].version (semver
pin) Policy Version: 1.1