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 |