We release patches for security vulnerabilities for the following versions:
| Version | Supported |
|---|---|
| latest (basecamp branch) | β |
| < 1.0 | β |
The DigitalChild project takes security seriously. We appreciate your efforts to responsibly disclose your findings.
- β Open a public GitHub issue for security vulnerabilities
- β Post about the vulnerability publicly before we've had a chance to address it
- β Exploit the vulnerability beyond what is necessary to demonstrate it
1. Report Privately via GitHub Security Advisories
Use GitHub's built-in private vulnerability reporting:
- Go to the Security tab of this repository
- Click "Report a vulnerability"
- Fill out the vulnerability details form
- Submit privately - only repository maintainers will see it
Alternative: If you cannot use GitHub Security Advisories, open a discussion in the Security category.
2. Include in Your Report:
- Description: Clear description of the vulnerability
- Impact: What could an attacker do? What data is at risk?
- Steps to Reproduce: Detailed steps to reproduce the issue
- Proof of Concept: Code or commands demonstrating the vulnerability (if possible)
- Suggested Fix: If you have ideas for how to fix it
- Your Contact Info: So we can follow up with questions
Example Report:
Subject: [SECURITY] Path Traversal in File Upload
Description: The file upload functionality in processor X doesn't validate
file paths, allowing directory traversal attacks.
Impact: An attacker could read arbitrary files from the server, potentially
accessing sensitive data like API keys or scraped documents.
Steps to Reproduce:
1. Call processor.upload('../../../etc/passwd')
2. File is written outside intended directory
3. Contents can be read
Proof of Concept:
[Code snippet]
Suggested Fix: Validate and sanitize file paths using os.path.normpath()
and ensure they stay within the intended directory.
- Within 48 hours: We'll acknowledge receipt of your report
- Within 7 days: We'll provide an initial assessment and expected timeline
- Within 30 days: We'll aim to release a fix (complex issues may take longer)
We'll keep you informed throughout the process.
Once the vulnerability is fixed:
- We'll credit you in the fix announcement (unless you prefer to remain anonymous)
- We'll publish a security advisory on GitHub
- We'll update affected documentation
If you're deploying or using this project, follow these security practices:
- Keep Updated: Always use the latest version from the
basecampbranch - Review Dependencies: Regularly update dependencies (
pip install --upgrade -r requirements.txt) - Validate Input: Don't trust user-provided URLs, file paths, or data
- Check Logs: Monitor logs for suspicious activity
- Secure Credentials: Never commit API keys or credentials to the repository
-
Input Validation: Always validate and sanitize user input
-
Use Validators: Use the
processors/validators.pymodule for:- URL validation (blocks malicious patterns)
- Path validation (prevents traversal attacks)
- File validation (checks size, extension)
-
Avoid Eval: Never use
eval()orexec()on untrusted input -
SQL Injection: Use parameterized queries (we don't use SQL, but good practice)
-
Dependencies: Regularly check for vulnerable dependencies:
pip install safety safety check
When adding new scrapers:
- β Validate all URLs before requests
- β Set timeouts on all HTTP requests
- β Limit file sizes when downloading
- β Validate file types after download
- β Handle errors gracefully (don't expose stack traces)
- β Respect robots.txt and rate limits
- β Don't scrape without permission
- β Don't follow untrusted redirects blindly
This project handles sensitive human rights data:
- Access Control: Limit who can access scraped documents
- Transmission: Use HTTPS for all data transfers
- Storage: Be mindful of where data is stored (especially cloud services)
- Deletion: Follow data retention policies
- Privacy: See docs/DATA_GOVERNANCE.md for detailed policies
β Input Validation:
- URL validation with malicious pattern blocking (
validators.py) - Path traversal protection (
validators.py) - File size limits (configurable, default 100MB)
- Extension whitelisting
β Dependency Management:
- Requirements pinned in
requirements.txt - Pre-commit hooks for code quality
β Code Quality:
- Automated testing (124 tests)
- Linting with flake8
- Type checking encouraged
If we discover a security incident:
- We'll notify affected users immediately
- We'll publish a post-mortem
- We'll implement measures to prevent recurrence
- OWASP Top 10: https://owasp.org/www-project-top-ten/
- CWE: https://cwe.mitre.org/
- Python Security: https://python.readthedocs.io/en/stable/library/security_warnings.html
We appreciate security researchers and users who help keep this project secure. Responsible disclosure benefits everyone in the human rights research community.
Last updated: January 2026