Scenario: convert

Threat model for Dangerzone

28
Findings
20
Data Flows
7
Affected Components

Data Flow Diagram

Sequence Diagram

Show data flows
ID Name Source Sink Type
1 Request untrusted doc from remote source User Random doc source Request
2 Receive untrusted doc from remote source and store it locally Random doc source Host storage Response to Request untrusted doc from remote source
3 Start the Dangerzone App User DZ App Request
4 Invoke Docker/Podman to check if the container image is present and installed DZ App Container manager Request
5 Is the image present in the VM? Container manager Container runtime Request
6 Image is present Container runtime Container manager Response to Is the image present in the VM?
7 Reply to Dangerzone APP that the container image is installed Container manager DZ App Response to Image is present
8 Select documents for conversion User DZ App Request
9 Request a Linux container for conversion DZ App Container manager Request
10 Start a Linux container Container manager Container runtime Request
11 Run entrypoint script of Linux container Container runtime entrypoint.py Request
12 Start the Dangerzone converter in the gVisor sandbox entrypoint.py doc_to_pixels.py Request
13 Send the suspicious document to the stdin of the gVisor sandbox DZ App doc_to_pixels.py Request
14 Convert the suspicious doc to PDF (if not already) doc_to_pixels.py LibreOffice Request
15 Receive suspicious doc as PDF LibreOffice doc_to_pixels.py Request
16 Rasterize PDF into pixels and write them to the gVisor sandbox's stdout doc_to_pixels.py DZ App Request
17 Reconstruct a safe doc from pixels to PDF (and optionally OCR it) DZ App Host storage Request
18 Save safe PDF with a '-safe.pdf' prefix DZ App Host storage Request
19 Archive the suspicious PDF into the 'unsafe/' directory DZ App Host storage Request
20 Open the PDF using the program of the user's choice, or the default one DZ App PDF reader Request

Applicable threats

Threat ID Description Target Component Mitigations
DZ-1-UPD DZ App verifies resources.updates
DZ-2-CODE DZ App is reviewed
DZ-2-BUILD DZ App is reproducible is verifiable
CAPEC-23 File Content Injection DZ App is sandboxed
CAPEC-28 Fuzzing LibreOffice sanitizes input is fuzzed
CAPEC-40 Manipulating Writeable Terminal Devices LibreOffice sanitizes input
CAPEC-88 OS Command Injection Container manager is sandboxed sanitizes input
CAPEC-130 Excessive Allocation LibreOffice is resource constrained sanitizes input
CAPEC-131 Resource Leak Exposure DZ App is resource constrained
CAPEC-131 Resource Leak Exposure doc_to_pixels.py is resource constrained
CAPEC-131 Resource Leak Exposure LibreOffice is resource constrained
CAPEC-153 Input Data Manipulation DZ App is sandboxed
CAPEC-176 Configuration/Environment Manipulation doc_to_pixels.py assume not compromised verifies resources.system
CAPEC-176 Configuration/Environment Manipulation LibreOffice assume not compromised verifies resources.system
CAPEC-177 Create files with the same name as files protected with a higher classification doc_to_pixels.py assume not compromised verifies resources.system
CAPEC-177 Create files with the same name as files protected with a higher classification LibreOffice assume not compromised verifies resources.system
CAPEC-186 Malicious Software Update DZ App verifies resources.updates
CAPEC-263 Force Use of Corrupted Files doc_to_pixels.py assume not compromised verifies resources.system
CAPEC-263 Force Use of Corrupted Files LibreOffice assume not compromised verifies resources.system
CAPEC-276 Inter-component Protocol Manipulation Container manager is sandboxed sanitizes input
CAPEC-444 Development Alteration DZ App is reviewed
CAPEC-480 Escaping Virtualization doc_to_pixels.py
CAPEC-480 Escaping Virtualization LibreOffice
CAPEC-582 Route Disabling Random doc source works offline
CAPEC-639 Probe System Files Random doc source is sandboxed
CAPEC-639 Probe System Files DZ App is sandboxed
CAPEC-639 Probe System Files Suspicious doc is sandboxed
CAPEC-639 Probe System Files Pixels (rasterized document) is sandboxed

Back to Summary