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)

How statuses and scores work

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

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.