Scenario: Source submission
Defined in model.py:482
Anonymous source submits over Tor; app encrypts and stores it.
5 open threats, highest risk 9 high · 30 threats in all · 5 data flows · 4 affected components
Data Flow Diagram
Sequence Diagram
Show data flows
| ID |
Name |
Source |
Sink |
Type |
| 1 |
Submit over Tor |
Source |
Dedicated Hardware Firewall |
Request
|
| 2 |
Reach Source Interface |
Dedicated Hardware Firewall |
Source Interface |
Request
|
| 3 |
Hand to app |
Source Interface |
SecureDrop Application |
Request
|
| 4 |
Encrypt & store |
SecureDrop Application |
Encrypted submission store |
Request
|
| 5 |
Record metadata |
SecureDrop Application |
Metadata DB |
Request
|
Applicable threats
| Threat |
Component |
Status |
Risk |
After mitigations |
Mitigations |
| Configuration vulnerability in Source interface THREAT5 |
SecureDrop Application |
partially mitigated |
9 high |
9 high |
Config managed by securedrop-client sdconfig CLI tool |
| Application-server DDoS THREAT148 |
Source Interface |
accepted |
8 high |
8 high |
|
| Application server configuration error THREAT169 |
SecureDrop Application |
partially mitigated |
9 high |
6 medium |
Use of Ansible for configuration management for servers |
| Configuration vulnerability in Journalist interface THREAT9 |
SecureDrop Application |
mitigated |
6 medium |
6 medium |
Config managed by securedrop-client sdconfig CLI tool |
| Unknown vulnerabilities in Python or libraries used by SecureDrop THREAT38 |
Source Interface |
accepted |
6 medium |
6 medium |
AppArmor on Tor; AppArmor on Apache; Use of grsecurity-hardened kernels on servers; Use of OSSEC monitoring software |
| Admin modifies Source interface Application code THREAT104 |
Source Interface |
accepted |
6 medium |
6 medium |
|
| Application server full of submissions THREAT108 |
Encrypted submission store |
partially mitigated |
6 medium |
6 medium |
SecureDrop submissions limited to 500 MB; Source interface only available as a Tor onion service; OSSEC alert sent when server almost full |
| App server processes submission in plaintext THREAT109 |
Source Interface |
partially mitigated |
6 medium |
6 medium |
Secure Temporary Wrapper to stream submissions encrypted on disk; Nighly reboot occurs to clear secrets stored in memory |
| Website fingerprinting of source interface THREAT137 |
Source Interface |
transferred |
6 medium |
6 medium |
|
| Source submits large / invalid messages THREAT166 |
Source Interface |
mitigated |
12 high |
4 medium |
Forms use WTForms validators; Source interface only available as a Tor onion service |
| File and resource vulnerability in Source interface THREAT25 |
Source Interface |
mitigated |
9 high |
4 medium |
No external URL redirection; Untrusted uploaded data is directly encrypted and not executed |
| Firewall not up to date THREAT47 |
Dedicated Hardware Firewall |
inform |
8 high |
4 medium |
Restrictive iptables rules on servers; Admins instructed to subscribe to RSS feed |
| Business logic vulnerability in Source interface THREAT24 |
Source Interface |
mitigated |
6 medium |
4 medium |
Simple source interface application logic |
| Authentication vulnerability in Source interface THREAT10 |
Source Interface |
mitigated |
4 medium |
4 medium |
Source codename is 7 word diceware passphrase; Source codenames stored hashed in the database; No source codename reset functionality; Sources instructed to delete journalist replies after they read them; Source account does not display their submitted documents |
| Access control vulnerability in Source interface THREAT11 |
Source Interface |
mitigated |
4 medium |
4 medium |
Source codename is 7 word diceware passphrase; Source interface: Has a single role; CSRF from Flask used; Apache autoindex module disabled |
| Data protection vulnerability in Source interface THREAT12 |
Source Interface |
mitigated |
4 medium |
4 medium |
Secure Temporary Wrapper to stream submissions encrypted on disk; Use of strong encryption key for encrypted documents; Logging off for source interface; Source interface: Cache-Control nostore; Sensitive data sent in POST requests |
| Communications vulnerability in Source interface THREAT16 |
Source Interface |
mitigated |
4 medium |
4 medium |
Source interface only available as a Tor onion service; Support for HTTPS on source interface |
| Session management vulnerability in Source interface THREAT19 |
Source Interface |
mitigated |
4 medium |
4 medium |
Use of Flask session management; Session timeout on both interfaces; All session data deleted upon logout except language so the logout messages can be localized; Sources instructed to restart browser or clear the session to delete session cookie |
| Malicious input vulnerability in Source interface THREAT20 |
Source Interface |
mitigated |
4 medium |
4 medium |
Tor security slider set to high; X-XSS-protection, CSP set to self; SQLAlchemy as an ORM; Use of Flask/Jinja for templating escaping |
| Failure to encrypt submissions as they are written to disk THREAT21 |
Source Interface |
mitigated |
4 medium |
4 medium |
Logging off for source interface |
| Error handling and logging vulnerability in Source interface THREAT22 |
Source Interface |
mitigated |
4 medium |
4 medium |
Debugging is disabled; Logging off for source interface |
| HTTP security configuration vulnerability in Source interface THREAT23 |
SecureDrop Application |
mitigated |
4 medium |
4 medium |
Only GET, POST, HEAD, (DELETE for JI) HTTP methods allowed; HTTP headers do not expose version information; Source interface: X-Content-Type-Options: nosniff; X-XSS-protection, CSP set to self |
| HTTP security configuration vulnerability in Journalist interface THREAT27 |
SecureDrop Application |
mitigated |
4 medium |
4 medium |
Only GET, POST, HEAD, (DELETE for JI) HTTP methods allowed; HTTP headers do not expose version information; Journalist interface: X-Content-Type-Options: nosniff; X-XSS-protection, CSP set to self |
| Firewall logs are not monitored THREAT149 |
Dedicated Hardware Firewall |
inform |
4 medium |
4 medium |
|
| Hardware Firewall Supply chain attack THREAT150 |
Dedicated Hardware Firewall |
accepted |
4 medium |
4 medium |
Source interface only available as a Tor onion service; Journalist interface only available as a Tor onion service; Admin interface traffic goes over Tor; apt performs GPG signature verification as long as it's not explicitly disabled; Restrictive iptables rules on servers |
| Submission interface is framed THREAT32 |
Source Interface |
mitigated |
6 medium |
3 low |
X-FRAME-OPTIONS DENY HTTP header |
| Web services vulnerability in Source interface THREAT30 |
Source Interface |
mitigated |
4 medium |
2 low |
Minimal information exposed on Source Interface API endpoints |
| Vulnerabilities/Compromise of Hardware Firewall THREAT48 |
Dedicated Hardware Firewall |
mitigated |
4 medium |
2 low |
apt performs GPG signature verification as long as it's not explicitly disabled; Restrictive iptables rules on servers; Admins instructed to subscribe to RSS feed; app, mon server cannot access admin interface of hardware firewall; Source interface only available as a Tor onion service; Journalist interface only available as a Tor onion service |
| Hardware Firewall Misconfiguration THREAT49 |
Dedicated Hardware Firewall |
mitigated |
4 medium |
2 low |
Restrictive iptables rules on servers |
| Impersonation/clone of SecureDrop Instance to phish sources/journalists THREAT173 |
Source Interface |
unmanaged |
Unknown |
Unknown |
|
Back to Summary