The OpenHamClock community takes security seriously. We appreciate responsible disclosure and will work to resolve security issues promptly to protect the amateur radio community.
As a rapidly evolving open-source project, we primarily support the latest version of the codebase. Please reproduce issues on the latest main before reporting (when feasible).
| Version | Supported | Notes | End of Support |
|---|---|---|---|
| Main | ✅ | The latest commit on the main branch |
N/A (rolling) |
| Older | ❌ | Please upgrade to the latest version | Immediate |
The following are within the scope of this vulnerability disclosure policy:
- OpenHamClock application code (frontend and backend)
- Configuration defaults and deployment artifacts in this repository
- Build, packaging, and update mechanisms owned by this repository
- Docker images and container configurations published by this project
- Installation and update scripts (
setup-*.sh,update.sh)
The following are generally not in scope but may be considered on a case-by-case basis:
- Third-party services and APIs consumed by OpenHamClock (report to the respective vendor)
- Vulnerabilities in upstream dependencies that do not materially affect this project's usage
- Issues requiring physical access to the user's device (unless remote access was enabled in an unsafe manner by default configuration)
- Social engineering attacks against individual operators
- Issues in end-of-life or unsupported versions
If you're unsure whether something is in scope, please report it anyway and clearly mark it as a "scope question" in your submission. We will provide guidance.
For vulnerability reports, please use one of the private channels below. The maintainer acts as the primary security contact and may engage additional community members under NDA for remediation when necessary.
CRITICAL: DO NOT open a public GitHub Issue for security vulnerabilities before coordination.
- URL: https://github.com/accius/openhamclock/security/advisories/new
- Advantages: Structured submission, built-in secure communication, CVE assignment support
- Expected acknowledgment: Automated immediate, human review within 7 days
- Address: chris@cjhlighting.com
- PGP Key: Available at https://github.com/accius.gpg (or keybase.io/accius)
- Fingerprint:
[Will be added - use PGP key for sensitive communications] - Use when: GitHub reporting is unavailable or for highly sensitive disclosures
- Platform: Twitter/X DM to @[handle] (if urgent and other channels fail)
- Note: Less secure; use only for initial contact, then switch to encrypted channel
A complete vulnerability report should include:
Required:
- Vulnerability type (e.g., SQL injection, XSS, authentication bypass, RCE, information disclosure)
- Affected component(s) (e.g.,
server.js, auto-update mechanism, Docker configuration) - Affected version(s) (commit hash or version tag)
- Description of the vulnerability and how it manifests
- Steps to reproduce or proof-of-concept (minimal example preferred)
- Impact assessment (what can an attacker achieve?)
Optional but helpful:
- Severity assessment (your opinion: Critical/High/Medium/Low)
- Suggested remediation or mitigation approach
- Disclosure preferences (embargo duration, credit preferences)
- CVE ID if you've already requested one
To protect operator privacy, please avoid including:
- Real amateur radio callsigns (use
K0XXXorW1ABCas placeholders) - Actual grid locators (use
AA00aaas placeholder) - Production IP addresses (use RFC5737 documentation addresses:
192.0.2.0/24) - API keys, tokens, session cookies, or contents of
.envfiles - Personal information of operators (names, addresses, email addresses)
If sensitive data is absolutely necessary for reproduction:
- Redact or pseudonymize it
- Clearly explain what was redacted and why it's needed
- Offer to provide actual data over a secure side-channel if essential
Reports may be submitted in English (preferred) or other languages. We will make reasonable efforts to work with non-English reporters but may experience delays in processing.
Each reported vulnerability is assigned a unique case identifier (format: OHC-YYYY-NNNN, e.g., OHC-2026-0001) and progresses through these states:
| State | Description | Typical Duration |
|---|---|---|
| RECEIVED | Report received, awaiting initial review | 0-7 days |
| ASSIGNED | Case assigned to handler, analysis started | 1-14 days |
| CONFIRMED | Vulnerability validated and reproduced | - |
| REMEDIATION | Fix in development and testing | 7-90 days |
| VENDOR-FIX | Fix ready, coordinating disclosure | 0-14 days |
| PUBLIC | Vulnerability and fix publicly disclosed | Terminal state |
| REJECTED | Not a vulnerability or out of scope | Terminal state |
Status transitions will be communicated to the reporter via the reporting channel.
We commit to the following response targets:
- Initial acknowledgment: Within 7 calendar days of receipt
- Preliminary assessment: Within 14 calendar days of receipt
- Regular updates: At least every 14 calendar days while case is active
- Target remediation: Within 90 days for Critical/High severity issues
Note: Complex issues, multi-party coordination, or resource constraints may extend timelines. We will communicate delays proactively.
We use CVSS v3.1 base scores to classify severity:
| Severity | CVSS Score | Response Priority | Typical Fix Timeline |
|---|---|---|---|
| Critical | 9.0 - 10.0 | Immediate | 7-30 days |
| High | 7.0 - 8.9 | Urgent | 30-60 days |
| Medium | 4.0 - 6.9 | Normal | 60-90 days |
| Low | 0.1 - 3.9 | Best effort | Next release cycle |
Reporters are encouraged to provide their own CVSS assessment, but the PSIRT makes the final determination.
Remediation may take the form of:
- Code fix: Patch applied to the codebase
- Configuration change: Secure defaults or documentation update
- Workaround: Interim mitigation until a full fix is available
- No fix: Issue is accepted as a limitation (risk accepted, documented)
All fixes undergo internal testing before release. For Critical issues, we may request assistance from the reporter for verification.
By default, we follow a 90-day coordinated disclosure timeline from initial report:
- Day 0: Vulnerability reported
- Day 7: Initial acknowledgment and triage
- Day 14-90: Remediation development, testing, and coordination
- Day 90: Public disclosure (advisory + fix), unless extended by mutual agreement
We may disclose earlier than 90 days if:
- Fix is ready and tested
- No multi-party coordination is required
- Reporter agrees to early disclosure
- Active exploitation is detected in the wild (emergency disclosure)
The 90-day timeline may be extended if:
- Complexity requires additional development time (negotiated with reporter)
- Multi-party coordination is in progress (see §7)
- Affected component is in a third-party dependency awaiting upstream fix
Maximum embargo: Typically 180 days from initial report, except in exceptional circumstances.
If we become aware of active exploitation or imminent public disclosure, we may:
- Immediately publish a security advisory with available mitigations
- Notify affected parties via established channels
- Release a patch or workaround, even if incomplete
We will make reasonable efforts to notify the reporter before emergency disclosure.
Our security advisories include:
- Vulnerability description (non-technical summary + technical details)
- Affected versions and components
- CVE identifier (if assigned)
- CVSS score and severity rating
- Impact and exploit conditions
- Remediation steps (upgrade path, workarounds, configuration changes)
- Credit to reporter (unless anonymity requested)
- Timeline of disclosure
Disclosure channels:
- GitHub Security Advisory (primary)
- CHANGELOG.md and release notes
- Project README / documentation
- Mailing list or community forum (if established)
We initiate multi-party coordination when a vulnerability:
- Affects upstream dependencies (e.g., Express, Node.js, npm packages)
- Impacts downstream projects (forks, derivatives, or integrations)
- Is present in multiple projects sharing similar code
- Requires involvement of a neutral coordinator (e.g., CERT/CC, MITRE)
When multi-party coordination is required:
- Identify stakeholders: List all affected vendors/projects
- Establish communication: Create a private coordination channel (email thread, CERT/CC case, GitHub security group)
- Share information: Distribute vulnerability details under disclosure embargo
- Coordinate timelines: Agree on a common disclosure date
- Synchronize patches: Align release timing across parties
- Joint disclosure: Publish advisories simultaneously (or in coordinated sequence)
We may request assistance from:
- CERT/CC (cert.org) for high-impact vulnerabilities affecting multiple vendors
- MITRE (cve.org) for CVE assignment and management
- GitHub Security Lab for coordination within the GitHub ecosystem
- NIST NVD for CVE publication and enrichment
When participating in multi-party coordination:
- All parties operate under confidentiality until the agreed disclosure date
- Information may be shared with:
- Directly affected vendors/projects (on need-to-know basis)
- Neutral coordinators (CERT/CC, MITRE)
- Security response organizations (e.g., OS/distro security teams)
- Information must not be shared with:
- General public
- Media or press (except coordinated embargoed briefings)
- Unaffected third parties
Target disclosure date is determined by:
- Complexity of remediation across all parties
- Criticality and exploit likelihood
- Default 90-day window (may be shorter or longer by agreement)
- Active exploitation status
If consensus cannot be reached, we follow the earliest responsible disclosure date that allows for remediation.
We recognize and credit security researchers who responsibly disclose vulnerabilities:
- Default: Credit by name/handle in security advisories and release notes
- Anonymous: Opt-in anonymity respected ("Anonymous researcher")
- No credit: If reporter requests no attribution
We may maintain a Security Researchers Hall of Fame in this repository recognizing:
- Researchers who have reported valid vulnerabilities
- Year of report and severity classification
- Link to public advisory (if applicable)
This section will be created when the first qualifying report is received.
Current status: We do not operate a paid bug bounty program at this time.
Reporters contribute out of goodwill to protect the amateur radio community. We are deeply grateful for their efforts.
We welcome and support good-faith security research conducted in accordance with this policy. We will not pursue legal action against researchers who:
- Act in good faith to identify and report vulnerabilities
- Make a reasonable effort to avoid privacy violations, data destruction, and service disruption
- Do not exploit vulnerabilities beyond what is necessary to demonstrate the issue
- Do not access, modify, or exfiltrate data beyond minimal proof-of-concept
- Report findings promptly and privately
- Wait for our coordinated disclosure before public discussion
When testing for vulnerabilities:
- Use your own infrastructure: Test against your own deployment of OpenHamClock
- Do not test production systems operated by others without explicit written permission
- Avoid service degradation: No DoS attacks, no resource exhaustion, no brute-forcing
- Respect privacy: Do not access operator data, callsigns, locations, or logs of other users
- No automated scanning of public instances without prior approval
If you follow this policy, we commit to:
- Not pursue legal action related to your research
- Work with you to understand and validate the issue
- Acknowledge your contribution publicly (unless you prefer anonymity)
- Keep you informed throughout the remediation and disclosure process
Users and operators can stay informed of security updates via:
- GitHub Security Advisories: https://github.com/accius/openhamclock/security/advisories
- GitHub Releases: https://github.com/accius/openhamclock/releases (security fixes tagged)
- CHANGELOG.md: Maintained in the repository
- Watch/Subscribe: Enable "Security alerts" in your GitHub repository watch settings
When a security update is released:
- Review the advisory: Understand the impact and affected versions
- Check your version:
git log -1 --pretty=format:"%H"orgrep version package.json - Update immediately for Critical/High severity:
git pull npm install npm audit fix docker-compose up -d --build # if using Docker - Verify the fix: Check that your version includes the patch commit
- Monitor for anomalies: Review logs for signs of prior exploitation
To reduce your vulnerability surface:
-
Do not expose to the public internet
Do not port-forward OpenHamClock directly to the internet unless it is protected behind a reverse proxy with TLS, authentication, and rate limiting. -
Protect your
.envand secrets
Treat.env, API keys, and configuration as secrets. Never commit them to public repositories. Use restrictive file permissions (chmod 600 .env). -
Update regularly
Subscribe to security advisories and apply updates promptly:git pull npm install npm audit npm audit fix # review changes before applying -
Run with least privilege
Use a dedicated non-root user for the application. If using Docker, ensure the container runs as non-root. -
Enable security features
- Set
NODE_ENV=production - Configure
AUTO_UPDATE_ENABLED=falseif you prefer manual updates - Use HTTPS (TLS) for all connections
- Enable rate limiting and authentication on admin endpoints
- Set
-
Monitor for anomalies
Review application logs regularly for suspicious activity (failed auth attempts, unusual API requests, etc.). -
Backup configuration
Maintain backups of your configuration before applying updates.
This policy will be reviewed and updated:
- Annually (or more frequently as needed)
- When processes change materially
- After significant security incidents
- To align with evolving ISO/IEC standards
History:
- v1.1 (2026-02-12): Enhanced ISO/IEC compliance, added multi-party coordination, severity classification, case lifecycle
- v1.0 (Initial): Basic vulnerability disclosure policy
For questions about this policy (not vulnerability reports):
- General security questions: Open a public Discussion on GitHub
- Policy clarifications: Email chris@cjhlighting.com (non-confidential)
For vulnerability reports, see §4 Reporting a Vulnerability.
Thank you to the security research community for helping make OpenHamClock safer for the amateur radio community worldwide. Your responsible disclosures protect operators, preserve trust, and strengthen open-source security practices.
This policy aligns with international standards for vulnerability disclosure and handling:
- ISO/IEC 29147:2018 - Vulnerability disclosure
- ISO/IEC 30111:2019 - Vulnerability handling processes
- ISO/IEC TR 5895:2022 - Multi-party coordinated vulnerability disclosure and handling
Document version: 1.1
Last updated: 2026-02-12
Next review: 2026-08-12