ResQ takes the safety of its users and contributors seriously. This policy applies to every repository under resq-software.
For libraries and binaries cut via release-plz, only the latest minor release line receives patches. If you're running an older line, upgrade before reporting — the issue may already be resolved.
| Product | Supported |
|---|---|
resq-cli (via crates) |
latest 0.x.y |
resq-dsa (library) |
latest 0.x.y |
@resq-sw/* npm packages |
latest 0.x.y |
| Other packages | latest published version |
Do not open a public issue for a suspected vulnerability. Public disclosure before a fix is available puts users at risk.
Use one of the private channels below:
- GitHub Security Advisories (preferred): open a draft advisory on the affected repo at
https://github.com/resq-software/<repo>/security/advisories/new. If you're unsure which repo, file againstresq-software/.githuband we'll route internally. - Email:
security@resq.software.
Please include:
- Affected repo + commit SHA or release tag
- A short description of the issue and its impact
- Steps to reproduce (a minimal proof-of-concept is ideal)
- Any suggested mitigation if you have one
Where the EU Cyber Resilience Act (Regulation (EU) 2024/2847) applies to a product in this repository, ResQ reports through ENISA's Single Reporting Platform, to the CSIRT designated as coordinator and to ENISA:
- Actively exploited vulnerabilities: an early warning within 24 hours of becoming aware of one, a notification within 72 hours, and a final report no later than 14 days after a corrective or mitigating measure is available.
- Severe incidents affecting the security of the product: an early warning within 24 hours, a notification within 72 hours, and a final report within one month of the notification.
We inform affected users as the Act requires. Reporting to us through the private channels above never requires you to contact ENISA yourself. You may also report to a national CSIRT under its coordinated vulnerability disclosure policy.
If you make a good-faith effort to follow this policy while researching a vulnerability, we will:
- treat your research as authorised, and not pursue or support legal action against you for it;
- work with you to understand and fix the issue quickly; and
- credit you, unless you ask us not to.
Good faith means that you:
- test only against your own accounts, data and installations;
- stop and report as soon as you find a vulnerability;
- access, change or keep no one else's data beyond what's needed to show the issue;
- don't degrade our services or anyone else's; and
- give us reasonable time to fix the issue before you disclose it.
This safe harbour covers ResQ's own claims only; it cannot bind third parties.
| Window | What happens |
|---|---|
| 48 hours | Initial acknowledgement from a maintainer |
| 7 days | Triage decision: confirmed / needs-info / not-applicable |
| 30 days | Fix landed on main for confirmed issues; coordinated disclosure window opens |
| 90 days | Public disclosure (GitHub Security Advisory published + CVE requested where applicable), unless we've agreed to a longer embargo |
We credit reporters in advisory text unless they ask to remain anonymous.
- Code, configuration, and infrastructure manifests in any public
resq-softwarerepository. - The
resqCLI binary distributed viaresq-software/cratesGitHub Releases. - The canonical git hooks shipped via
resq-software/dev.
- Dependencies maintained by third parties — report upstream; we'll consume the fix when it lands. (That said, if an advisory affects us materially, we want to know.)
- Social engineering, physical access, denial-of-service via traffic volume.
- Self-XSS, missing security headers on non-sensitive marketing pages.
Every repo runs the reusable security-scan workflow on push + PR + weekly schedule. What actually runs is narrower than the job list, so it is written out rather than summarised:
| Scan | With no caller overrides |
|---|---|
| OSV-Scanner, zizmor, actionlint | on, every repo, every trigger |
| Dependency Review | on, but pull requests only — never on push or the weekly schedule |
| CodeQL | off unless the caller passes languages and the repo has CodeQL default setup disabled — with default setup on, GitHub rejects the advanced configuration, so passing languages alone is not enough; also needs GitHub Code Security on a private repo |
| Gitleaks, Semgrep, Snyk, vet | off unless the caller opts in (Semgrep and Snyk also need a token) |
Three further limits worth knowing before relying on a green tick:
- CodeQL findings cannot fail a build, but CodeQL can. Only the
Analyzestep carriescontinue-on-error, so a finding is reported and not enforced — yetInitialize CodeQLandAutobuilddo not, and a failure in either fails the job and therequiredgate. Autobuild failure is the common case for the compiled languages the input advertises (c-cpp,csharp,go,java-kotlin,swift). - zizmor findings cannot fail a build either. Both its scan step and its
SARIF upload are
continue-on-error, so the row above marking it "on, every repo" means it always runs, not that it can ever block a merge. - Dependency Review fails rather than skips. On a private repo without
GitHub Code Security the job runs and fails on every pull request, until
the caller passes
enable-dependency-review: false.
Findings are triaged by the maintainers listed in each repo's CODEOWNERS.