Please do not report security vulnerabilities through public GitHub issues.
Report privately through GitHub's private vulnerability reporting (the Security tab → Report a vulnerability). We aim to acknowledge a report within a few days and will keep you updated as we work on a fix.
When reporting, please include:
- the affected component (backend
intel_platform, frontend, or deploy config), - a description of the issue and its impact,
- steps to reproduce (a proof-of-concept helps), and
- any suggested remediation.
This is an intelligence-analyst workbench that collects untrusted content from the web and renders it back to analysts. Reports touching the trust boundary are especially valuable:
- SSRF / egress — outbound collection fetches are gated through
collection/url_guard.py(validate_url) on every request and redirect hop. - Injection — stored XSS from document- or LLM-derived text, Cypher/SQL injection, prompt injection that escalates privilege.
- AuthN / AuthZ — JWT handling, the admin-gated routes, privilege escalation.
- Secret handling — API keys are Fernet-encrypted at rest; report any leak path.
This project ships with default development credentials and a placeholder
JWT_SECRET. Before exposing any instance beyond localhost:
- set
REQUIRE_SECURE_AUTH=true— the app then refuses to start while any built-in default secret, API key or admin password is still in place, so the three items below fail loudly rather than silently, - set strong, non-default admin credentials,
- set a real, high-entropy
JWT_SECRET, - provide real datastore passwords (never the
.env.exampleplaceholders), and - keep
.env(and any real keys) out of version control — it is gitignored.
The local docker compose stack binds all services to 127.0.0.1 by design;
do not rebind app ports to 0.0.0.0 on an untrusted network.
This is an actively developed project; security fixes land on main. There are
no separately maintained release branches — track main for the latest fixes.