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)
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
- Verify all attributes are quoted as per http://flask.pocoo.org/docs/0.12/security/ MITIG80 proposed
- Use WAF MITIG78 proposed
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.