-
Notifications
You must be signed in to change notification settings - Fork 256
Add a security policy for the project #1438
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from 3 commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,41 @@ | ||
| name: Scan Application | ||
| description: Scans the Dangerzone application code for vulnerabilities | ||
| inputs: | ||
| path: | ||
| description: Path to scan | ||
| required: true | ||
| default: "." | ||
| severity-cutoff: | ||
| description: Severity cutoff for the scan | ||
| required: false | ||
| default: critical | ||
| upload-sarif: | ||
| description: Whether to upload the SARIF report | ||
| required: false | ||
| default: false | ||
| sarif-category: | ||
| description: Category for the SARIF report | ||
| required: false | ||
| runs: | ||
| using: composite | ||
| steps: | ||
| - name: Scan application | ||
| uses: anchore/scan-action@v7 | ||
| id: scan | ||
| with: | ||
| path: ${{ inputs.path }} | ||
| fail-build: true | ||
| only-fixed: false | ||
| severity-cutoff: ${{ inputs.severity-cutoff }} | ||
|
|
||
| - name: Upload application scan report | ||
| if: ${{ inputs.upload-sarif && !cancelled() }} | ||
| uses: github/codeql-action/upload-sarif@v4 | ||
| with: | ||
| sarif_file: ${{ steps.scan.outputs.sarif }} | ||
| category: ${{ inputs.sarif-category }} | ||
|
|
||
| - name: Inspect application scan report | ||
| if: always() | ||
| shell: bash | ||
| run: cat ${{ steps.scan.outputs.sarif }} |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,40 @@ | ||
| name: Scan Container | ||
| description: Scans a Dangerzone container image for vulnerabilities | ||
| inputs: | ||
| image: | ||
| description: Image to scan | ||
| required: true | ||
| severity-cutoff: | ||
| description: Severity cutoff for the scan | ||
| required: false | ||
| default: critical | ||
| upload-sarif: | ||
| description: Whether to upload the SARIF report | ||
| required: false | ||
| default: false | ||
| sarif-category: | ||
| description: Category for the SARIF report | ||
| required: false | ||
| runs: | ||
| using: composite | ||
| steps: | ||
| - name: Scan container image | ||
| uses: anchore/scan-action@v7 | ||
| id: scan | ||
| with: | ||
| image: ${{ inputs.image }} | ||
| fail-build: true | ||
| only-fixed: false | ||
| severity-cutoff: ${{ inputs.severity-cutoff }} | ||
|
|
||
| - name: Upload container scan report | ||
| if: ${{ inputs.upload-sarif && !cancelled() }} | ||
| uses: github/codeql-action/upload-sarif@v4 | ||
| with: | ||
| sarif_file: ${{ steps.scan.outputs.sarif }} | ||
| category: ${{ inputs.sarif-category }} | ||
|
|
||
| - name: Inspect container scan report | ||
| if: always() | ||
| shell: bash | ||
| run: cat ${{ steps.scan.outputs.sarif }} |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,48 @@ | ||
| # Security Policy | ||
|
|
||
| ## Reporting a vulnerability | ||
|
|
||
| The Dangerzone team takes security seriously. If you discover a security-related | ||
| issue, we appreciate your help in disclosing it to us in a responsible manner. | ||
|
almet marked this conversation as resolved.
Outdated
|
||
|
|
||
| **Preferred way of disclosing security issues:** | ||
| * **GitHub:** Please use the GitHub Security Advisory | ||
| ["Report a vulnerability"](https://github.com/freedomofpress/dangerzone/security/advisories/new) | ||
| tab, which creates a private issue, instead of a public one. | ||
| * **Email:** Please send your report to support@dangerzone.rocks. | ||
| * **Encrypted communication:** If the finding is security-critical, you may | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I would put Signal first, and name this "Signal". I believe putting the signal contacts here might be useful. Another way to handle it is to provide a group link with a requirement for admins to approve new members, so we can review the folks before going further.
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I'm very curious how the group link will work in practice, let's chat! I'm fine with putting Signal first, but I still think we need to support at least email, for several reasons:
Regarding the "Report a vulnerability" avenue, I put it there because it's the path of least resistance, for GitHub users who want to report low to moderate vulnerabilities. If you feel it may confuse things, I'm fine with removing it, since its functionality is covered by the other two means of communication.
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I believe having a clear path, without too many options will be simpler for us to handle in the long run. If we have different communication channels, we might want to explain why, and when to use them. To me, having email for general reach and signal for encrypted communication seems enough. |
||
| request a Signal username for further communication. | ||
|
|
||
| We ask that you do not disclose the vulnerability publicly until we have had the | ||
| opportunity to address it. | ||
|
|
||
| ## Security policy | ||
|
|
||
| Dangerzone has two main security goals: | ||
| * Malicious documents should not infect the user's device, or communicate with | ||
| other machines. | ||
| * All metadata should be destroyed after the conversion process. | ||
|
|
||
| Any vulnerability that undermines these two goals **is considered critical** and | ||
| we advise you to report it via Signal. | ||
|
|
||
| Dangerzone uses several third-party tools to sanitize documents, such as | ||
| [LibreOffice](https://www.libreoffice.org/) and [PyMuPDF](https://pymupdf.io/). | ||
| Because these tools have a large attack surface, Dangerzone operates under the | ||
| assumption that a 0-day vulnerability probably exists for them. For this reason, | ||
| Dangerzone's primary defense is to isolate these tools within unprivileged, | ||
| networkless containers using [gVisor](https://gvisor.dev/). Read more in | ||
| [our blog](https://dangerzone.rocks/news/2024-09-23-gvisor/). | ||
|
|
||
| Our second line of defense is to make sure our container image is not affected | ||
| by known vulnerabilities, i.e., CVEs. We have nightly security scans for | ||
| Critical CVEs, and biweekly security scans for High CVEs. We aim for a 4 week | ||
| update cadence of our container image, or earlier, if a security finding | ||
| necessitates it. | ||
|
|
||
| ## Security Advisories | ||
|
|
||
| When necessary, we have [issued CVEs](https://github.com/freedomofpress/dangerzone/security/advisories) | ||
| for Dangerzone and [security advisories](https://github.com/freedomofpress/dangerzone/tree/main/docs/advisories) | ||
| to our users. We are committed to transparency and will continue to issue | ||
| CVEs and security advisories whenever a finding warrants it. | ||
Uh oh!
There was an error while loading. Please reload this page.