We release patches for security vulnerabilities in the following versions:
| Version | Supported |
|---|---|
| 1.0.x | ✅ |
| < 1.0 | ❌ |
Security updates are released as soon as possible after a vulnerability is confirmed and a fix is available. Critical vulnerabilities receive immediate attention and expedited releases.
Please do not report security vulnerabilities through public GitHub issues.
Instead, please report security vulnerabilities via email to:
Please include the following information in your report:
- Type of vulnerability (e.g., buffer overflow, cryptographic weakness, timing attack)
- Full paths of affected source files
- Location of affected code (tag/branch/commit or direct URL)
- Step-by-step instructions to reproduce the issue
- Proof-of-concept or exploit code (if available)
- Impact assessment (what an attacker could achieve)
- Suggested mitigation (if you have one)
You can expect the following response timeline:
- Initial Response: Within 48 hours acknowledging receipt
- Assessment: Within 7 days with initial assessment and severity classification
- Status Updates: Regular updates every 7-14 days until resolution
- Resolution: Timeline depends on severity
- Critical: 7-14 days
- High: 14-30 days
- Medium: 30-60 days
- Low: 60-90 days
We follow coordinated disclosure:
- Security issues are handled confidentially until a fix is released
- We work with reporters to understand and validate the issue
- Fixes are developed and tested privately
- Security advisories are published when fixes are released
- Credit is given to reporters (unless anonymity is requested)
The following security concerns are in scope for this project:
-
Cryptographic Issues
- Weaknesses in SHA3-512 implementation or usage
- CSPRNG (cryptographically secure random number generator) failures
- Entropy weaknesses affecting uniqueness guarantees
-
ID Generation Vulnerabilities
- Predictability of generated identifiers
- Collision vulnerabilities beyond theoretical probability
- Timing attacks that could reveal system information
-
Memory Safety
- Buffer overflows, use-after-free, memory leaks
- Undefined behavior in C++ code
- Thread safety violations in concurrent usage
-
Dependency Vulnerabilities
- Known CVEs in OpenSSL, Boost, or fmt
- Supply chain attacks via vcpkg or build system
-
Platform-Specific Issues
- Platform abstraction layer vulnerabilities
- Privilege escalation through system calls
- Information disclosure via environment variables or system fingerprinting
The following are generally not considered security vulnerabilities:
-
Theoretical Collision Probability
- The documented collision probability for default 24-character IDs (see libcuid2.7 manpage)
- Collisions are statistically possible but extremely unlikely with proper usage
-
Deployment Configuration
- Misuse of the library in application code
- Improper integration or error handling by consuming applications
- Infrastructure security of systems running the library
-
Denial of Service
- Resource exhaustion from excessive ID generation
- Performance degradation under extreme load
-
Build System Issues
- Build failures unrelated to security
- CMake or vcpkg configuration problems (unless they introduce vulnerabilities)
This library relies on OpenSSL 3.x for cryptographic operations:
- SHA3-512: NIST FIPS-202 compliant (domain separation byte 0x06)
- CSPRNG:
RAND_bytes()for cryptographically secure random number generation - Validation: OpenSSL 3.x is FIPS 140-3 validated
Important: Keep OpenSSL updated to receive security patches. On non-Windows platforms, use system package managers for timely updates:
# macOS
brew upgrade openssl@3
# Ubuntu/Debian
sudo apt-get update && sudo apt-get upgrade libssl-dev
# Fedora/RHEL
sudo dnf upgrade openssl-develThe library is designed for concurrent use:
- Atomic counter operations prevent race conditions
- Fingerprint singleton is thread-safe (C++11+ guarantees)
- Extensively tested with 10-20 concurrent threads
However, ensure your application properly handles concurrent calls and error conditions.
Collision resistance depends on:
- Sufficient ID length (minimum 4, recommended 24+ characters)
- System entropy (hostname, process ID, environment variables)
- Cryptographic quality randomness (OpenSSL CSPRNG)
- Proper timestamp resolution (nanosecond precision when available)
Warning: IDs shorter than 24 characters have higher collision probability. Use longer IDs (28-32 characters) for high-volume production systems.
The library collects system information for fingerprinting:
- Hostname (with fallback to random hex string if unavailable)
- Process ID
- Environment variables (sorted alphabetically, then hashed)
Privacy Note: While this data is hashed with SHA3-512, be aware that generated IDs incorporate system characteristics. In privacy-sensitive contexts, consider the implications of correlation attacks.
The library uses little-endian serialization via boost::endian for cross-platform compatibility. This ensures consistent ID generation across different architectures (x86, ARM, big-endian systems).
We actively monitor:
- National Vulnerability Database (NVD)
- OpenSSL Security Advisories
- Boost Security
- GitHub Security Advisories
- Renovate automated dependency updates
Dependencies are managed via vcpkg with baseline pinning for reproducible builds. Security updates trigger immediate baseline updates.
The project includes comprehensive security-relevant tests:
- Thread safety tests: Concurrent generation from 10-20 threads
- Uniqueness validation: Up to 50,000 IDs without duplicates
- Boundary testing: Length validation, edge cases
- Platform abstraction tests: CSPRNG, environment handling
We encourage security researchers to:
- Fuzz test the library with tools like AFL++, libFuzzer
- Static analysis using tools like Clang Static Analyzer, Coverity
- Dynamic analysis with AddressSanitizer, UndefinedBehaviorSanitizer
- Cryptographic validation against NIST test vectors
Enable sanitizers during development:
cmake --preset <platform>-<arch>-debug -DENABLE_SANITIZERS=ONWe appreciate responsible disclosure and will acknowledge security researchers who help improve libcuid2:
- Security researchers are credited in release notes (unless anonymity is requested)
- Hall of Fame section for significant contributions (coming soon)
- Manual Pages:
man 7 libcuid2for security properties and algorithm details - API Documentation:
man 3 libcuid2for complete library API reference - Code of Conduct: See CODE_OF_CONDUCT.md
- Contributing: Please open an issue on GitHub to discuss contributions
For all security-related inquiries:
Email: security@projects.visus.io
For general questions and non-security issues, please use GitHub Issues.
Last Updated: 2026-01-10