| Version | Supported |
|---|---|
| main | ✅ |
| develop | ✅ |
| others | ❌ |
Do not open a public GitHub issue for security vulnerabilities.
Report vulnerabilities via GitHub Private Security Advisories.
Include:
- Description and impact
- Steps to reproduce
- Affected component (contract, frontend, backend)
- Suggested fix (optional)
You will receive an acknowledgment within 48 hours and a resolution timeline within 7 days.
This repository runs the following checks on every PR and push:
| Tool | Scope | Trigger |
|---|---|---|
| Semgrep | SAST — Rust & TypeScript | Push / PR / Weekly |
| CodeQL | SAST — JavaScript/TypeScript | Push / PR / Weekly |
| Snyk | Dependency CVEs (npm + Cargo) | Push / PR / Weekly |
| Dependabot | Automated dependency updates | Weekly |
| cargo-audit | Rust advisory database | Push / PR |
| npm audit | Node advisory database | Push / PR |
| Gitleaks | Secret detection | Push / PR |
PRs targeting main or develop are blocked from merging if any critical or high severity finding is detected. Findings are visible in the repository's Security tab.
- Never commit secrets, private keys, or mnemonics
- Use GitHub Actions secrets for CI credentials (
SNYK_TOKEN,SEMGREP_APP_TOKEN) .envfiles are git-ignored; use.env.exampleas a template- Stellar private keys must never appear in source code or logs
The Soroban contract implements the following protections:
- Reentrancy guard on
transfer_payout() - Admin-only pause/unpause and configuration
- Rate limiting on group creation and joins
- Atomic storage updates to prevent partial state
- Overflow checks enabled in release profile (
overflow-checks = true) - Panic = abort to prevent unwinding exploits
See docs/threat-model.md for the full threat model.
- Pin exact versions in
Cargo.tomlandpackage.json - Review Dependabot PRs weekly; merge security patches within 48 hours
- Run
cargo auditandnpm auditlocally before releasing
- Maintainer confirms and assesses severity
- Patch developed on a private branch
- Coordinated disclosure after patch is ready
- Release published with security advisory
- CVE requested if applicable