We take security seriously. We appreciate your efforts to responsibly disclose vulnerabilities and will make every effort to acknowledge your contributions.
The preferred method for reporting security vulnerabilities is through GitHub’s Security Advisory feature:
-
Navigate to Report a Vulnerability
-
Click “Report a vulnerability”
-
Complete the form with as much detail as possible
-
Submit — we’ll receive a private notification
This method ensures:
-
End-to-end encryption of your report
-
Private discussion space for collaboration
-
Coordinated disclosure tooling
-
Automatic credit when the advisory is published
If you cannot use GitHub Security Advisories, you may email us directly:
Important: Do not report security vulnerabilities through public GitHub issues, pull requests, discussions, or social media.
A good vulnerability report helps us understand and reproduce the issue quickly.
-
Description: Clear explanation of the vulnerability
-
Impact: What an attacker could achieve (confidentiality, integrity, availability)
-
Affected versions: Which versions/commits are affected
-
Reproduction steps: Detailed steps to reproduce the issue
-
Proof of concept: Code, scripts, or screenshots demonstrating the vulnerability
-
Attack scenario: Realistic attack scenario showing exploitability
-
CVSS score: Your assessment of severity (use CVSS 3.1 Calculator)
-
CWE ID: Common Weakness Enumeration identifier if known
-
Suggested fix: If you have ideas for remediation
-
References: Links to related vulnerabilities, research, or advisories
## Summary
[One-sentence description of the vulnerability]
## Vulnerability Type
[e.g., Buffer overflow, Memory corruption, Input validation, etc.]
## Affected Component
[File path, function name, API endpoint, etc.]
## Steps to Reproduce
1. [Step 1]
2. [Step 2]
3. [Step 3]
## Impact
[What could an attacker achieve?]
## Suggested Fix
[Optional: Your ideas for remediation]| Stage | Target |
|---|---|
Acknowledgement |
Within 48 hours |
Initial assessment |
Within 1 week |
Fix development |
Depends on severity |
Disclosure |
Coordinated, after fix available |
Severity-based response:
| Severity | Fix Target |
|---|---|
Critical |
72 hours |
High |
1 week |
Medium |
2 weeks |
Low |
Next release |
We follow coordinated disclosure:
-
Reporter submits vulnerability privately
-
We acknowledge receipt within 48 hours
-
We develop and test a fix
-
We release the fix and publish an advisory
-
Reporter is credited (unless they prefer anonymity)
We request a 90-day disclosure window. If we cannot fix the issue within 90 days, we will work with the reporter on a reasonable timeline.
-
core-zig bridge (core-zig/) — C ABI boundary, memory safety
-
core-forth kernel (core-forth/) — Block storage, journal integrity
-
Idris2 ABI (src/Lith/) — Type safety, proof soundness
-
Lean 4 normalizer (normalizer/) — Proof correctness
-
BEAM NIFs (beam/) — Native function interface safety
-
lith-http (lith-http/) — HTTP API, authentication, rate limiting
-
GQL-DT (gql-dt/) — Query injection, type confusion
-
Container configurations — Image security, secrets management
-
CI/CD workflows — Supply chain security
We consider security research conducted consistent with this policy to be:
-
Authorized concerning any applicable anti-hacking laws
-
Authorized concerning any relevant anti-circumvention laws
-
Exempt from restrictions in our Terms of Service that would interfere with conducting security research
We will not pursue legal action against researchers who:
-
Act in good faith
-
Avoid privacy violations, data destruction, or service disruption
-
Report findings promptly
-
Do not exploit vulnerabilities beyond proof-of-concept
Security updates are distributed through:
-
GitHub Security Advisories
-
CHANGELOG.md entries marked
[SECURITY] -
Git tags with security notes
Lithoglyph is designed with security as a core principle across its multi-language stack:
-
All mutations are journaled in WAL before commitment to blocks
-
Full provenance tracking — every change has who, what, when, why
-
Deterministic rendering for human verification
-
Cryptographic hashes in provenance chains
-
Every operation has a defined inverse
-
Irreversible operations are explicitly marked and require confirmation
-
Complete history is preserved in the journal
-
Idris2 ABI proofs: Memory layout, alignment, packing verified with dependent types
-
Zero
believe_me: Hard invariant — no trust shortcuts in ABI definitions -
Lean 4 normalization proofs: Schema correctness verified at compile time
-
GQL-DT: Query correctness verified with dependent types
-
Zig bridge: All unsafe casts require
// SAFETY:comments explaining correctness -
Rust NIFs: Safe Rustler 0.35 API, 0 compiler warnings
-
Forth kernel: Stack-based — bounded memory model
-
Constraints enforced at the bridge layer (core-zig)
-
Rejections include explanations (not silent failures)
-
Parameterized query builders — no SQL injection surface
-
Dependencies are pinned to specific versions/SHAs
-
All GitHub Actions workflows use SHA-pinned actions
-
SPDX license headers on all source files
-
Hypatia neurosymbolic scanner runs on every PR
-
Echidnabot detects dangerous patterns (
believe_me,sorry, unsafe casts) -
TruffleHog scans for leaked secrets
-
OpenSSF Scorecard measures supply chain health