Steam Stats is maintained by a single developer (@nicconike) as an open-source GitHub Action. This security policy reflects the realities of solo project maintenance while maintaining security best practices.
Steam Stats follows best practices and maintains high security standards:
- β Pinned Dependencies - All dependencies are pinned to specific versions
- β Code Review Required - All changes require peer review before merging
- β Automated Security Scanning - Continuous security analysis via GitHub Security features
- β SAST Analysis - Static Application Security Testing with CodeQL
- β Dependency Scanning - Automated vulnerability detection in dependencies
- β Secret Scanning - Prevention of credential exposure
- β Container Security - Secure Docker image builds and scanning
| Security Control | Implementation | Status |
|---|---|---|
| Code Analysis | CodeQL, Bandit, Pylint (10.0/10), SonarQube | β Active |
| Dependency Management | Dependabot, Dependency Review | β Active |
| Secret Protection | GitHub Secret Scanning, Pre-commit hooks | β Active |
| Container Security | Multi-stage builds, Non-root user | β Active |
| Infrastructure Security | Step Security Harden Runner | β Active |
| Access Control | Branch protection, Required reviews | β Active |
Use GitHub's private vulnerability reporting:
- Go to the Security tab
- Click "Report a vulnerability"
- Fill out the private advisory form
- Secure, built-in, trackable
Send detailed vulnerability reports to: github.giving328@passmail.com
- Subject:
[SECURITY] Steam-Stats Vulnerability Report - Use PGP encryption (optional but recommended)
For urgent issues or if email is unavailable:
- Discord: @nicconike or @Nicco#1741
- Discord Server
For sensitive reports, you can encrypt your message using my PGP key:
- PGP Fingerprint:
FAF455A3287AAF52858D8A097217AE9924885496 - Key Servers: keyserver.ubuntu.com, keys.openpgp.org
-
Download Key:
curl -s https://keyserver.ubuntu.com/pks/lookup?op=get&search=0xFAF455A3287AAF52858D8A097217AE9924885496 | gpg --import
-
Encrypt Your Report:
echo "Your vulnerability report here" | gpg --encrypt --armor --recipient FAF455A3287AAF52858D8A097217AE9924885496
-
Send encrypted content via email or Discord
To help me understand and reproduce the issue, please include:
- Vulnerability Type (e.g., RCE, XSS, injection, privilege escalation, API Abuse)
- Affected Component/Version (specific commit SHA, version or branch)
- Attack Vector (local, network, adjacent network, physical)
- Impact Assessment (confidentiality, integrity, availability impact)
- Reproduction Steps (detailed, step-by-step instructions)
- Proof of Concept (code, screenshots or demo video)
- Suggested Fix (if you have recommendations)
- Affected Configurations (specific setups where vulnerability applies)
**Vulnerability Type:** [e.g., Container Escape, Code Injection]
**Affected Component:** [e.g., api/main.py, Dockerfile, GitHub Actions]
**Severity Assessment:** [Critical/High/Medium/Low]
**Description:**
[Brief explanation of what the vulnerability allows an attacker to do]
**Impact:**
- What systems/data could be compromised?
- Is this exploitable in typical usage scenarios?
**Reproduction Steps:**
1. [Step 1]
2. [Step 2]
3. [Step 3]
**Proof of Concept:**
[Code snippet, commands or screenshots demonstrating the issue]
**Suggested Mitigation:**
[If you have recommendations for fixes]| Step | Timeframe | What Happens |
|---|---|---|
| Acknowledgment | 48-72 hours | I'll confirm I received your report |
| Initial Assessment | 1-2 weeks | I'll reproduce and assess the vulnerability |
| Status Update | Every 2 weeks | Progress updates during investigation |
| Fix Development | 2-4 weeks | Depends on complexity and my availability |
| Release & Disclosure | After fix | Public advisory with fix release |
- π¨ Report Received: Automatic acknowledgment within 48-72 hours
- π Validation: I'll reproduce and assess the issue
- π Risk Assessment: Severity scoring using CVSS 4 framework
- π οΈ Fix Development: Patch development and testing
- π Security Advisory: CVE request and coordinated disclosure
- π Release: Security update deployment
- π’ Public Disclosure: Responsible disclosure with credit to reporter
β What I CAN provide:
- Prompt acknowledgment of reports
- Honest assessment of vulnerabilities
- Timely fixes for confirmed issues
- Public credit to researchers (if desired)
- Transparent communication about progress
β What I CANNOT provide:
- Bug bounties or financial rewards
- 24/7 response times
- Legal immunity statements
- Formal SLA commitments (realistic timelines only)
| Severity | CVSS Score | Response Target | Example |
|---|---|---|---|
| Critical | 9.0-10.0 | 1-2 weeks | Remote code execution, data breach |
| High | 7.0-8.9 | 2-3 weeks | Privilege escalation, authentication bypass |
| Medium | 4.0-6.9 | 1 month | Information disclosure, DoS |
| Low | 0.1-3.9 | 2-3 months | Minor information leaks, configuration issues |
This section recognizes security researchers who have responsibly disclosed vulnerabilities and helped improve Steam Stats security.
| Date | Researcher | Vulnerability Type | Severity | Status |
|---|---|---|---|---|
| None Yet | - | - | - | - |
While I cannot offer monetary bounties as a solo developer, security researchers receive:
- π Hall of Fame listing with your preferred name/handle (link to GitHub/website if desired)
- π Public acknowledgment in release notes and GitHub security advisories
- π― Priority support for any future issues or feature requests
- β Social media recognition (Twitter/X, LinkedIn) if desired
- π€ Direct collaboration opportunities on security improvements and code review
Want to be the first researcher in the Hall of Fame? Report a vulnerability responsibly!
β Please report:
- Code injection in Python modules
- Container escape vulnerabilities
- GitHub Actions workflow security issues
- Dependency vulnerabilities not caught by automated scanning
- Steam API credential exposure risks
- Docker image security issues
β Out of Scope:
- Issues in Steam's Web API itself (report to Valve)
- User misconfiguration (document in issues instead)
- GitHub Actions platform bugs (report to GitHub)
- Theoretical attacks with no practical impact
Since Steam Stats is used as uses: nicconike/steam-stats@master, security considerations include:
User Responsibilities:
- Secure your own Steam API keys and repository secrets
- Use specific version tags and pinned versions instead of
@masterfor production (e.g.,@v1.4.0or@7d722979930a8521760e200e353382666d0cb483) - Review workflow permissions and use minimal scopes
- Keep your GitHub Actions runner environments secure
Steam Stats Responsibilities:
- Maintain secure Docker container builds
- Handle Steam API credentials securely (never log or expose)
- Provide security updates via new releases
- Follow secure coding practices in all modules
Steam Stats operates under the following security assumptions:
- User Steam data (API keys, profile information)
- Generated PNG assets
- GitHub repository and CI/CD pipeline
- Docker container runtime environment
- Steam Web API integration
- GitHub Actions workflows
- Docker container execution
- Python dependencies and runtime
- Malicious users attempting to extract Steam API keys
- Supply chain attacks via dependencies
- Container escape attempts
- CI/CD pipeline manipulation
βββββββββββββββββββββββββββββββββββββββββββββββ
β GitHub Actions Runner β
βββββββββββββββββββββββββββββββββββββββββββββββ€
β βββββββββββββββββββββββββββββββββββββββββ β
β β Docker Container β β
β β βββββββββββββββββββββββββββββββββββ β β
β β β Steam Stats Application β β β
β β β β β β
β β β β’ Steam API Client β β β
β β β β’ PNG Generation β β β
β β β β’ File System Access β β β
β β βββββββββββββββββββββββββββββββββββ β β
β βββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββ
β β
βΌ βΌ
Steam Web API User Repository
| Version | Support Status | Upgrade Path |
|---|---|---|
| β₯ v1.4.0 | β Full support | Keep updated with latest releases |
| v1.3.x | Update workflow to use @v1.4.0 |
In your workflow file (.github/workflows/steam-stats.yml):
# β Insecure (always latest)
uses: nicconike/steam-stats@master
# β
Secure (pinned tag)
uses: nicconike/steam-stats@v1.4.0
# β
Secure (pinned commit-SHA)
uses: nicconike/steam-stats@7d722979930a8521760e200e353382666d0cb483Why pin versions? Using @master pulls the latest code which could include untested changes. Pinned versions are tested and stable.
Coordinated Vulnerability Disclosure means we work together to:
- Keep the vulnerability private while developing a fix
- Coordinate timing for public disclosure
- Release the fix before disclosing details publicly
- Share credit with the researcher who found the issue
- Protects users who haven't updated yet
- Prevents exploitation while fixes are being developed
- Maintains trust in the open-source ecosystem
- Standard practice for responsible open-source projects
As a solo maintainer, CVD just means:
- Don't publish vulnerability details immediately when you find them
- Work with reporters privately until a fix is ready
- Release fixes first, then publish details
- Give credit to researchers who help
- β CodeQL Analysis - Weekly code security scans
- β Dependabot - Automatic dependency vulnerability alerts
- β Dependency Review - Blocks PRs with vulnerable dependencies
- β Bandit Security Scanning - Python security issue detection
- β Container Scanning - Docker image vulnerability checks
- β OpenSSF Scorecard - Continuous security posture monitoring
- β Pinned dependencies in pyproject.toml
- β Minimal permissions in GitHub Actions workflows
- β Non-root container execution
- β Secret scanning prevention
- β Branch protection with required reviews
- GitHub Security Features: Repository Security
- OpenSSF Scorecard: Detailed Security Metrics
- Best Practices Badge: CII Best Practices
- Security: github.giving328@passmail.com
- General Issues: GitHub Issues, Tag with
securitylabel - Discussions: GitHub Discussions
Thank you for helping keep Steam Stats and our community secure! π
As a solo maintainer, I appreciate your patience and understanding. Security is important to me, but please keep in mind this is maintained by one person with other commitments.
Last Updated: October 7, 2025
Policy Version: 2.1