We release patches for security vulnerabilities for the following versions:
| Version | Supported |
|---|---|
| 0.1.x | ✅ |
| < 0.1.0 | ❌ |
We take the security of education-services seriously. If you believe you have found a security vulnerability, please report it to us as described below.
Please do not report security vulnerabilities through public GitHub issues.
Instead, please report them via one of the following channels:
- Email: security@education-services.local
- GitHub Security Advisories: https://github.com/education-services/education-services/security/advisories/new
You should receive a response within 48 hours. If for some reason you do not, please follow up via email to ensure we received your original message.
Please include the following information in your report:
- Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.)
- Full paths of source file(s) related to the manifestation of the issue
- The location of the affected source code (tag/branch/commit or direct URL)
- Any special configuration required to reproduce the issue
- Step-by-step instructions to reproduce the issue
- Proof-of-concept or exploit code (if possible)
- Impact of the issue, including how an attacker might exploit it
This information will help us triage your report more quickly.
After you submit a report, you can expect:
- Acknowledgment within 48 hours
- Triage and assessment within 7 days
- Regular updates about progress
- Credit in the security advisory (if desired)
education-services implements multiple layers of security:
- All dependencies (PostgreSQL, Anthropic API, PyMuPDF) must be real
- Application refuses to start with missing dependencies
- No silent degradation to mock data
- All educational content must reference specific textbook pages
- Agent refuses to fabricate content not in the source material
- Student data is anonymized in logs
- Homework images are redacted
- No PII is sent to external training
- User uploads (PDFs, homework images) are treated as data, not instructions
- Hidden instructions in documents are explicitly ignored
- See docs/guardrails.md for details
- Subagents have read-only access by default
- Only the
feedback-writersubagent has write permissions - Parent role cannot modify other students' mastery
- All agent outputs are logged with safety flags
- Sensitive content is redacted before logging
- See docs/observability.md
- Hallucination: LLMs can generate plausible but incorrect information. We mitigate this with mandatory citation requirements.
- Out-of-scope requests: Users may try to make agents perform unrelated tasks. Our guardrails explicitly reject these.
- PII in user data: Student work may contain PII. We recommend running on-premise for sensitive deployments.
- We pin all dependencies in
requirements.txt - We use GitHub Dependabot to monitor for CVEs
- We sign releases (planned for v0.2.0)
- Never commit API keys to the repository
- Use environment variables for all secrets
- Enable HTTPS in production
- Restrict database access to trusted networks
- Monitor logs for safety flag triggers
- Review agent outputs before sharing with students
- Update regularly for security patches
We thank the following researchers for responsibly disclosing security issues:
For general security questions (non-vulnerability): security@education-services.local
For emergencies (active exploitation): Please use the GitHub Security Advisory private disclosure for fastest response.