freedomofpress / securedrop-workstation

Qubes-based SecureDrop Journalist Workstation environment for submission handling
GNU Affero General Public License v3.0
138 stars 42 forks source link

Release securedrop-workstation-dom0-config 1.0.0 #1103

Closed legoktm closed 2 months ago

legoktm commented 2 months ago

QA:

To test this release, you will need a dedicated computer compatible with Qubes 4.2. You'll also need a test SecureDrop server instance, either:

Do not use a production server instance to test release candidates! You'll need to copy the SVS's Submission Private Key to the SecureDrop Workstation config, and it will have access to submissions, so you should use test instances and test data only.

In order to configure SecureDrop Workstation, you'll need the Journalist interface address and authorization key, and the Submission Private Key from the server instance - so set the server instance up first.

Next, install Qubes 4.2 (preferably the latest stable patch version) on your Qubes computer. Then install SecureDrop Workstation, following the standard installation process with 2 deviations:

Once the installation is complete, copy the securedrop-workstation source tagged with the curent RC version to dom0 on your test system using make clone and run the configuration tests in dom0 with make test.

Then, add a column with your config and initial test results (installation, setup, dom0 tests) in the SecureDrop Workstation QA Matrix, and complete one or more acceptance test scenarios (check with the release manager if you're unsure as to which ones are needed), and complete any linked release-specific tests, copying the scenario test plans from the linked wiki pages, and adding the completed versions as comments on this issue.

(Then take a rest and get yourself a nice treat - you've earned it.)

QA test plan:

Note: there is no upgrade scenario because all users must reinstall for this release.

Fresh install (prodlike install)

Qubes ~4.2.1~ [edit: 4.2.2-rc1 or newer] expected, please note hardware

Testing:

RC1:

RC2:

Release:

Post-release

rocodes commented 2 months ago

testing

version: rc1 status: WIP

deeplow commented 2 months ago

testing

version: rc1 status: WIP

legoktm commented 2 months ago

Testing:

cfm commented 2 months ago

Smoke-testing

SDW Test Scenario: New User

Updater

Online Mode

Login

Sources

With known limitations of the current data/sync model:

Data race (contention): If you click the star icon while a sync is in progress, then: (1) the GUI shows the source as starred; (2) the sync completes; (3) the GUI shows the source as unstarred; (4) the star operation completes; (5) the GUI shows the source as starred.

Data race (interruption): If you click the star icon and then immediately quit the Client, then: (1) the GUI shows the source as starred; (2) the Client quits; (3) when the Client restarts, the GUI shows the source as unstarred; (4) the first sync completes; (5) the GUI shows the source as starred.

https://github.com/freedomofpress/securedrop-client/issues/874#issuecomment-2218297615

Replies

Submissions

Preview

No, probably an unsupported format: A .webm video file fails with the prompt "Are you sure you want to create another disposable VM?" and then Denied: qubes.OpenInVM.

This is freedomofpress/securedrop-client#2007 at https://github.com/freedomofpress/securedrop-client/blob/d94eca34a2f530c7286e5463bde64ef0fc73f878/workstation-config/mimeapps.list.sd-app#L191.

Batch submission actions

Closing the client

SDW Test Scenario: Export and Print

Prerequisites:

  • server is available and contains large source test dataset (256 sources, submission sizes ranging from 1-500MB)
  • client data directory is empty
diff --git a/securedrop/loaddata.py b/securedrop/loaddata.py
index 241e00f43..3b1b7a85f 100755
--- a/securedrop/loaddata.py
+++ b/securedrop/loaddata.py
@@ -208,6 +208,7 @@ def submit_file(source: Source, journalist_who_saw: Optional[Journalist], size:
     if not size:
         file_bytes = b"This is an example of a plain text file upload"
     else:
+        size = random.randint(0, size)
         file_bytes = os.urandom(size * 1024)

     fpath = Storage.get_default().save_file_submission(

Login

Sources

Modulo freedomofpress/securedrop-client#1476.

Replies

Submissions

Preview

Export

Yes, although the wizard steps stall for an interval proportional to the size of the file being exported, without much UI feedback.

I had one failure where send-to-usb returned EOF after reaching Syncing filesystems, but I've not been able to reproduce it in repeated testing with a ~500 MB file.

deeplow commented 2 months ago

securedrop-workstation-dom0-config 1.0.0-rc2

QA Test Plan

Testing:

Scenarios Testing

rocodes commented 2 months ago

@deeplow can you provide more details about the export failures please, eg STR / where the process failed/what error message or error logs you see? (Edit) Even if it's a misconfigured drive, it could be something real-world users run into so it's helpful information. Thank you!

deeplow commented 2 months ago

That was at the end of last week. I was trying to reproduce it now, but it works. Could have something to do with how I created the device. Will test again various times this week and see if I get it to fail as before. But I had originally provisioned from nautilus » right-click on drive » format.

rocodes commented 2 months ago

Thanks @deeplow - For creating a device, we ask people to follow https://workstation.securedrop.org/en/stable/admin/provisioning_usb.html , so as long as you're using that or equivalent workflow and creating a whole-encrypted device, or a device with one encrypted partition (other non encrypted partitions are fine), any STR / bugreports are useful

rocodes commented 2 months ago

Setup

hw: T480 / Qubes 4.2.2-rc1 version 1.0.0-rc2

Testing (WIP, will update as I go)

deeplow commented 2 months ago

When the export fails it shows the following screen:

screen

The scenarios expect this:

When the user encounters error state(s) during export:
   a user-facing message (rather than an EXPORT_ERROR_CODE style message) is shown

I am not sure if this is a successful outcome or not.

The way I simulated the failure was by remove the USB stick mid-copying.

rocodes commented 2 months ago

Looks like https://github.com/freedomofpress/securedrop-client/issues/1926, same question - I'm curious about the logs in sd-devices, specifically the export_status, when that happens.

It's definitely something to fix, but I'm not sure where it ranks in our priorities - if the user pulls out a drive mid-export they can/should expect that to fail in a weird way. (Ideally it would fail with a better message of course)

rocodes commented 2 months ago

@deeplow (and other testers) re the export scenarios:

HTH!

deeplow commented 2 months ago

HTH!

Does help. Thanks for the context, again!

rocodes commented 2 months ago

I still have to finish up some of the export/print test plan and report out in more detail (tomorrow), but with the addition of https://github.com/freedomofpress/securedrop-client/pull/2102 in sd-app, basic print testing so far is looking good on both supported HP and Brother printers. Basic export testing is also looking good and I will test https://github.com/freedomofpress/securedrop-client/pull/2100 tomorrow to mark for review since I think it will resolve some of the corner case issues with error reporting.

until tm :)

rocodes commented 2 months ago

Qubes: 4.2.2-rc2 dom0 config: rc2 client: 0.11.0 -rc1 + print changes (0.11.0-rc2 equiv)

Export
Print

Tested with HP LaserJetPro 4001dn and Brother HL-L2360DW

zenmonkeykstop commented 2 months ago

Fresh install (prodlike install)

Qubes 4.2.2-rc1, Novacustom NV41

Testing:

SDW Test Scenario: Export and Print

Prerequisites:

  • server is available and contains large source test dataset (256 sources, submission sizes ranging from 1-500MB)
  • client data directory is empty

Login

Sources

Replies

Submissions

Preview

Export

rocodes commented 2 months ago

Environment

Qubes 4.2.2-rc1 / T480 / staging servers

Candidate(s)

dom0 rc3 / client rc2

Installation

upgrade (rc{1,2} -> rc{2,3}) via updater

I was able, once, to encounter a printer error, when deliberately trying to print without a printer connected, but I couldn't replicate it.

rocodes commented 2 months ago

prod qa instructions:

legoktm commented 2 months ago

For apt-qa, I also copied /srv/salt/securedrop_salt/apt_freedom_press.sources.j2 to /srv/salt/securedrop_salt/apt-qa_freedom_press.sources.j2, and edited the path in /srv/salt/securedrop_salt/sd-default.config.yml. Otherwise when the securedrop-keyring package is installed, it overwrites our apt->apt-qa.

deeplow commented 2 months ago

Shall we update https://github.com/freedomofpress/securedrop-workstation/wiki/QA-Testing#preflight-testing with this information?

rocodes commented 2 months ago

@deeplow : Yes, and we should update the developer docs as well