Malicious input vulnerability in Journalist interface mitigated

THREAT8 · Mitigated: Controls in place bring the risk down to an acceptable level. · Defined in catalog.py:151

Risk
High impact × Low likelihood = 6 medium
After mitigations
High impact × Low likelihood = 6 medium (unchanged)

How statuses and scores work

Failure to adequately validate content coming from journalists may result in injection vulnerabilities in the Journalist interface (SQL injection, XSS, CSRF) and result in an attacker being able to execute arbitrary commands on the server or in a Source's browser.

Threat actors: Any

Mitigations

Mitigation Status
X-XSS-protection, CSP set to self MITIG71 implemented
SQLAlchemy as an ORM MITIG68 implemented
Use of Flask/Jinja for templating escaping MITIG64 implemented
HidServAuth token on journalist interface MITIG3 implemented

Possible further mitigations

Where it applies

Applies to 1 component in 2 scenarios.

Journalist triage · Journalist Interface
Workstation: reading submissions · Journalist Interface

Notes

Existing mitigations: X-XSS-PROTECTION is enabled and Content-Security-Policy set to self (MITIG71). SQLAlchemy is used as ORM for all database queries (MITIG68). Flask/Jinja2 escapes all HTML content (though not attributes) (MITIG64). JI runs on stealth onion service (MITIG3). Further mitigations: Validate that all attributes are quoted per http://flask.pocoo.org/docs/0.12/security/ (MITIG80), use a WAF to further increase defense-in-depth (e.g. Apache Modsecurity) (MITIG78). Automated test for mitigation: No.

How this threat is matched

Listed for these components. A boundary covers every component inside it.