Security Policy
Supported Versions
Section titled “Supported Versions”GraphForge is pre-v1.0. The API is still maturing, and only the latest release receives security updates. If you discover a vulnerability, please update to the latest version first.
| Version | Supported |
|---|---|
| Latest (0.3.x) | :white_check_mark: |
| Older releases | :x: |
We will begin supporting multiple versions once a stable v1.0 API is reached.
Reporting a Vulnerability
Section titled “Reporting a Vulnerability”We take the security of GraphForge seriously. If you discover a security vulnerability, please follow these steps:
1. Do Not Open a Public Issue
Section titled “1. Do Not Open a Public Issue”Please do not report security vulnerabilities through public GitHub issues.
2. Report Privately
Section titled “2. Report Privately”Use GitHub’s private vulnerability reporting:
- Go to the Security tab
- Click “Report a vulnerability”
- Fill out the form with details
3. Include These Details
Section titled “3. Include These Details”Please include as much information as possible:
- Type of vulnerability (e.g., SQL injection, XSS, privilege escalation)
- 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 possible)
- Impact of the vulnerability
- Suggested fix (if you have one)
4. What to Expect
Section titled “4. What to Expect”- Acknowledgment: We’ll acknowledge your report within 48 hours
- Assessment: We’ll assess the vulnerability and determine severity
- Timeline: We’ll provide an estimated timeline for a fix
- Updates: We’ll keep you informed of progress
- Credit: We’ll credit you in the security advisory (unless you prefer to remain anonymous)
Security Update Process
Section titled “Security Update Process”- Vulnerability confirmed: We verify the issue and assess severity
- Fix developed: A patch is developed and tested
- Advisory drafted: Security advisory prepared (GitHub Security Advisories)
- Release: Patched version released with security notes
- Disclosure: Public disclosure after users have time to update (typically 7 days)
Security Best Practices for Users
Section titled “Security Best Practices for Users”When using GraphForge:
Input Validation
Section titled “Input Validation”Always validate and sanitize user input before passing to Cypher queries:
from graphforge import GraphForge
db = GraphForge()
# ❌ DON'T: Direct user input in queries (injection risk)user_input = request.form['name']db.execute(f"MATCH (n:Person {{name: '{user_input}'}}) RETURN n")
# ✅ DO: Use parameterized queries or validate inputdb.execute("MATCH (n:Person) WHERE n.name = $name RETURN n", {"name": user_input})File Permissions
Section titled “File Permissions”Protect your database files:
# Set restrictive permissions on database fileschmod 600 mydata.dbTransaction Security
Section titled “Transaction Security”Always use transactions for write operations:
db.begin()try: # Your operations db.commit()except Exception: db.rollback() raiseDependency Security
Section titled “Dependency Security”Keep dependencies updated:
# Check for vulnerabilitiespip install safetysafety check
# Update dependenciesuv sync --upgradeKnown Security Considerations
Section titled “Known Security Considerations”1. SQLite Backend
Section titled “1. SQLite Backend”GraphForge uses SQLite for persistence:
- File-based: Database files should have appropriate permissions
- No network security: SQLite doesn’t have built-in network security
- Single-user: Not designed for concurrent multi-user access
2. Query Execution
Section titled “2. Query Execution”- No query timeout: Long-running queries can cause DoS
- No resource limits: No built-in limits on memory/CPU usage
- No access control: No user authentication/authorization system
3. Serialization
Section titled “3. Serialization”- MessagePack: Uses msgpack for serialization (ensure trusted data only)
Security-Related Configuration
Section titled “Security-Related Configuration”Bandit (Security Linting)
Section titled “Bandit (Security Linting)”Security scanning is configured in CI:
# Run security checks locallybandit -c pyproject.toml -r crates/gf-bindings-py/pythonDependency Scanning
Section titled “Dependency Scanning”Automated dependency updates via Dependabot:
# Manual security auditpip install safetysafety checkDisclosure Policy
Section titled “Disclosure Policy”- Coordinated disclosure: We follow responsible disclosure practices
- Public disclosure timeline: 90 days from initial report or when patch is released
- CVE assignment: We’ll request CVEs for significant vulnerabilities
- Security advisories: Published on GitHub Security Advisories
Attribution
Section titled “Attribution”We believe in recognizing security researchers who help improve GraphForge. With your permission, we’ll:
- Credit you in security advisories
- Mention you in release notes
Additional Resources
Section titled “Additional Resources”Last Updated: 2026-05-06
Thank you for helping keep GraphForge secure!