Only the latest state of the main branch and the active production deployment
manifests receive security updates.
| Branch / State | Supported |
|---|---|
main (HEAD) |
✅ |
| Older commits / tags | ❌ |
This policy covers security issues in:
| Component | Examples |
|---|---|
scripts/ |
Contract deploy/rollback, backup, seed, smoke-test scripts |
k8s/ |
Kubernetes manifests and Kustomize overlays |
backend/Dockerfile, frontend/Dockerfile |
Image builds |
.github/workflows/ |
CI, deploy, backup workflows |
monitoring/ |
Prometheus, Alertmanager, Grafana configuration |
docs/ |
Runbooks that contain security-relevant instructions |
Issues in the application code itself (SynapsVault/backend,
SynapsVault/frontend, SynapsVault/contracts) should be reported to those
repositories.
Please do not use public GitHub issues, discussions, or pull requests to report security vulnerabilities.
- Go to the Security tab of this repository.
- Click Report a vulnerability.
- Fill in the advisory form with the details below.
GitHub will notify the maintainers privately and open a draft security advisory.
Send a report to security@synapsvault.xyz with the subject line:
[SECURITY] <short description>
Include:
- Affected component: which directory or file (e.g.,
scripts/backup.sh,k8s/secrets.yaml,.github/workflows/deploy-k8s.yml). - Reproduction steps: the minimal sequence of actions to trigger the issue.
- Proof of concept (if applicable): a script, manifest diff, or screenshot.
- Potential impact: what an attacker could do if they exploited this.
- Suggested remediation (optional): your recommended fix.
Redact any real secrets, keys, or connection strings before sending.
| Milestone | Target |
|---|---|
| Initial acknowledgment | Within 48 hours |
| Triage and severity assessment | Within 5 business days |
| Remediation and coordinated disclosure | Within 14–30 days (depending on severity and complexity) |
We follow coordinated vulnerability disclosure. If a fix requires more than 30 days we will communicate a revised timeline.
Follow these rules in all contributions to this repository.
- Zero secrets in Git. Never commit
.env,secrets.env,kubeconfig, Stellar secret keys (S...), service-role JWT tokens, or unencrypted database dumps. k8s/secrets.yamlis a placeholder template only and must never be added tok8s/kustomization.yamlor pushed with real values.- Use
node scripts/check-env.jsbefore deploying to catch placeholder values (e.g.REPLACE_ME_*,change-me-*,S[X...],C[X...]) that were never replaced. - The CI
secretsjob runs gitleaks on every push and pull request. A gitleaks finding blocks merging.
- Production backups (
scripts/backup.sh) must usegpgorageencryption.BACKUP_ENCRYPTION_METHOD=noneis forbidden in production. - Backup archives are uploaded to S3 with server-side encryption. Never store unencrypted dumps in a public bucket.
- Contract deployments (
scripts/deploy-contracts.cjs) and database restores (scripts/restore.sh) require explicit operator confirmation (interactive prompt or--yesflag) before modifying live state. - The
STELLAR_NETWORKenvironment variable must be set tomainnetexplicitly — scripts default totestnet.
- Dependencies are pinned to exact versions in
package.jsonandpackage-lock.json. Open-ended ranges (^,~) require maintainer approval. - Dependabot is configured to open weekly PRs for dependency updates
(
.github/dependabot.yml). - Container images built in CI are scanned with Trivy; any unfixed CRITICAL CVE fails the build.
- Images pushed to production are signed with cosign (keyless, Sigstore).
- All GitHub Actions workflows use the minimum required
permissionsscope.contents: readis the default; write access is granted only where explicitly needed (e.g., pushing images, uploading SARIF). - Secrets are never echoed in workflow logs (
set -xis prohibited inrun:blocks that handle secrets).
Changes to the following areas require a review comment explaining the security implications:
k8s/secrets.yamlor any file that touches how secrets are injected.github/workflows/— any change to how secrets are consumed or exportedscripts/backup.shorscripts/restore.shscripts/deploy-contracts.cjs(mainnet guard logic)- Dockerfile
USER,RUN, orCOPYinstructions that affect the runtime attack surface
Tag such PRs with the security label so they receive a dedicated review.