Access control vulnerability in Source interface mitigated
THREAT11
· Mitigated: Controls in place bring the risk down to an acceptable level.
· Defined in catalog.py:202
- Risk
- Medium impact × Low likelihood = 4 medium
- After mitigations
- Medium impact × Low likelihood = 4 medium (unchanged)
Ensure that a user cannot access any other resources than they are permitted to. Failure to provide adequate access control may lead to sources accessing messages intended for other sources.
Threat actors: Any
Mitigations
| Mitigation | Status |
|---|---|
| Source codename is 7 word diceware passphrase MITIG45 | implemented |
| Source interface: Has a single role MITIG200 | implemented |
| CSRF from Flask used MITIG202 | implemented |
| Apache autoindex module disabled MITIG201 | implemented |
Possible further mitigations
- Use different database users for Source, Journalist interfaces MITIG203 proposed
- Run source and journalist interface in separate VMs or containers MITIG169 proposed
Where it applies
Applies to 1 component in 2 scenarios.
Source submission · Source Interface
Supply chain and dependencies · Source Interface
Notes
Existing mitigations: Sources must provide their 7 word diceware passphrase to access replies intended for that source (MITIG45). There is a single role on this interface (MITIG200). CSRF token in Flask framework (https://flask-wtf.readthedocs.io/en/latest/csrf.html#ajax) (MITIG202). Apache autoindex module disabled (MITIG201). Further mitigations: Create different database users for Journalist and Source interfaces and enforce least-privilege or separate journalist and source interfaces entirely (MITIG203, MITIG169). Automated test for mitigation: Yes.
How this threat is matched
Listed for these components. A boundary covers every component inside it.