This document outlines the security practices, reporting procedures, and recommendations specific to Celero’s C++ codebase.
Celero maintains security support for the two most recent minor releases of the master branch. Releases outside this window may not receive timely security fixes.
| Branch | Status |
|---|---|
master |
Supported |
develop |
Development only |
| Prior tags | Limited support |
If you discover a security vulnerability in Celero, please:
-
Email: send details to the maintainer.
-
Subject: prefix with
SECURITY REPORT:. -
Include:
- Affected Celero version or commit SHA.
- Description of the issue.
- Minimal reproducible example or proof-of-concept.
- Suggested mitigations or patches (if known).
Expect acknowledgement within 48 hours and a fix timeline based on severity.
- Acknowledge within 48 hours.
- Assess impact and severity.
- Develop a fix in a dedicated branch (naming:
security/<short-description>). - Review & Test: include regression and fuzz tests.
- Merge fix into
masterand backport to supported releases. - Release: draft an advisory and update the release notes.
SPDX 2.3 SBOMs are committed under sbom/ and attached to every
published release with a build provenance attestation. They are generated by
tools/sbom/generate_sbom.py, and CI regenerates
and diffs them on every push, so a dependency change cannot land without the
SBOM being updated in the same commit:
| Asset | Scope |
|---|---|
celero-<version>-<triplet>.spdx.json |
What consumers link against: celero plus operating-system libraries. |
celero-<version>-source.spdx.json |
The source distribution: adds vcpkg-resolved test/build dependencies, vendored third-party headers, and the CI pipeline. |
For vulnerability triage, the per-triplet library document is the relevant one:
Celero has no third-party runtime dependencies, so its exposure is limited to
the compiler runtime and the operating system. Google Test is a test-only
dependency behind CELERO_ENABLE_TESTS and is never linked into the installed
library.
Two third-party headers are vendored under experiments/ and are recorded
explicitly in the source SBOM because no scanner can detect them. Note that
experiments/ExperimentCostSharedPtr/osg_ref_ptr.h is licensed under the
OpenSceneGraph Public License rather than Celero's Apache-2.0, and that
experiments/ExperimentParticles/Particles.h carries no license header. Neither
ships in the installed library. See tools/sbom/README.md.
- Use Sanitizers: enable ASan, UBSan, and MSan in CI builds to catch memory errors.
- Static Analysis: run
clang-tidywith security-focused checks (e.g.cppcoreguidelines-pro-type-union-access). - Fuzz Testing: integrate libFuzzer or AFL targets for public APIs.
- Dependency Audits: regularly audit third-party libraries against the published SBOM; keep
PORT_SCOPEandVENDORED_COMPONENTSin the SBOM generator current when dependencies change. - Safe Patterns: prefer
std::array/std::vectorover raw arrays; use smart pointers (unique_ptr,shared_ptr). - Bounds Checking: avoid out-of-bounds access; use
at()when indexing if safety is critical.
- Code Reviews: include at least one security-aware reviewer for changes to public APIs or memory management code.
- CI Integration: plan to add security scans (e.g. CodeQL) via GitHub Actions.
- Secrets Management: do not commit API keys or credentials; use environment variables or CI secrets.
This policy draws on best practices from OWASP C++ Security Cheat Sheet and the GitHub security guidelines.