Currently supported versions of Fogbinder:
| Version | Supported |
|---|---|
| 0.1.x | ✅ |
| < 0.1 | ❌ |
Fogbinder follows a defense-in-depth security approach across multiple dimensions:
- All user input is sanitized before processing
- HTML/XML escaping prevents XSS attacks
- No
eval()or dynamic code execution - Content Security Policy enforced
- ReScript/TypeScript: No manual memory management
- Deno sandbox: V8 isolation
- No buffer overflows: Impossible in managed languages
- Compile-time guarantees: ReScript prevents entire classes of bugs
- No
anytypes: Strict typing throughout codebase - Exhaustive pattern matching: All cases handled
- Zero network calls in core analysis engine
- No external dependencies at runtime
- Air-gapped operation: Works without internet
- No telemetry or tracking
- Minimal API surface: Only read operations
- No credential storage: Never stores passwords/API keys
- Sandboxed execution: Deno permissions model
- Explicit permissions: User must grant access
- No data collection: Zero telemetry
- No analytics: No user tracking
- No external calls: All processing local
- GDPR compliant: No personal data processed
- Network copyleft: Source must be provided for hosted versions
- Transparency: All code publicly auditable
- No backdoors: Open-source security
- Minimal dependencies: ReScript compiler only (build-time)
- Deno std library: Audited by Deno core team
- No npm runtime deps: Zero attack surface
- Reproducible builds: Nix flake (planned)
- Perimeter 3 (Community Sandbox): Open contribution with review
- Code review required: No direct commits to main
- CI/CD checks: Automated security scanning
- Maintainer approval: Two-person rule for releases
- WCAG 2.1 AA compliance: Prevents accessibility-based attacks
- Semantic HTML: Prevents DOM-based XSS
- ARIA labels: Screen reader compatibility
- Keyboard navigation: No mouse-only trap vulnerabilities
Primary: GitHub Security Advisories
- Repository: https://github.com/Hyperpolymath/fogbinder
- Use "Security" tab → "Report a vulnerability"
Secondary: Email
- Email: security@fogbinder.org (FUTURE - not yet active)
- PGP Key: See
.well-known/security.txt
Response Time:
- Acknowledgment: Within 48 hours
- Initial assessment: Within 7 days
- Fix timeline: Depends on severity (see below)
| Severity | Response Time | Fix Timeline | Disclosure |
|---|---|---|---|
| Critical | 24 hours | 7 days | 30 days after fix |
| High | 48 hours | 14 days | 45 days after fix |
| Medium | 7 days | 30 days | 60 days after fix |
| Low | 14 days | 60 days | 90 days after fix |
DO report:
- ✅ XSS vulnerabilities (despite sanitization)
- ✅ Injection attacks (SQL, command, etc.)
- ✅ Authentication/authorization bypass
- ✅ Data leakage or privacy violations
- ✅ Denial of service vulnerabilities
- ✅ Supply chain vulnerabilities
- ✅ Cryptographic weaknesses (if applicable)
- ✅ Accessibility-based security issues
DON'T report:
- ❌ Social engineering attacks (not software vulnerability)
- ❌ Physical security issues
- ❌ Third-party Zotero vulnerabilities (report to Zotero team)
- ❌ Theoretical attacks with no proof-of-concept
We follow coordinated disclosure:
- Report privately via GitHub Security Advisories or email
- Do not publicly disclose until fix is released
- Allow time for us to develop and deploy fix (see timeline above)
- Credit given in security advisory and CHANGELOG
- Public disclosure after agreed timeline
Currently: No formal bug bounty program
Recognition:
- Public credit in SECURITY_ADVISORIES.md
- Entry in CHANGELOG.md
- GitHub Security Advisory credit
- Hall of Fame (planned)
- Keep Fogbinder updated: Security patches in minor versions
- Review permissions: Deno will prompt for file/network access
- Verify sources: Only analyze trusted citation sources
- Air-gap sensitive research: Use offline mode for classified work
- Review code changes: All PRs reviewed for security
- Use Deno permissions:
--allow-read,--allow-writeonly as needed - Sanitize inputs: Always escape user-provided data
- No secrets in code: Use environment variables
- Keep dependencies minimal: Audit any new dependencies
- Sandboxing: Run Fogbinder in containers (Docker, systemd-nspawn)
- Principle of least privilege: Minimal file system access
- Network isolation: No internet access needed for core features
- Audit logs: Monitor file access patterns
- Reproducible builds: Use Nix flake for verification
Status: None yet (v0.1.0 pre-release)
Planned:
- Q2 2025: Initial security audit (Cure53 or similar)
- Q4 2025: Penetration testing
- Annual audits thereafter
- ✅ Code review for all PRs
- ✅ Automated linting (Deno lint)
- ✅ Type safety checks (ReScript compiler)
⚠️ SAST scanning (planned)⚠️ Dependency scanning (planned)
- Mock Zotero API: Production requires real API security review
- No WASM sandbox: Future WASM needs security audit
- NLP integration: Future NLP libraries need vetting
- Visualization libraries: SVG generation needs XSS review
- Formal Zotero API security review before v1.0
- WASM Content Security Policy
- NLP library sandboxing
- SVG sanitization library
Minimal required permissions:
# Read-only Zotero library access
deno run --allow-read=/path/to/zotero fogbinder.js
# Analysis with file output
deno run --allow-read --allow-write=./output fogbinder.jsNever use --allow-all in production.
For web UI (future):
default-src 'none';
script-src 'self';
style-src 'self';
img-src 'self' data:;
font-src 'self';
connect-src 'none';
- ✅ OWASP Top 10: Addressed
- ✅ CWE Top 25: No applicable weaknesses
- ✅ SANS Top 25: Secure coding practices
- ✅ GDPR: No personal data processing
⚠️ SOC 2: Planned for hosted version⚠️ ISO 27001: Planned for enterprise
- Security Issues: GitHub Security Advisories
- General Security Questions: See CONTRIBUTING.md
- Emergency Contact: security@fogbinder.org (FUTURE)
Last Updated: 2025-11-22 Version: 0.1.0 License: GNU AGPLv3